news 2026/4/18 0:23:22

YOLOv9推理结果保存在哪?runs/detect路径查看指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLOv9推理结果保存在哪?runs/detect路径查看指南

YOLOv9推理结果保存在哪?runs/detect路径查看指南

你刚跑完YOLOv9的推理命令,终端显示“Results saved to runs/detect/yolov9_s_640_detect”,可打开文件管理器却找不到这个文件夹?或者在/root/yolov9里翻来覆去只看到代码和权重,就是不见图片结果?别急——这不是环境出错,也不是命令失效,而是YOLOv9默认把输出结果存放在一个相对路径下,且依赖当前工作目录。本文不讲原理、不堆参数,就用最直白的方式告诉你:结果到底在哪、怎么快速定位、为什么有时看不见、以及如何自定义保存位置。

我们用的是YOLOv9官方版训练与推理镜像,它不是半成品,而是一套开箱即用的完整环境。你不需要从零配CUDA、装PyTorch、调依赖冲突,所有东西都已预装就绪,只要激活环境、进对目录、敲对命令,结果就会稳稳落在你该找的地方。

1. 先搞清一个关键前提:结果路径是“相对”的

YOLOv9(包括detect_dual.py这类推理脚本)生成的runs/detect/xxx目录,并不是固定写死在/root/yolov9/runs/下面的绝对路径。它的实际位置取决于你执行python命令时所在的当前工作目录(current working directory)

换句话说:
如果你在/root/yolov9目录下运行python detect_dual.py ...,结果会出现在/root/yolov9/runs/detect/yolov9_s_640_detect
❌ 如果你不小心在/root/home下运行了命令,结果就会出现在/root/runs/detect/.../home/runs/detect/...——而这些路径通常既没权限、也不符合预期,甚至可能根本看不到。

所以第一步,永远先确认你人在哪:

pwd

你应该看到输出是:

/root/yolov9

如果不是,请立刻切过去:

cd /root/yolov9

这是整个流程的“起点锚点”,后面所有操作都以此为基准。

2. 实际验证:三步定位你的检测结果

我们用你已有的命令来走一遍真实路径链,不跳步、不假设、不靠猜。

2.1 执行一次标准推理(确保环境就绪)

先确保环境已激活:

conda activate yolov9

再确认当前目录正确:

cd /root/yolov9

然后运行官方示例命令(注意:这里我们保留原命令中的--name yolov9_s_640_detect):

python detect_dual.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './yolov9-s.pt' --name yolov9_s_640_detect

终端会滚动输出日志,最后出现类似这行:

Results saved to runs/detect/yolov9_s_640_detect

2.2 立刻进入结果目录,查看真实文件结构

现在,直接用ls命令一层层打开,亲眼看到它:

ls runs/detect/

你应该看到一个名为yolov9_s_640_detect的文件夹。
再进去看里面有什么:

ls runs/detect/yolov9_s_640_detect/

你会看到:

  • horses.jpg(带检测框的输出图)
  • labels/文件夹(含horses.txt,记录每个框的类别、坐标、置信度)
  • 可能还有results.txt(汇总统计)或speed.txt(耗时信息)

小技巧:如果想直接在浏览器中预览这张图,可以启动一个轻量HTTP服务:

python3 -m http.server 8000 --directory runs/detect/yolov9_s_640_detect

然后在浏览器访问http://<你的服务器IP>:8000/horses.jpg,就能实时查看检测效果。

2.3 为什么有时候“找不到runs”文件夹?

常见三种情况,对应三种解法:

现象原因解决方法
ls: cannot access 'runs/detect/': No such file or directory你没在/root/yolov9下运行命令,导致runs/被创建在错误位置运行find /root -name "yolov9_s_640_detect" 2>/dev/null全局搜索,再用pwd确认当前路径,下次务必先cd /root/yolov9
runs/文件夹存在但为空推理中途报错退出(如GPU显存不足、图片路径错误),脚本未完成写入查看终端最后一段报错信息;检查--source路径是否存在且可读;尝试加--device cpu临时排除GPU问题
能看到runs/detect/xxx,但图片是黑的或全是框没内容OpenCV读图失败或图像格式异常(如WebP、带Alpha通道的PNG)把图片转成标准JPEG再试:convert ./data/images/horses.png ./data/images/horses.jpg(需先apt install imagemagick

3. 想换保存位置?两个简单方法任选

YOLOv9默认把结果塞进runs/detect/,但你完全有权把它挪到更顺手的地方——比如你的数据集同级目录、NAS挂载点,或者统一归档到/workspace/output

3.1 方法一:用--project参数指定根目录(推荐)

--project是detect_dual.py支持的官方参数,它会把整个detect/子目录“挂载”到你指定的位置。

例如,你想把所有检测结果存到/workspace/yolo_outputs下:

python detect_dual.py \ --source './data/images/horses.jpg' \ --img 640 \ --device 0 \ --weights './yolov9-s.pt' \ --name yolov9_s_640_detect \ --project '/workspace/yolo_outputs'

运行后,结果将出现在:

/workspace/yolo_outputs/detect/yolov9_s_640_detect/horses.jpg

优点:无需改代码、不污染源码、一次指定永久生效;
支持绝对路径和相对路径(如--project '../outputs');
同一project下不同--name会自动分文件夹,互不干扰。

3.2 方法二:修改脚本中的默认保存逻辑(进阶)

如果你希望所有推理命令默认都存到某处,可以微调detect_dual.py里的save_dir生成逻辑。

打开文件:

nano /root/yolov9/detect_dual.py

找到类似这一段(通常在if __name__ == '__main__':附近或run()函数内):

save_dir = increment_path(Path(project) / name, exist_ok=exist_ok)

把它改成:

# 强制指定根目录 project = Path('/workspace/yolo_outputs') save_dir = increment_path(project / name, exist_ok=exist_ok)

保存退出后,以后所有不带--project的命令,都会自动落到/workspace/yolo_outputs下。

注意:此方式影响全局,适合固定工作流;若需多任务并行,仍建议优先用--project参数。

4. runs/detect 目录结构详解:不只是存图那么简单

很多人以为runs/detect/xxx只是个“放结果图的文件夹”,其实它是一个结构清晰的结果工作区,包含四类关键内容:

4.1 主输出文件(必有)

  • *.jpg/*.png:原始输入图 + 叠加检测框、标签、置信度的可视化结果;
  • labels/*.txt:每张图对应一个文本文件,按YOLO格式存储:class_id center_x center_y width height confidence(归一化坐标);
  • results.txt:汇总指标,如Class Images Labels P R mAP50 mAP50-95(仅在批量推理时生成)。

4.2 日志与元数据(常被忽略但很有用)

  • args.yaml:完整记录本次推理所用的所有命令行参数(--source,--img,--weights等),方便复现;
  • speed.txt:记录预处理、推理、后处理各阶段耗时(单位:ms),帮你判断瓶颈在哪;
  • config.jsonhyp.yaml(部分版本):保存模型配置快照,用于调试差异。

4.3 批量推理的智能组织(高效协作关键)

当你用--source指定一个文件夹(如./data/images/)而非单张图时,YOLOv9会:

  • 自动为每张图生成独立标注文件(labels/xxx.txt);
  • results.txt中汇总全部图片的平均精度;
  • 若启用--save-txt--save-conf,还会在labels/中保留置信度值。

这意味着:你不用写循环脚本,一条命令就能完成整批数据的检测+标注导出,直接喂给下游标注平台或训练 pipeline。

4.4 安全清理建议:别让runs越积越多

runs/detect/不会自动清理旧任务,久而久之会占满磁盘。建议养成两个习惯:

  • 命名有意义:别用test1run001,改用20240520_horses_cpu20240520_coco_val_mAP,一眼看懂用途;
  • 定期归档删除:用这条命令一键清空30天前的detect任务(保留最近的):
find /root/yolov9/runs/detect -maxdepth 1 -type d -mtime +30 -not -name "detect" -exec rm -rf {} +

提示:-maxdepth 1确保只删一级子目录(如yolov9_s_640_detect),不误伤labels/等内部结构。

5. 遇到问题?对照这份自查清单快速排障

runs/detect没出现、结果不对、或图片异常时,按顺序检查以下7项,90%的问题当场解决:

  1. conda activate yolov9是否成功?运行python --versionnvcc --version确认环境可用;
  2. cd /root/yolov9是否执行?pwd输出必须是/root/yolov9
  3. --source路径是否真实存在?运行ls ./data/images/horses.jpg验证;
  4. --weights文件是否存在?ls ./yolov9-s.pt必须返回文件名;
  5. GPU是否可用?nvidia-smi查看显卡状态,若无输出则加--device cpu重试;
  6. 图片是否损坏?用file ./data/images/horses.jpg查看格式,用display ./data/images/horses.jpg(需ImageMagick)预览;
  7. 终端最后3行是否有红色报错?重点关注FileNotFoundError,CUDA out of memory,cv2.error类错误。

如果以上都通过,但依然无结果,请复制完整终端输出,重点看detect_dual.py加载模型后的第一行日志——那里会明确告诉你Saving results to ...的真实路径。

6. 总结:记住这三句话,再也不会迷路

YOLOv9的runs/detect不是玄学,它是一套设计清晰、高度可控的结果管理系统。只要把握住核心逻辑,你就永远知道结果在哪、怎么改、怎么管。

  • 第一句runs/detect/xxx的物理位置 = 你运行python detect_dual.py时所在的目录 +/runs/detect/xxx永远先cd /root/yolov9再执行
  • 第二句:想换地方存?用--project '/your/path',比改代码安全、灵活、可追溯;
  • 第三句runs/detect/xxx不只是图片文件夹,它是含标注、日志、配置的完整结果包,批量处理、复现实验、对接下游都靠它。

你现在完全可以关掉这篇指南,回到终端,用cd /root/yolov9 && python detect_dual.py ...跑一次,然后ls runs/detect/——那个带着检测框的horses.jpg,正安静地等你打开。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 18:19:39

视觉语言模型跨平台部署:从问题诊断到工业落地

视觉语言模型跨平台部署&#xff1a;从问题诊断到工业落地 【免费下载链接】BLIP PyTorch code for BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 项目地址: https://gitcode.com/gh_mirrors/bl/BLIP 一…

作者头像 李华
网站建设 2026/4/11 10:39:41

Verilog实现全加器代码示例:从零实现教程

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。我以一名资深数字IC前端工程师兼FPGA教学博主的身份,摒弃模板化表达、去除AI腔调,用真实项目经验、调试血泪史和一线设计直觉重写全文——目标是: 让初学者看懂逻辑,让工程师看到细节,让面试官眼前一亮 …

作者头像 李华
网站建设 2026/4/13 19:08:41

Glyph与CLIP模型对比:跨模态理解能力实战评测

Glyph与CLIP模型对比&#xff1a;跨模态理解能力实战评测 1. 视觉推理新思路&#xff1a;Glyph到底在解决什么问题 你有没有遇到过这样的情况&#xff1a;想让AI理解一篇长达万字的技术文档&#xff0c;但模型直接报错“超出上下文长度”&#xff1f;或者需要分析几十页PDF里…

作者头像 李华
网站建设 2026/4/15 10:40:37

3步释放500GB空间:游戏存储CTO的SLM实战指南

3步释放500GB空间&#xff1a;游戏存储CTO的SLM实战指南 【免费下载链接】Steam-Library-Manager Open source utility to manage Steam, Origin and Uplay libraries in ease of use with multi library support 项目地址: https://gitcode.com/gh_mirrors/st/Steam-Library…

作者头像 李华