为YOLO v5构建均衡数据集:多标注图像的类别筛选问询
批量提取YOLOv5标注文件中指定类别的行
核心实现(Python脚本)
直接用Python写个批量处理脚本,遍历所有标注文件,只保留你需要的类别行:
import os # 配置参数 TARGET_CLASSES = [0, 27] # 你要保留的类别ID ANNOT_DIR = "./labels" # 标注文件所在文件夹 OUTPUT_DIR = "./filtered_labels" # 处理后标注文件保存路径 # 创建输出文件夹 os.makedirs(OUTPUT_DIR, exist_ok=True) # 遍历所有标注文件 for filename in os.listdir(ANNOT_DIR): if not filename.endswith(".txt"): continue annot_path = os.path.join(ANNOT_DIR, filename) output_path = os.path.join(OUTPUT_DIR, filename) # 读取并筛选行 filtered_lines = [] with open(annot_path, "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue # 提取类别ID cls_id = int(line.split()[0]) if cls_id in TARGET_CLASSES: filtered_lines.append(line + "\n") # 保存筛选后的内容 with open(output_path, "w", encoding="utf-8") as f: f.writelines(filtered_lines) print("批量处理完成!")
使用说明
- 修改
TARGET_CLASSES为你需要保留的类别ID列表 - 调整
ANNOT_DIR为你的标注文件实际路径,OUTPUT_DIR为处理后文件的保存路径(建议单独存储,避免覆盖原数据) - 运行脚本即可完成批量筛选
额外提示
- 如果需要统计各类别数量来实现“等量选取”,可以在遍历文件时添加计数逻辑,统计每个类别对应的标注行所属图片,后续根据计数筛选出等量的图片及对应标注
- 处理前建议备份原标注文件,避免操作失误丢失数据
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

