前言
使用了EISeg进行分割的相关标注,并以COCO实现保留下来,会保留三种格式的图像。而一般训练所用的是那种纯黑的mask图,所以要将其单独拿出来,EISeg的官方代码有给出相应的提取、划分代码等。本文只是记录下工作时遇到的略微改动。
二、使用步骤
保存的文件格式如下:

1.将纯黑的mask图单独复制到一个命名为mask的文件夹
代码如下(示例):
from pathlib import Path
import shutil
def del_mask(src):
exclude = ["annotations.json", "autosave_label.txt"]
img_dirs=[i.parent for i in Path(src).glob("*") if i.name=="label"]
for dir in img_dirs:
img_name =[i.stem for i in dir.glob("*.[bpj][pnm][pg]")]+exclude
for mask_file in (dir/"label").glob("*.*"):
flag=True
for i in img_name:
# print(i,"*"*10,f'{mask_file.name}')
if i in f'{mask_file.name}':
flag=False
break
if flag==True:
mask_file.unlink()
print(mask_file)
def move_mask(src):
dst=Path(src)/"mask"
dst.mkdir(exist_ok=True,parents=True)
img_list = Path(src).glob("*.[jpb][pnm][pg]")
exclude=["label","mask","show"]
mask_list=[i.parent/"label"/i.with_suffix(".png").name for i in img_list if i.parent.name not in exclude]
for img in mask_list:
print(img)
if not img.exists():
print(f'{img} not exit in label')
continue
shutil.copy(f'{img}',dst)
path=r''
del_mask(f'{path}')
move_mask(f'{path}')
2.根据mask,随机分配原始图片为训练集和验证集(在下面代码中,是将mask文件夹和原始图片放在同一目录下)
代码如下:
def split_train():
src = r''
rat = r''
img_dirs = [i.parent for i in Path(src).glob("**") if i.name == "mask"] # 找到子目录“mask”,并将其父目录存储在img_dirs列表中
for img_dir in img_dirs:
img_list = list(img_dir.glob("*.[jpb][npm][gp]")) # 获取该目录下所有图像的路径
random.shuffle(img_list)
train_n = int(len(img_list) * rat)
for index, img in tqdm(enumerate(img_list), total=len(img_list)):
if index < train_n:
save_path = Path(img_dir) / "train"
else:
save_path = Path(img_dir) / "val"
save_path.mkdir(exist_ok=True, parents=True)
shutil.move(f'{img}', f'{save_path}')
文章介绍了如何使用Python脚本从EISeg的标注中提取纯黑mask图,创建mask文件夹并将它们与原始图片分开。接着,按照一定比例随机分配图片到训练集和验证集。代码涉及文件操作、数据划分以及图像处理的相关步骤。
—— 划分mask和训练集、验证集&spm=1001.2101.3001.5002&articleId=131814286&d=1&t=3&u=0ffd5e591184446db4ab33ac4618109f)
8514

被折叠的 条评论
为什么被折叠?



