Daterloader读取Test数据集进行输出语义分割结果顺序不匹配
最近训练几个语义分割模型进行结果对比,Test数据集0-18000.png格式命名的,可是最终输出的结果感觉不对劲。shuffle已经设置为False了,卡了我一阵
原因
读取文件名称的时候使用
import os
path = r'd:/test'
dirs = os.listdir(path)
上述代码输出的时候会自动排序,结果如下所示:
1,10,100,1000,10000,10001,10002,10003,10004,10005,10005,10007,10008,10009,1001,10010,10011…
会以这样的方式输出。
解决办法
找到dataset.py函数中自定义的Dataloader修改read_file函数
主要在排序上加一行正则表达式
file_list = os.listdir(path)
file_list.sor(key = lambda x:int(x[:-4])
含义:按照.png之前的数字进行生序排序,最终输出满足顺序序列。