在处理一些大型图片数据集时,我们会发现有些数据集的图片数量和标签数量不相同,这种时候一般是有部分的图片并没有匹配标签,此时我们可以将这些多余的图片删除,方便我们进行后期的训练。以下代码可删除:以txt文件为标签文件。
import os
def remove_unmatched_images(image_dir, label_dir):
image_files = os.listdir(image_dir)
label_files = os.listdir(label_dir)
labeled_images = set([label_file.split('.')[0] for label_file in label_files])
for label_file in label_files:
image_name, _ = os.path.splitext(label_file)
labeled_images.add(image_name)
for image_file in image_files:
image_name, extension = os.path.splitext(image_file)
if extension.lower() == '.jpg' and image_name not in labeled_images:
os.remove(os.path.join(image_dir, image_file))
print(f"已删除没有匹配到标签的多余图片:{image_file}")
if __name__ == '__main__':
image_dir = r"xxx" #图片地址
label_dir = r"xxx" #标签地址
remove_unmatched_images(image_dir, label_dir)