自学内容网 自学内容网

240720_图像语义分割中数据集原图与标签对比查漏

240720_图像语义分割中数据集原图与标签对比查漏

核对原图和标签是否一一对应的工作是必要的,不然在训练过程中可能会发生已经训练了好几个epoch了,突然给你报xx.png找不到,然后你去删除掉了对应的jpg,但是在重新运行几个epoch之后,又报缺失另一个,这样的工作是繁琐且无趣的,我们在训练前就确保对应可以减少很多工作量。

基本思想是,把所有的jpg文件名放在一个列表中,所有的png标签文件名放在一个列表中,然后把两个列表转换为集合,使用集合的difference方法求差集,然后逐项输出,以下是具体实现代码:

# diff_compare.py
import os

# 定义两个路径,分别指向图像目录和标注目录
path1 = r'./Datasets/RoadCrack0720/ltimages' # 请修改为你自己的路径
path2 = r'./Datasets/RoadCrack0720/Segmentation' # 请修改为你自己的路径


def file_name(image_dir, png_dir):
    """
    比较图像目录和标注目录中的文件名,找出不对应的文件。

    参数:
    image_dir (str): 图像目录的路径。
    png_dir (str): 标注目录的路径。

    返回:
    无返回值,但会打印出不对应的文件名。
    """
    # 列出图像目录中所有jpg文件的文件名(不包括后缀)
    jpg_list = []
    for root, dirs, files in os.walk(image_dir):
        for file in files:
            if file.endswith('.jpg'):
                jpg_list.append(os.path.splitext(file)[0])

    # 列出标注目录中所有png文件的文件名(不包括后缀)
    png_list = []
    for root, dirs, files in os.walk(png_dir):
        for file in files:
            if file.endswith('.png'):
                png_list.append(os.path.splitext(file)[0])

    # 打印jpg文件数量
    print(len(jpg_list))

    # 找出在png列表中但不在jpg列表中的文件名
    diff = set(png_list).difference(set(jpg_list))
    for name in diff:
        print("no jpg", name + ".png")

    # 打印差异文件数量
    print(len(diff))

    # 找出在jpg列表中但不在png列表中的文件名
    diff2 = set(jpg_list).difference(set(png_list))
    for name in diff2:
        print("no png", name + ".jpg")


if __name__ == '__main__':
    file_name(path1, path2)



原文地址:https://blog.csdn.net/weixin_66378701/article/details/140566981

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!