Windows 10 下使用 Miniconda 搭建 YOLOv5 训练环境
在目标检测的实际项目中,模型训练只是冰山一角。真正让初学者甚至有经验的开发者头疼的,往往是环境搭建过程中的各种“玄学问题”:明明代码没改,为什么别人能跑通我却报错?torch版本冲突、CUDA 不可用、依赖包缺失……这些问题背后,大多数时候并不是技术本身有多难,而是开发环境不够干净、不可控。
尤其是在 Windows 10 系统上进行深度学习开发时,系统路径、Python 全局环境、显卡驱动和包管理之间的耦合关系复杂,稍有不慎就会陷入“装了卸、卸了重装”的循环。
有没有一种方式,既能快速启动,又能避免污染全局环境,还能保证实验可复现?
答案是:用 Miniconda 创建隔离环境 + Python 3.11 + 手动配置 GPU 支持。这套组合拳不仅轻量高效,而且逻辑清晰、步骤可控,特别适合用于 YOLOv5 这类对依赖敏感的项目。
下面我们就从零开始,一步步构建一个稳定、可复用的 YOLOv5 训练环境。
为什么选择 Miniconda 而不是直接安装 Python?
很多人习惯直接下载 Python 安装包,然后用pip装库。但当你同时做多个 AI 项目时——比如一个用 PyTorch 1.13,另一个必须用 2.0+;或者一个需要旧版 OpenCV,另一个依赖新特性——全局 Python 环境很快就会变得混乱不堪。
Miniconda 的优势就在于它提供了一个轻量级的包与环境管理系统(conda),让你可以为每个项目创建独立的虚拟环境。这些环境彼此隔离,互不干扰,就像给每个项目分配了一台“专属小电脑”。
我们选用的是Miniconda3-py311_XX-Windows-x86_64.exe,即预装了 Python 3.11 的版本。这不仅能省去后续手动指定版本的麻烦,也确保了与当前主流框架的良好兼容性。
📌 建议前往官网下载最新版:https://docs.conda.io/en/latest/miniconda.html
安装时注意以下几点:
- 安装路径不要包含中文或空格,推荐如C:\miniconda3或C:\Users\YourName\miniconda3
- 勾选 “Add Miniconda to my PATH environment variable” —— 尽管提示“不推荐”,但在实际使用中开启更方便
- 允许初始化 conda 到 shell
安装完成后,打开Anaconda Prompt或PowerShell / CMD,运行:
conda --version python --version如果输出类似:
conda 24.x.x Python 3.11.x说明基础环境已准备就绪。
提升效率:配置国内镜像源加速下载
默认情况下,conda 和 pip 都会连接境外服务器拉取包,国内用户常遇到超时、断连、速度极慢的问题。为此,我们需要分别配置清华镜像源来提升安装效率。
Conda 使用清华源
执行以下命令自动写入.condarc配置文件:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --set show_channel_urls yes生成的配置文件位于:
C:\Users\YourName\.condarc内容应如下所示:
channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - defaults show_channel_urls: true⚠️ 特别提醒:PyTorch 相关包一定要优先从清华云频道安装,否则可能误装 CPU 版本导致无法使用 GPU。
最后清除缓存以应用新源:
conda clean -iPip 配置国内源
虽然 conda 是主管理工具,但部分库仍需通过 pip 安装。我们同样为其设置清华源。
在用户目录下创建:
- 文件夹:C:\Users\YourName\pip\
- 文件:pip.ini
文件内容如下:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn timeout = 6000此后所有pip install命令都将走国内通道,下载速度通常能提升数倍。
创建专属虚拟环境:避免依赖冲突
接下来我们要为 YOLOv5 项目创建一个独立的虚拟环境,命名为yolov5。
在终端中运行:
conda create -n yolov5 python=3.11等待安装完成,然后激活环境:
conda activate yolov5此时命令行前缀会出现(yolov5),表示你正处于该环境中。
一些常用操作备忘:
- 查看所有环境:conda env list
- 退出当前环境:conda deactivate
- 删除环境(谨慎):conda env remove -n yolov5
所有后续操作都应在(yolov5)环境中进行,这样才能真正做到“一处配置,处处可用”。
部署 YOLOv5 框架:克隆代码并安装依赖
Ultralytics 官方开源的 YOLOv5 是目前最成熟的目标检测框架之一,支持多种模型尺寸(s/m/l/x)、内置数据增强、训练可视化和模型导出功能。
克隆项目
切换到工作目录,例如D:\projects,执行:
git clone https://github.com/ultralytics/yolov5.git cd yolov5也可以手动下载 ZIP 包解压到本地。
确认已激活(yolov5)环境后,继续下一步。
安装基础依赖
YOLOv5 提供了完整的requirements.txt,只需一条命令即可安装大部分依赖:
pip install -r requirements.txt这个文件会安装以下关键组件:
-torch(默认 CPU 版)
-torchvision,torchaudio
-numpy,matplotlib,Pillow
-PyYAML,tqdm,scipy
-thop(用于计算 FLOPs)
安装过程中若出现网络错误,可尝试多次重试,或改用离线.whl文件安装。
安装完成后验证 PyTorch 是否正常导入:
python -c "import torch; print(torch.__version__)"预期输出如:
2.1.0启用 GPU 加速:正确安装 CUDA 版 PyTorch
默认安装的是 CPU-only 版本的 PyTorch,训练速度慢得令人难以忍受。要启用 GPU 加速,必须根据你的 NVIDIA 显卡驱动安装对应的 CUDA 版本。
查看支持的 CUDA 版本
运行:
nvidia-smi在右上角查看显示的CUDA Version,例如12.2。这是系统支持的最大 CUDA 版本,不是驱动版本号。
📌 注意:PyTorch 安装时使用的cuXXX编译版本不能超过此值。
卸载 CPU 版本
先卸载原有的 CPU 版本:
pip uninstall torch torchvision torchaudio安装 GPU 版本
访问 PyTorch 官网 获取正确的安装命令。
选择项如下:
- PyTorch Build: Stable
- OS: Windows
- Package: Pip
- Language: Python
- Compute Platform: 根据nvidia-smi结果选择(如 CUDA 11.8 或 12.1)
复制对应命令,例如:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118或对于 CUDA 12.1:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121💡 若网络不稳定,可前往 https://download.pytorch.org/whl/torch_stable.html 手动下载
.whl文件进行本地安装。
验证 GPU 可用性
运行以下命令测试:
python -c " import torch print('CUDA Available:', torch.cuda.is_available()) print('GPU Count:', torch.cuda.device_count()) print('Current Device:', torch.cuda.current_device()) print('Device Name:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A') "理想输出:
CUDA Available: True GPU Count: 1 Current Device: 0 Device Name: NVIDIA GeForce RTX 3060✅ 成功!这意味着你的模型将利用 GPU 进行训练,速度相比 CPU 可提升 5~10 倍以上。
准备训练数据:规范目录结构与标签格式
YOLOv5 对数据组织有明确要求。假设我们要训练一个识别“苹果”的模型,建议结构如下:
datasets/apple/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ └── img2.jpg │ └── val/ │ ├── img3.jpg │ └── img4.jpg └── labels/ ├── train/ │ ├── img1.txt │ └── img2.txt └── val/ ├── img3.txt └── img4.txt📌 关键点说明:
- 图像支持 JPG/PNG 等常见格式
- 标签文件为.txt,每行格式为:class_id x_center y_center width height
- 所有坐标均为归一化值(范围 0~1)
- 多个目标则有多行记录
🔁 如果你已有 VOC/XML 格式标注,可通过脚本批量转换为 YOLO 格式;也可使用 LabelImg 并设置保存格式为 “YOLO Darknet”。
编写自定义配置文件:apple.yaml
在yolov5/data/目录下新建apple.yaml文件,内容如下:
# 数据路径(相对路径) train: ../datasets/apple/images/train val: ../datasets/apple/images/val # 类别数量 nc: 1 # 类别名称列表 names: ['apple']这个 YAML 文件将在训练时被引用,告诉模型去哪里加载数据、有多少类别。
开始训练:运行 train.py
回到 YOLOv5 根目录,执行训练命令:
python train.py \ --img 640 \ --batch 16 \ --epochs 100 \ --data data/apple.yaml \ --weights yolov5s.pt \ --cfg models/yolov5s.yaml \ --name yolov5s_apple参数详解:
| 参数 | 说明 |
|---|---|
--img 640 | 输入图像尺寸,可根据显存调整为 320/1280 |
--batch 16 | 每批处理图像数,显存不足时可调小(如 8 或 4) |
--epochs 100 | 训练轮数,复杂任务可增至 300+ |
--data | 数据配置文件路径 |
--weights | 初始权重文件,首次建议使用yolov5s.pt |
--cfg | 模型结构定义文件 |
--name | 结果保存子目录名 |
首次运行会自动下载yolov5s.pt权重文件(约 14MB)。训练过程中会在runs/train/yolov5s_apple/生成:
- 日志信息
- 损失曲线图(loss curves)
- mAP 曲线
- 最佳模型权重weights/best.pt
- 最终模型weights/last.pt
训练结束后,推荐使用best.pt进行推理测试。
推理测试:验证模型效果
训练完成后,最关键的一步是看看模型是否真的学会了识别目标。
使用 detect.py 进行推理
将待测图片放入yolov5/data/images/,例如test.jpg,然后运行:
python detect.py \ --source data/images/test.jpg \ --weights runs/train/yolov5s_apple/weights/best.pt \ --conf 0.4 \ --save-txt \ --save-conf参数说明:
---source:支持单图、多图、视频、摄像头实时检测
---weights:加载训练好的模型权重
---conf 0.4:置信度阈值,低于此值的预测将被过滤
---save-txt:保存检测框坐标到.txt
---save-conf:保存置信度分数
结果保存在runs/detect/exp/目录中(多次运行递增为exp2,exp3…)。
查看检测结果
进入runs/detect/exp/文件夹,打开输出图像即可看到带边框和标签的结果。
如果能看到清晰的绿色边框和"apple"标签,说明你的模型已经具备基本识别能力!
🔍 若效果不佳,可尝试以下优化方向:
- 增加训练轮数(如--epochs 300)
- 提高输入分辨率(如--img 1280)
- 调整数据增强参数(修改data/hyps/hyp.scratch-low.yaml)
- 扩充数据集样本量,尤其是难例样本
- 使用更大的模型(如yolov5m,yolov5l)
进阶技巧:结合 Jupyter 与远程开发
除了命令行操作,还可以通过交互式工具进一步提升开发效率。
在 Jupyter Notebook 中调试
在(yolov5)环境中安装 Jupyter:
pip install jupyter启动服务:
jupyter notebook浏览器会自动打开界面,你可以创建.ipynb文件,逐步调试数据加载、模型推理、张量可视化等流程。
这种方式特别适合做实验分析、画图展示、教学演示,极大提升了可读性和调试效率。
通过 SSH 远程开发
如果你希望在远程服务器或云主机上运行训练任务,可以通过 SSH 连接管理。
配置好密钥后,使用命令连接:
ssh username@server-ip -p 22连接成功后,激活环境并启动训练:
conda activate yolov5 cd yolov5 nohup python train.py --data data/apple.yaml --weights yolov5s.pt > train.log 2>&1 &配合tmux或screen可实现后台持久化运行,即使断开连接也不会中断训练。
此外,还可使用rsync同步数据、tensorboard查看训练曲线、ngrok暴露本地端口实现远程可视化。
这套基于 Miniconda 的 YOLOv5 环境搭建方案,核心价值在于“隔离”与“可控”。无论是学生做课程设计,研究人员开展实验,还是工程师部署原型,都能从中受益。
环境整洁了,出错少了,调试快了,信心自然也就来了。真正的技术成长,往往始于一次成功的环境配置。愿你在 AI 的道路上少些折腾,多些专注,终见星辰大海。