MHP数据集语义分割任务如何匹配训练图像与对应首个分割掩码
MHP数据集语义分割任务 图像-首掩码列表构建实现
核心思路:放弃依赖文件资源管理器/系统接口返回的默认遍历顺序,直接通过数据集固定命名规则做精确匹配,从根源避免顺序错乱、匹配错误问题。
实现逻辑
- MHP数据集训练原图为
.jpg格式,对应多实例掩码命名规则为{图像ID}_02_{实例序号}.png,需要的每张图第一个掩码,固定是实例序号为01的文件,无需遍历所有掩码后再筛选排序。 - 提取所有有效原图的ID后,直接拼接对应首掩码文件名,最后可按需按图像ID数值做升序排列,和示例序列对齐。
可直接运行的代码
提前把代码里的路径替换为本地实际存储路径即可:
import os # 本地路径配置 TRAIN_IMG_DIR = "path/to/your/train/image/folder" # 训练原图存放目录 TRAIN_MASK_DIR = "path/to/your/train/mask/folder" # 掩码所在的train文件夹目录 img_list = [] mask_list = [] # 遍历目录提取所有jpg格式原图 for file_name in os.listdir(TRAIN_IMG_DIR): if not file_name.endswith(".jpg"): continue # 提取图像数字ID img_id = os.path.splitext(file_name)[0] # 拼接对应首掩码文件名 expected_mask_name = f"{img_id}_02_01.png" # 校验掩码存在性,避免因数据集缺文件导致后续错误 if os.path.exists(os.path.join(TRAIN_MASK_DIR, expected_mask_name)): img_list.append(file_name) mask_list.append(expected_mask_name) # 按图像ID数值升序排序,和示例序列对齐,不需要可删除这段 img_list.sort(key=lambda x: int(os.path.splitext(x)[0])) mask_list.sort(key=lambda x: int(x.split("_")[0])) # 可打印前若干组结果校验匹配关系 for img, mask in zip(img_list[:10], mask_list[:10]): print(f"图像: {img} -> 首掩码: {mask}")
该方案匹配准确率100%,不会受不同操作系统文件默认排序规则影响。如果不需要固定ID升序的排列顺序,删除排序代码段也完全不影响图像和掩码的对应关系。
内容的提问来源于stack exchange,提问作者Ramez Essam
相关产品推荐
相关产品推荐

