jjsos_JJdetection/check_and_clean_images_使用教程.md

7.6 KiB
Raw Permalink Blame History

📋 图片标注检查工具使用教程

工具简介

check_and_clean_images.py 是一个用于检查和清理数据集的工具,可以:

  • 检查图片文件是否有对应的标注文件
  • 找出没有标注的图片
  • 删除没有标注的图片文件
  • 确保数据集完整性

🚀 快速开始

基本用法

1. 预览模式(推荐先运行)

检查哪些图片没有标注,但不删除文件:

python check_and_clean_images.py

输出示例:

============================================================
检查没有标注的图片
============================================================
图片目录: datasets/handleImage/train
标注目录: datasets/handleImage/label

找到 1330 个图片文件
找到 1223 个标注文件
------------------------------------------------------------
发现 107 个没有标注的图片:
------------------------------------------------------------
  订单1806953_51_7111322.jpg
  订单1805323_51_7096066.jpg
  ...
------------------------------------------------------------

[预览模式] 未实际删除文件
要删除这些文件,请运行: python check_and_clean_images.py --delete

2. 删除模式(需要确认)

删除没有标注的图片,但会要求确认:

python check_and_clean_images.py --delete

交互提示:

⚠ 警告: 将删除没有标注的图片文件!确认继续?(yes/no): 

输入 yes 确认删除,输入 no 取消操作。

3. 直接删除模式(不确认)

直接删除,不需要确认(适合脚本自动化):

python check_and_clean_images.py --delete --force

📖 详细说明

命令参数

参数 简写 说明 示例
--delete -d 启用删除模式 --delete
--force -f 跳过确认,直接删除 --force
--help -h 显示帮助信息 --help

默认路径

工具默认检查以下路径:

  • 图片目录: datasets/handleImage/train
  • 标注目录: datasets/handleImage/label

支持的图片格式

工具会自动识别以下图片格式:

  • .jpg / .JPG
  • .jpeg / .JPEG
  • .png / .PNG
  • .bmp
  • .tiff / .tif

标注文件格式

工具查找 .txt 格式的标注文件。


📝 使用场景

场景 1: 检查数据集完整性

在训练前检查数据集是否完整:

# 1. 先预览检查
python check_and_clean_images.py

# 2. 如果有问题,查看具体文件
# 3. 确认后删除
python check_and_clean_images.py --delete

场景 2: 清理导入的数据

从CVAT或其他工具导入数据后清理不完整的文件

# 直接删除没有标注的图片
python check_and_clean_images.py --delete --force

场景 3: 批量处理多个数据集

修改脚本中的路径,处理不同数据集:

# 修改 check_and_clean_images.py 中的路径
train_dir = "datasets/你的数据集/train"
label_dir = "datasets/你的数据集/labels"

⚠️ 注意事项

1. 备份数据

重要: 删除操作不可恢复!建议在删除前备份数据:

# 备份整个数据集
cp -r datasets/handleImage datasets/handleImage_backup

2. 文件名匹配规则

工具通过**文件名(不含扩展名)**匹配图片和标注:

  • 匹配:image001.jpgimage001.txt
  • 匹配:订单1804264_51_7086683.jpg订单1804264_51_7086683.txt
  • 不匹配:image001.jpgimage_001.txt(下划线不同)
  • 不匹配:image001.jpgimage002.txt(数字不同)

3. 空标注文件

如果标注文件存在但为空,工具不会删除对应的图片。如果需要处理空标注文件,需要额外检查。

4. 目录结构要求

确保目录结构正确:

datasets/handleImage/
├── train/          # 图片目录
│   ├── image1.jpg
│   ├── image2.jpg
│   └── ...
└── label/          # 标注目录
    ├── image1.txt
    ├── image2.txt
    └── ...

🔍 输出说明

预览模式输出

找到 1330 个图片文件          # 图片总数
找到 1223 个标注文件          # 标注总数
发现 107 个没有标注的图片    # 需要删除的数量

删除模式输出

删除完成:
  成功删除: 107 个文件        # 成功删除的数量
  删除失败: 0 个文件          # 删除失败的数量(如果有)

完成状态输出

✓ 所有图片都有对应的标注文件!

💡 使用技巧

技巧 1: 先预览再删除

推荐流程:

# 步骤1: 预览检查
python check_and_clean_images.py

# 步骤2: 查看结果,确认要删除的文件
# 步骤3: 确认后删除
python check_and_clean_images.py --delete

技巧 2: 批量处理多个数据集

创建一个批处理脚本:

#!/bin/bash
# process_datasets.sh

datasets=("handleImage" "仪表盘" "检测仪")

for dataset in "${datasets[@]}"; do
    echo "处理数据集: $dataset"
    # 修改脚本中的路径或使用参数
    python check_and_clean_images.py
done

技巧 3: 检查反向问题

如果需要检查有标注但没有图片的情况,可以修改脚本或创建新工具。


🐛 常见问题

Q1: 提示"目录不存在"

错误信息:

错误: 图片目录不存在: datasets/handleImage/train

解决方法:

  1. 检查路径是否正确
  2. 确认目录是否存在
  3. 修改脚本中的默认路径

Q2: 删除后想恢复文件

解决方法:

  • 如果之前有备份,从备份恢复
  • 如果没有备份,文件无法恢复(删除操作不可逆)

Q3: 文件名不匹配

问题: 图片和标注文件名不完全一致

解决方法:

  • 检查文件名格式
  • 确保文件名(不含扩展名)完全一致
  • 可以使用重命名工具统一文件名格式

Q4: 在非交互式环境运行

问题: 使用 --delete 时提示需要输入

解决方法: 使用 --force 参数跳过确认:

python check_and_clean_images.py --delete --force

📊 实际案例

案例 1: 清理 handleImage 数据集

# 1. 检查数据集
$ python check_and_clean_images.py

找到 1330 个图片文件
找到 1223 个标注文件
发现 107 个没有标注的图片

# 2. 确认后删除
$ python check_and_clean_images.py --delete
⚠ 警告: 将删除没有标注的图片文件!确认继续?(yes/no): yes

删除完成:
  成功删除: 107 个文件

# 3. 再次验证
$ python check_and_clean_images.py

找到 1223 个图片文件
找到 1223 个标注文件
✓ 所有图片都有对应的标注文件!

案例 2: 处理其他数据集

修改脚本中的路径:

# 在 check_and_clean_images.py 的 main() 函数中修改
train_dir = "datasets/仪表盘/train/images"
label_dir = "datasets/仪表盘/train/labels"

然后运行:

python check_and_clean_images.py

🔗 相关工具

  • verify_seg_labels.py - 验证分割标注格式
  • check_label_format.py - 检查标注格式类型
  • convert_bbox_to_seg.py - 转换标注格式

📞 需要帮助?

如果遇到问题:

  1. 查看本文档的"常见问题"部分
  2. 运行 python check_and_clean_images.py --help 查看帮助
  3. 检查数据集目录结构是否正确

📝 更新日志

  • v1.0 (2024): 初始版本
    • 支持检查图片和标注文件
    • 支持预览和删除模式
    • 支持强制删除模式

提示: 使用前建议先备份数据,删除操作不可恢复!