YOLOv7中--save-txt参数输出路径修改方法咨询
YOLOv7 修改检测结果TXT文件保存路径问题
问题描述
我使用YOLOv7预训练模型进行目标检测,运行命令为:python detect.py --source human.jpg --save-txt。--save-txt参数会生成包含坐标信息的.txt文件,默认保存路径为runs/detect/exp/labels,但我希望将其保存到runs/data/train路径下。
找到相关代码(第108行):
txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # img.txt
我尝试修改为:
txt_path = 'runs/data/train' # img.txt
但无法正确设置文件名,求正确修改txt_path变量的方法。
解决方案
你需要保留原有的文件名生成逻辑(比如图片的文件名主体、视频帧的编号后缀),同时替换保存路径,以下是两种可行方法:
方法一:直接硬改路径(适合固定需求)
直接将目标路径与原文件名逻辑拼接,确保生成的路径包含完整的文件名:
# 方式1:使用pathlib拼接(跨平台兼容,推荐) from pathlib import Path # 代码顶部未导入的话需要添加这行 target_dir = 'runs/data/train' txt_path = str(Path(target_dir) / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # 方式2:字符串拼接(简单直接) txt_path = f'runs/data/train/{p.stem}' + ('' if dataset.mode == 'image' else f'_{frame}')
补充:确保目标目录存在
如果runs/data/train目录还未创建,YOLOv7不会自动生成自定义路径的目录,可手动创建,或者在代码里添加目录创建逻辑(放在txt_path定义前即可):
Path(target_dir).mkdir(parents=True, exist_ok=True)
方法二:添加命令行参数(灵活适配不同需求)
如果需要经常切换保存路径,可在detect.py的参数解析区域添加自定义参数:
parser.add_argument('--txt-save-path', type=str, default='runs/detect/exp/labels', help='Path to save txt labels')
然后修改txt_path的定义:
txt_path = str(Path(opt.txt_save_path) / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}')
之后运行命令时,可通过--txt-save-path runs/data/train指定路径,无需每次修改代码。
内容的提问来源于stack exchange,提问作者Yusuf
相关产品推荐
相关产品推荐

