2026/4/12 9:02:38
网站建设
项目流程
有哪些网站平台,南宁有名的seo费用,资阳住房和城乡建设厅网站,怎样做国际网站平台YOLOv9推理结果保存位置说明#xff0c;找图不再难
在使用YOLOv9进行目标检测任务时#xff0c;一个看似微小却高频困扰新手的问题是#xff1a;推理生成的图片和标注结果到底存哪儿了#xff1f; 你运行完python detect_dual.py命令#xff0c;终端显示“Done”#xf…YOLOv9推理结果保存位置说明找图不再难在使用YOLOv9进行目标检测任务时一个看似微小却高频困扰新手的问题是推理生成的图片和标注结果到底存哪儿了你运行完python detect_dual.py命令终端显示“Done”但翻遍当前目录、/root/yolov9、甚至整个家目录都找不到带红框的检测图——它像被系统悄悄藏起来了。更让人困惑的是明明指定了--name yolov9_s_640_detect可runs/detect/下却出现多个相似文件夹哪个才是你刚跑出来的结果这不是环境配置错误也不是代码bug而是YOLOv9官方实现中默认输出路径逻辑与用户直觉存在错位。本文不讲原理、不堆参数只聚焦一个最实际的问题如何快速定位、确认、复用你的YOLOv9推理结果。全文基于CSDN星图提供的「YOLOv9 官方版训练与推理镜像」实测验证所有路径、命令、结构均来自真实环境开箱即用所见即所得。1. 推理结果默认保存在哪一句话说清1.1 核心结论固定路径 动态子目录 runs/detect/your_name_hereYOLOv9官方推理脚本如detect_dual.py严格遵循Ultralytics系列的输出规范所有检测结果统一保存在项目根目录下的runs/detect/子目录中而具体存放位置由你传入的--name参数决定——它会作为该次运行的专属子文件夹名。正确理解--name yolov9_s_640_detect→ 结果存于runs/detect/yolov9_s_640_detect/常见误解结果会出现在当前执行命令的目录或/root/yolov9/weights/等其他位置这个路径是硬编码在源码中的不受当前工作目录影响。无论你在/tmp还是/home/user下执行命令只要进入/root/yolov9后再运行结果就一定落在/root/yolov9/runs/detect/下。1.2 镜像内完整路径链从根目录到结果文件在CSDN星图提供的YOLOv9镜像中路径层级清晰且唯一/root/yolov9/ ← 镜像预置代码根目录文档明确指出 ├── runs/ │ └── detect/ ← 所有推理结果的“总仓库” │ └── yolov9_s_640_detect/ ← 你指定的--name值生成的专属文件夹 │ ├── horses.jpg ← 带检测框的输出图片原图名保持不变 │ ├── labels/ ← 文本标注文件.txt格式YOLO标准格式 │ │ └── horses.txt │ ├── results.csv ← 检测统计汇总可选需启用--save-csv │ └── detect_log.txt ← 运行日志含耗时、设备信息等关键提示horses.jpg是示例图名实际保存的文件名与--source参数指定的输入文件名完全一致。若你用--source ./data/images/bus.jpg输出就是bus.jpg若用--source ./data/videos/test.mp4则输出为test.avi视频默认转为avi格式。1.3 为什么你总找不到三个高频误操作排查问题现象根本原因一招解决ls当前目录看不到结果在错误目录执行命令如没先cd /root/yolov9务必先执行cd /root/yolov9再运行推理命令runs/detect/下有多个同名文件夹多次运行未清理每次--name相同导致覆盖或新建YOLOv9默认不覆盖会自动加后缀如yolov9_s_640_detect2查看文件夹修改时间ls -lt runs/detect/最新修改的就是本次结果找到文件夹但里面只有labels/没有图片--source指向的是纯文本或空目录或OpenCV读取失败如图片损坏检查输入路径是否真实存在且可读ls -l ./data/images/horses.jpg2. 实操验证三步定位你的第一张检测图2.1 确认环境并进入正确目录镜像启动后默认处于baseconda环境必须先激活专用环境并切换到代码根目录# 激活YOLOv9专用环境 conda activate yolov9 # 进入代码根目录关键否则路径错乱 cd /root/yolov9 # 验证当前路径应输出 /root/yolov9 pwd2.2 执行推理并观察终端输出运行官方示例命令注意终端最后一行会明确打印输出路径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 /root/yolov9/runs/detect/yolov9_s_640_detect这行提示是黄金线索它直接告诉你绝对路径无需猜测。2.3 快速查看结果文件使用ls命令直达目标验证文件是否存在# 列出结果目录下的所有文件含隐藏文件 ls -la runs/detect/yolov9_s_640_detect/ # 查看图片详细信息确认是否为带框图像 file runs/detect/yolov9_s_640_detect/horses.jpg # 查看标注内容验证检测是否生效 cat runs/detect/yolov9_s_640_detect/labels/horses.txt输出示例-rw-r--r-- 1 root root 5242880 Jun 15 10:22 horses.jpg # 文件大小明显大于原图因添加了绘制框 -rw-r--r-- 1 root root 72 Jun 15 10:22 horses.txt # 标注文件每行一个目标cls x_center y_center width height3. 进阶技巧按需定制保存位置与内容3.1 不想用默认runs/detect/用--project强制指定根目录当需要将结果集中管理如统一存到/data/output/或避免与训练结果混淆时--project参数比--name更底层、更可控# 将结果保存到自定义根目录--name仅控制子文件夹名 python detect_dual.py \ --source ./data/images/horses.jpg \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --project /data/output \ --name my_horse_detection # 实际保存路径变为/data/output/detect/my_horse_detection/horses.jpg注意--project路径必须已存在且有写入权限。镜像中/data目录需提前创建mkdir -p /data/output3.2 只要标注不要图禁用图像保存节省空间对批量处理场景如万张图生成标注关闭图像绘制可提速30%并减少磁盘占用# 添加 --nosave 参数只生成labels/和results.csv不保存带框图片 python detect_dual.py \ --source ./data/images/ \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name batch_labels_only \ --nosave3.3 同时保存多种格式图片视频CSV统计YOLOv9支持一键导出多维度结果满足不同下游需求# 保存带框图 生成检测视频输入为视频时 输出CSV统计表 python detect_dual.py \ --source ./data/videos/test.mp4 \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name video_analysis \ --save-csv \ --exist-ok # 允许覆盖同名文件夹谨慎使用 # 输出包含 # - test.avi检测视频 # - results.csv每帧检测数、平均置信度、FPS等 # - labels/逐帧txt标注4. 常见问题实战解答从报错到定位4.1 报错FileNotFoundError: [Errno 2] No such file or directory: runs/detect/yolov9_s_640_detect这并非路径不存在而是Python尝试创建目录时权限不足。镜像中/root/yolov9/runs/默认属主为root若以非root用户运行极少见或磁盘满导致创建失败会出现此错。解决方案# 强制修复目录权限镜像内root用户可直接执行 chmod -R 755 /root/yolov9/runs # 或手动创建缺失目录推荐 mkdir -p /root/yolov9/runs/detect/yolov9_s_640_detect4.2 为什么horses.jpg里没有红框只有原图这是最典型的“假失败”。原因只有一个OpenCV绘图功能未启用。YOLOv9默认开启绘图但若环境缺少GUI依赖镜像无X11部分版本会静默降级为仅保存标注。验证方法# 检查输出图片是否真为原图对比文件大小 ls -lh ./data/images/horses.jpg ls -lh runs/detect/yolov9_s_640_detect/horses.jpg # 若两者大小几乎一致 → 绘图未生效强制启用绘图添加--line-thickness参数python detect_dual.py \ --source ./data/images/horses.jpg \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name force_draw \ --line-thickness 3 # 明确指定线宽强制触发绘图逻辑4.3 如何批量处理整个文件夹并按原名保存避免手动写循环用YOLOv9内置的通配符支持# 处理data/images/下所有jpg/png图片结果按原名保存 python detect_dual.py \ --source ./data/images/*.jpg \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name batch_images \ --exist-ok # 输出./data/images/cat.jpg → runs/detect/batch_images/cat.jpg # ./data/images/dog.png → runs/detect/batch_images/dog.png提示Linux通配符*.jpg由shell展开后传给Python确保路径中无空格。5. 工程化建议让结果管理更可靠5.1 建立结果归档习惯用时间戳命名防覆盖避免--name重复导致混乱用日期时间自动生成唯一标识# 获取当前时间戳格式20240615_102230 TIMESTAMP$(date %Y%m%d_%H%M%S) # 命名结果文件夹 python detect_dual.py \ --source ./data/images/horses.jpg \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name horses_${TIMESTAMP}5.2 自动复制结果到共享目录适合团队协作将结果同步到/data/shared/供他人访问# 推理完成后自动拷贝到共享区 python detect_dual.py \ --source ./data/images/horses.jpg \ --img 640 \ --device 0 \ --weights ./yolov9-s.pt \ --name horses_prod # 复制结果保留结构 cp -r runs/detect/horses_prod/ /data/shared/detection_results/5.3 用find命令快速搜索历史结果当积累大量结果文件夹时用时间范围精准定位# 查找最近24小时内生成的所有检测结果 find /root/yolov9/runs/detect/ -maxdepth 1 -type d -mtime -1 -ls # 查找包含car关键词的结果文件夹如--name car_test find /root/yolov9/runs/detect/ -maxdepth 1 -name *car*6. 总结掌握路径逻辑告别“找图焦虑”YOLOv9的推理结果保存机制本质简单runs/detect/是唯一入口--name是你的钥匙/root/yolov9是它的家。本文没有引入任何新概念只是把文档中分散的路径信息、命令参数、环境约束用真实镜像环境串联成一条可立即执行的行动链。你真正需要记住的只有三点每次运行前必做cd /root/yolov9 conda activate yolov9结果必在runs/detect/your_name_here/终端最后一行会告诉你确切路径找不到先ls -lt runs/detect/看最新文件夹再ls里面的内容当“找图”不再成为障碍你就能把精力真正放在模型调优、业务集成和效果分析上——这才是AI工程落地的核心价值。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。