【python】由os.listdir导致的惨案

最近在在自己的数据集上跑一些目标检测的网络,所以需要把数据集处理成符合网络输入的格式。其中一个网络是要将图片的真值标签按照图片的顺序写入json文件,我的数据集图片名称为0.jpg、1.jpg、2.jpg……,标签文件为0.txt、1.txt、2.txt……,然后用os.listdir读取标签文件夹下的所有文件,对应的图片序号我当时直接for循环里每次加1得到(这就导致标签和图片不对应了)。最终生成的json文件中标签和图片的对应变成了:

标签图片
0.txt0.txt
1.txt1.txt
10.txt2.txt
100.txt3.txt
1000.txt4.txt

当我用这样的标签训练完网络后在测试集上测试时,检测出的目标非常混乱,完全没有目标的地方也判断为了目标,然后倒回来查看数据集的时候才发现了问题所在。在原本os.listdir后增加了排序的一行代码,这样标签和图片就可以对应上了。

    ann_list = os.listdir(ann_root)
    ann_list.sort(key=lambda x: int(x[:-4]))  ### 新加的,否则写入json的文件顺序为0、1、10、100、1000.。。

血的教训啊,以后用os.listdir的时候一定要小心!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值