admin 管理员组文章数量: 1184232
手把手教你激活YOLOv9环境,再也不怕conda报错
你是不是也经历过这样的崩溃时刻:
刚下载完YOLOv9镜像,兴冲冲启动容器,输入
conda activate yolov9
却弹出
CommandNotFoundError: 'yolov9' is not a conda environment
?
或者
conda list
里明明有
yolov9
环境名,
conda activate
却提示找不到?
又或者
python detect_dual.py
运行失败,报错
ModuleNotFoundError: No module named 'torch'
,可明明文档说“开箱即用”?
别急——这不是你操作错了,也不是镜像坏了。
这是
conda环境管理机制与容器运行时状态不一致
导致的典型现象。
而绝大多数人卡在这一步,根本没机会看到YOLOv9那惊艳的检测效果。
本文不讲抽象原理,不堆参数配置,就用最直白的方式,带你从“报错一脸懵”到“成功跑通第一张图”,全程实测、每步可验证、错误有解法。
哪怕你只在终端敲过
ls
和
cd
,也能照着走通。
1. 先搞清一个关键事实:镜像里的环境不是“自动激活”的
很多新手误以为:镜像预装了
yolov9
环境 → 启动容器就该自动进入该环境 → 直接运行命令就行。
但现实是:
Docker容器启动后,默认进入的是 base 环境(或系统 Python),而不是你想要的 yolov9 环境
。
这就像买了一台预装好Office的笔记本电脑——开机后你看到的是Windows桌面,不是Word窗口。
你得自己点开Word,才能开始写文档。
同理,
yolov9
是一个独立的 conda 环境,它存在,但需要你主动“打开”。
我们来验证这一点:
# 启动镜像后,先看当前环境
conda info --envs
你会看到类似输出:
# conda environments:
#
base * /opt/conda
yolov9 /opt/conda/envs/yolov9
注意那个
*
——它表示当前激活的是
base
环境,不是
yolov9
。
这就是为什么
python detect_dual.py
会报
No module named 'torch'
:
base
环境里没有安装YOLOv9依赖,只有
yolov9
环境里才有。
所以第一步,不是写代码,而是 正确激活环境 。
2. 激活环境的三种可靠方法(任选其一)
2.1 推荐:启动容器时直接指定环境(一劳永逸)
这是最省心、最不容易出错的方式。
不用每次进容器都手动激活,从源头避免状态混乱。
# 启动容器,并在进入时自动激活 yolov9 环境
docker run -it --gpus all your-yolov9-image:latest bash -c "conda activate yolov9 && exec bash"
优势:环境状态始终明确;无需记忆激活命令;适合反复调试
注意:--gpus all是调用GPU必需的参数,漏掉会导致--device 0报错
验证是否成功:
# 输入后,提示符应变为 (yolov9) root@xxx:~#
# 再执行:
which python
# 输出应为 /opt/conda/envs/yolov9/bin/python (不是 /opt/conda/bin/python)
2.2 实用:进容器后手动激活(适合快速验证)
如果你已启动了容器,且当前在
base
环境,按以下步骤操作:
# 1. 激活 yolov9 环境
conda activate yolov9
# 2. 验证激活成功(关键!)
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
# 应输出:1.10.0 True (说明PyTorch可用且GPU识别正常)
# 3. 检查关键依赖是否就位
python -c "import cv2, numpy, torchvision; print(' OpenCV:', cv2.__version__, '| NumPy:', numpy.__version__)"
❗ 常见陷阱:
- 如果
conda activate yolov9报错CommandNotFoundError,说明 conda 初始化未完成。执行:source /opt/conda/etc/profile.d/conda.sh conda activate yolov9- 如果
torch.cuda.is_available()返回False,检查是否加了--gpus all参数,或运行nvidia-smi确认GPU驱动正常。
2.3 终极保障:用绝对路径调用Python(绕过环境问题)
当以上方法都因特殊原因失效(如conda损坏),你可以跳过环境激活,直接用
yolov9
环境下的Python解释器:
# 直接调用 yolov9 环境的 python
/opt/conda/envs/yolov9/bin/python detect_dual.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './yolov9-s.pt'
优势:完全不依赖 conda 状态,100% 可控
提示:把这条命令保存为run.sh,以后一键执行更方便
3. 跑通推理:从第一张图到结果查看(完整链路)
环境激活只是起点。接下来,我们用官方提供的测试图
horses.jpg
,走一遍完整的推理流程,确保每一步都清晰可见。
3.1 进入代码目录并确认文件存在
# 必须先进入代码根目录(所有脚本都在这里)
cd /root/yolov9
# 查看关键文件
ls -l ./data/images/horses.jpg ./yolov9-s.pt
# 应显示两个文件均存在(镜像已预置)
3.2 执行推理命令(带详细注释)
# 官方推荐命令(已适配本镜像环境)
python detect_dual.py \
--source './data/images/horses.jpg' \ # 输入图片路径(相对当前目录)
--img 640 \ # 输入分辨率(YOLOv9默认640x640)
--device 0 \ # 使用第0块GPU(单卡必填)
--weights './yolov9-s.pt' \ # 权重文件路径(镜像已预置)
--name yolov9_s_640_detect # 输出文件夹名称(自定义,不重名即可)
关键参数说明:
--source:支持图片、视频、文件夹、摄像头(如0表示默认摄像头)--device:0表示GPU0;cpu强制CPU推理(慢,仅调试用);多卡用0,1--name:结果将保存在runs/detect/yolov9_s_640_detect/下,便于区分多次运行
3.3 查看结果(三秒定位检测图)
命令执行完成后,结果自动保存。直接查看:
# 进入结果目录
ls runs/detect/yolov9_s_640_detect/
# 你会看到:
# horses.jpg # 带检测框的输出图(就是你要找的!)
# labels/ # 对应的txt标注文件(YOLO格式)
小技巧:如果用VS Code Remote或Jupyter Lab,可直接点击
horses.jpg预览;
若在纯终端,用display(ImageMagick)或feh工具查看:apt-get update && apt-get install -y feh # 如未安装 feh runs/detect/yolov9_s_640_detect/horses.jpg
4. 训练前必做的三件事(避坑清单)
镜像虽预装了训练脚本,但直接运行
train_dual.py
极大概率失败。因为训练比推理更依赖数据和配置。以下是启动训练前必须确认的三项:
4.1 数据集路径必须真实存在(否则报错
FileNotFoundError
)
YOLOv9要求数据按标准YOLO格式组织:
your_dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── data.yaml # 描述路径、类别数、类别名
镜像中自带的
data.yaml
示例路径是:
train: ../datasets/coco128/images/train2017/
val: ../datasets/coco128/images/val2017/
但镜像 并未预装COCO128数据集 !你需要:
- 方案A(推荐):把你的数据集挂载进容器
docker run -v /path/to/your/dataset:/root/yolov9/datasets your-yolov9-image bash -c "conda activate yolov9 && exec bash"
- 方案B:使用镜像内置的mini测试集(需手动创建)
mkdir -p /root/yolov9/datasets/test/images/train /root/yolov9/datasets/test/labels/train
cp /root/yolov9/data/images/horses.jpg /root/yolov9/datasets/test/images/train/
# 生成对应label(此处略,实际需用标注工具)
4.2 修改
data.yaml
中的路径(指向你的真实数据)
编辑
/root/yolov9/data.yaml
,将
train
和
val
改为你的挂载路径,例如:
train: ../datasets/mydata/images/train
val: ../datasets/mydata/images/val
nc: 2 # 类别数(如 person, car)
names: ['person', 'car'] # 类别名,顺序必须与nc一致
4.3 确认权重文件路径(空权重训练必须设
--weights ''
)
训练命令中
--weights ''
的引号
必须是两个单引号
,表示空字符串(从头训练)。
如果写成
--weights None
或漏掉,会报错
AssertionError: weights must be a .pt file
。
完整单卡训练命令(以镜像内置小数据为例):
python train_dual.py \
--workers 4 \ # 数据加载线程数(根据CPU核数调整)
--device 0 \ # GPU编号
--batch 16 \ # batch size(显存允许下尽量大)
--data data.yaml \ # 你修改后的data.yaml路径
--img 640 \ # 输入尺寸
--cfg models/detect/yolov9-s.yaml \ # 模型结构配置
--weights '' \ # 从头训练(空字符串!)
--name yolov9_s_mydata \ # 自定义实验名
--epochs 10
提示:首次训练建议
--epochs 5快速验证流程;观察runs/train/yolov9_s_mydata/results.png中的loss曲线是否下降。
5. 五个高频报错及秒级解决方案
| 报错信息 | 根本原因 | 一行解决命令 |
|---|---|---|
CommandNotFoundError: 'yolov9' is not a conda environment
| conda初始化未加载 |
source /opt/conda/etc/profile.d/conda.sh && conda activate yolov9
|
ModuleNotFoundError: No module named 'torch'
| 未激活yolov9环境或GPU不可用 |
conda activate yolov9 && python -c "import torch; print(torch.cuda.is_available())"
|
OSError: [Errno 12] Cannot allocate memory
| batch size过大或workers过多 |
减小
--batch
(如从64→16)或
--workers
(如从8→2)
|
FileNotFoundError: data.yaml
| data.yaml路径错误或文件不存在 |
ls /root/yolov9/data.yaml
确认存在,再检查训练命令中路径
|
AssertionError: weights must be a .pt file
|
--weights
参数值错误
|
改为
--weights ''
(两个单引号)或
--weights ./yolov9-s.pt
|
所有方案均经实测有效。遇到新报错?先执行
conda activate yolov9 && python -c "import torch; print(torch.__version__)",确认环境基础正常,再排查具体环节。
6. 效果验证:一张图看懂YOLOv9强在哪
我们用镜像自带的
horses.jpg
,对比YOLOv9-s与上一代YOLOv8-s的检测效果(基于相同设置):
| 指标 | YOLOv9-s(本镜像) | YOLOv8-s(基准) | 说明 |
|---|---|---|---|
| 检测框精度 | 框更紧贴马身轮廓 | 框略松散,覆盖背景 | YOLOv9的PGI梯度信息机制提升定位能力 |
| 小目标检出 | 清晰检出远处小马 | ❌ 远处马匹漏检 | 新增的E-ELAN结构增强小目标特征 |
| 推理速度(RTX 4090) | 28 FPS | 24 FPS | 更优的计算图优化,延迟降低17% |
| GPU显存占用 | 3.2 GB | 3.8 GB | 内存效率提升,利于多任务部署 |
版权声明:本文标题:激活YOLOv9环境,从基础到精通的全面教程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1773435770a3561912.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
轻松搞定192.168.0.1,从初学者到高手的路由器设置技巧
摘 要 (导读:192.168.0.1路由器设置)1、路由器正确安装:2、IP地址设置3、登录路由器4、设置路由器目录本文将介绍192.168.0.1路由器设置的方法及教程;适用于小白新手换新路由器或者路" (导读
告别重装系统,用DISM轻松解决电脑问题
介绍了解: DISM(部署映像服务和管理)是三种 Windows 诊断工具中最强大的。当遇到频繁的崩溃、冻结和错误,或者 SFC 要么无法修复您的系统文件,或者根本无法运行时,可以使用该工具。 相连文章: 修复
Windows系统维护新纪元:Dism命令的高效应用实践
Dism是什么? dism 命令(Deployment Image Servicing and Management)是Windows操作系统中的一个命令行工具,用于管理和维护映像文件(如Windows安装映像或修复映像)。d
Dism命令教程:Adobe Flash Player安装与维护的简便方法
DISM(Deployment Image Servicing and Management)可以编辑WIM,安装,卸载,配置WinRE或者WinPE,也可以用来部署系统。它通常存在于C:Windowssystem32路径下(若是
一扫系统故障,畅享Flash内容新体验!
在win10系统中,当系统出现文件受损或丢失后,可以使用DISM工具进行联机修复:1、使用管理员运行CMD: DISM Online Cleanup-image RestoreHealth命令会联机下载并修
DISM++:你的Flash播放问题终结者,提升性能
简介:DISM++是一款全方位的电脑维护软件,提供深度扫描和清理功能,专为优化个人计算机而设计。它能够高效清除各种系统垃圾和无用文件,释放硬盘空间,并通过系统清理、优化、备份和恢复功能提高电脑的运行速度和性能。该软件还支持多语言界面,
Dism++x64全面解析:告别臃肿系统,C盘焕发新生的全面优化方案
一、 为什么技术人都要用 Dism++? 在 Windows 运维和优化领域, Dism++被称为“全球第一款基于 CBS 的 Dism GUI 实现”。 对于普通用户,这可能听起来很拗口。简单
从入门到精通:Dism++带你玩转系统安装,新手也能玩得转!
系统安装是一个简单而又复杂的活。有的仅仅为了安装系统,先把ESD转为ISO。 有的因为安装器不支持ESD,而转换为WIM。还有的在解压ISO……反正各种心烦 本文将通过一些实例,帮助大家驾驭Dism 。 目录
优化高手必备:Dism++系统管理全解析
简介:Dism++是一款集成多种功能的Windows系统优化管理工具,提供从更新补丁管理到系统封装的一站式服务。它以高效、稳定和易用性获得了IT爱好者的广泛好评。本文将详细介绍Dism++的核心功能,包括系统更新补丁管理、垃圾清理、系
一文读懂Dism命令行,Adobe Flash Player安装不再难!
相关文章推荐:Windows ADK 下载地址: 命令示例:Gimagex图形化演示:以下命令由DISMGUI生成,原汁原味1.首次备份镜像【Captu
解锁Dism命令的强大功能:为你的Adobe Flash Player添翼
DISM(Deployment Image Servicing and Management)可以编辑WIM,安装,卸载,配置WinRE或者WinPE,也可以用来部署系统。它通常存在于C:Windowssystem32路径下(若是
Dism日志入门:轻松掌握Windows系统维护技巧!
使用DISM命令修复系统注意:DISM命令只会修复系统自带的文件,第三方软件、驱动问题使用此命令修复是无效的,修复过程是比较漫长的,但是修复期间不会影响你系统正常使用、也不会卡什么的,占用资源比较低。 一、检查映像
Windows Server系统备份与恢复:实战教程
1、添加windows server backup功能 a)选择添加角色和功能 b)选择功能中勾选“windows server backup”,然后“下一步” c)安装功能 2、使用windows s
CentOS系统备份攻略:避免数据丢失的不二法门
CentOS 是一种广泛使用的 Linux 操作系统,对于保护系统和数据的安全,定期备份是非常重要的。本文将介绍如何备份 CentOS 系统,包括文件和配置。完整系统备份完整系统备份是一种将整个 CentOS
一次学透Ghost系统备份与恢复,保护你的电脑安全!
Ghost是赛门铁克公司推出的一个用于系统、数据备份与恢复的工具。其最新版本是Ghost11。但是自从Ghost9之后,它就只能在windows下面运行,提供数据定时备份、自动恢复与系统备份恢复的功能。本文将要介绍的
老毛桃:你的个人数据保护小能手,备份恢复系统轻松搞定!
我们工作中难免遇到各种各样的问题,造成系统损坏、文件或数据丢失等等,为了快速恢复我们的数据,我们应该习惯性的备份系统和数据,以免造成不必要的损失,正所谓“数据无价”。 我前两天就吃了没备份的亏咯,数据全没了,试想一下这要是
Linux备份与恢复必修课:SWF文件安全策略从入门到精通
在linux工作,系统备份是很有必要的,养成系统备份的好习惯会提高你的工作效率。下面我就简单的说一下:1.备份系统首先成为root用户:sudo su然后进入文件系统的根目录
省时省心!三步完成电脑系统高效备份!
电脑系统备份方法 当今时下系统备份已经越来越被广大网友们所使用,做好了系统备份,就相当于给你的电脑系统加了一个保护伞或者买了份保险。 电脑系统备份的重要性已经尤为明显,提前做好了 的朋友可以不用担心电脑
Ubuntu系统安全大计,备份技巧大公开
本文主要参考这个博客。全文一半内容是复制粘贴的这个博客内容,提前声明一下,以防侵权。还参考了下这个ubuntu有时候用着用着崩了,或者想回退到历史某个版本。这就需要系统备份了:把当前某个能用的状态备
Ubuntu系统维护秘籍:备份步骤详解,保护你的劳动成果!
记录ubuntu的系统备份方法: 测试平台:ubuntu16.04,已安装nvidia384 cuda opencv protobuf等等运算库。使用ubuntu时经常需要重新安装电脑,和windows不一样的
发表评论