You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLO V5自定义目标检测:如何导出边界框CSV/TXT结果文件

YOLOv5导出带边界框、置信度的检测结果为TXT/CSV方法

基础TXT导出(小改即可实现)

  • 官方detect.py自带--save-txt运行参数,默认执行后会在runs/detect/对应输出文件夹/labels路径下生成每张图对应的TXT结果,不过默认输出格式为类别id 归一化中心x 归一化中心y 归一化框宽 归一化框高,不带置信度,坐标为相对原图的0-1归一化值。
  • 要让默认TXT携带置信度,找到detect.py中遍历检测框写入文件的代码段(位置随版本略有浮动,核心逻辑为遍历det变量逐行写文件),修改line变量的赋值逻辑,把置信度字段加进去即可:
# 原代码
# line = (cls, *xywh)
# 修改为
line = (cls, conf, *xywh)

修改后运行python detect.py --weights 你的训练权重路径.pt --source 待检测数据路径 --save-txt,导出的TXT每行格式就变为类别id 置信度 归一化中心x 归一化中心y 归一化框宽 归一化框高。

自定义导出统一CSV文件(含绝对像素坐标)

如果需要把所有图片的检测结果汇总到一个CSV文件,直接按以下步骤修改detect.py:

  1. 在文件开头的导入模块区域,加入csv模块导入:
    import csv
    
  2. 在文件的参数定义段(parse_opt()函数内),新增CSV导出的开关参数:
    parser.add_argument('--save-csv', action='store_true', help='export all detection results to csv file')
    
  3. 找到遍历待检测图片的推理循环起始位置(即for path, im, im0s, vid_cap, s in dataset:这行之前),加入CSV文件初始化逻辑,提前写好表头:
    if opt.save_csv:
        csv_f = open('detection_result.csv', 'w', newline='', encoding='utf-8')
        csv_writer = csv.writer(csv_f)
        # 表头可根据自己需求调整字段
        csv_writer.writerow(['image_name', 'class_id', 'confidence', 'x1', 'y1', 'x2', 'y2'])
    
    表头里x1/y1为边界框左上角像素坐标,x2/y2为右下角像素坐标,都是原图上的绝对位置,不需要额外换算。
  4. 还是在之前提到的遍历检测框的代码段(for *xyxy, conf, cls in reversed(det):内部),加入CSV写入逻辑:
    if opt.save_csv:
        # 提取坐标、类别、置信度数值,保留2-4位小数减少冗余
        x1, y1, x2, y2 = [i.item() for i in xyxy]
        cls_id = int(cls.item())
        conf_score = round(conf.item(), 4)
        img_name = Path(path).name
        csv_writer.writerow([img_name, cls_id, conf_score, round(x1,2), round(y1,2), round(x2,2), round(y2,2)])
    
  5. 在整个推理循环结束的位置(即遍历完所有待检测数据之后),加入CSV文件关闭逻辑,避免内容缓存丢失:
    if opt.save_csv:
        csv_f.close()
    
  • 运行时加上--save-csv参数即可,参考命令:

python detect.py --weights best.pt --img 640 --conf 0.25 --source ./test_images --save-csv
运行完成后会在detect.py同级目录生成detection_result.csv,包含所有检测结果。

补充说明

  • 如果需要在CSV里存归一化坐标,参考原TXT的坐标转换逻辑,把xyxy转成xywh格式后除以原图宽高张量gn再写入即可。
  • 如果不需要逐图生成单独的TXT标签文件,运行时不加--save-txt参数即可,不会生成冗余文件。
  • 所有字段的保留小数位、表头命名都可以根据自己的业务需求调整代码里的对应部分。

内容的提问来源于stack exchange,提问作者Dilow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:30:41