7.6 KiB
7.6 KiB
📋 图片标注检查工具使用教程
工具简介
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.jpg↔image001.txt - ✅ 匹配:
订单1804264_51_7086683.jpg↔订单1804264_51_7086683.txt - ❌ 不匹配:
image001.jpg↔image_001.txt(下划线不同) - ❌ 不匹配:
image001.jpg↔image002.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
解决方法:
- 检查路径是否正确
- 确认目录是否存在
- 修改脚本中的默认路径
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- 转换标注格式
📞 需要帮助?
如果遇到问题:
- 查看本文档的"常见问题"部分
- 运行
python check_and_clean_images.py --help查看帮助 - 检查数据集目录结构是否正确
📝 更新日志
- v1.0 (2024): 初始版本
- 支持检查图片和标注文件
- 支持预览和删除模式
- 支持强制删除模式
提示: 使用前建议先备份数据,删除操作不可恢复!