前言
在做深度学习图像识别相关的项目,经常会使用到标注工具对图像进行标注,然后会在对应文件夹下生成文件名相同的标签文件,比如000023.jpg,标注后会生成000023.xml,或都000023.txt文件,但有时候会漏标或者样本不对时暂时不标注的,那在要训练时一个个文件去对比两个目录下的文件名,当文件有上万的情况下,人工对比是不现实的。
代码
下面的python是做两个目录交差对比,分别输出各两个不同的结果,如果想删除没有对应图像,把注释打开就可以了。用是python版本是2.7.
# -*- coding: utf-8 -*-
import os
root_path = r'/home/linux/caffe/caffe_ssd/data/VOCdevkit/VOC2007/'
def contrastDir(file_dir):
jpg_list = []
xml_list = []
for root, dirs, files in os.walk(file_dir+'JPEGImages'):
for file in files:
if os.path.splitext(file)[1] == '.jpg':
jpg_list.append(os.path.splitext(file)[0])
for root, dirs, files in os.walk(file_dir+'Annotations'):
for file in files:
if os.path.splitext(file)[1] == '.xml':
xml_list.append(os.path.splitext(file)[0])
#对比xml与jpg
diff = set(xml_list).difference(set(jpg_list))
print(len(diff))
for name in diff:
print("No corresponding image file", name + ".xml")
# 对比jpg与xml
diff2 = set(jpg_list).difference(set(xml_list))
print(len(diff2))
for name in diff2:
print("No corresponding XML file", name + ".jpg")
#删除没有的对应xml的图像
# os.remove(file_dir+'JPEGImages/'+ name+'.jpg')
return jpg_list,xml_list
if __name__ == '__main__':
contrastDir(root_path)