2. 环境搭建与工程准备:Ubuntu/Conda环境配置、PyTorch安装、YOLOv5源码下载与结构总览
好,咱们正式开始动手了。
这一章,说白了就是“把枪擦亮”。很多同学一上来就急着调参、改网络,结果环境没配好,跑个demo报一堆错,心态直接崩了。我刚开始做算法落地时,就吃过这个亏——在Windows上配了三天环境,最后发现跟生产服务器的CUDA版本对不上,全部重来。嗯,从那以后,我养成了一个习惯:先统一环境,再写代码。
2.1 Ubuntu + Conda:我的标准配置
我个人习惯用Ubuntu 20.04 LTS。为什么?因为大部分AI服务器、云端实例都是这个版本,兼容性最好。你如果非要用Windows,也不是不行,但后续的TensorRT部署、ONNX导出,坑会多不少。
首先,安装Miniconda。别装Anaconda,太臃肿了。我只需要一个干净的环境管理工具。
# 下载Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 安装
bash Miniconda3-latest-Linux-x86_64.sh
# 一路yes,然后重启终端或source一下
source ~/.bashrc
# 验证
conda --version
接下来,创建YOLOv5的专属环境。我建议Python版本锁定在3.8或3.9。3.10以上有些旧版库可能不兼容,别给自己找麻烦。
conda create -n yolov5 python=3.8 -y
conda activate yolov5
2.2 PyTorch安装:版本匹配是门玄学
PyTorch的安装,核心就一句话:CUDA版本要对。
先看看你的显卡支持什么版本的CUDA:
nvidia-smi
看右上角的“CUDA Version”。比如显示11.7,那你就装PyTorch 1.13或2.0对应的CUDA 11.7版本。
我个人推荐用PyTorch 1.12或1.13,因为YOLOv5官方测试最充分的就是这个区间。2.0以上也能用,但有些自定义算子可能需要重新编译。
# 以CUDA 11.7为例
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
# 验证
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
2.3 YOLOv5源码下载与结构总览
环境配好了,咱们把YOLOv5拉下来。
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
这里有个细节:requirements.txt里包含了所有依赖,比如matplotlib、opencv-python、tqdm等。我建议你装完之后,手动检查一下版本,特别是opencv,有时候pip源里的版本太老,会导致视频读取报错。
装完之后,跑个demo验证一下:
python detect.py --source data/images/bus.jpg --weights yolov5s.pt
如果能看到一张标了框的公交车图片,恭喜你,环境搭建成功了。
2.4 源码结构总览:别急着改代码
很多同学拿到源码就开始翻models文件夹,想改网络结构。我的建议是:先看目录,再看流程。
YOLOv5的源码结构其实很清晰,我把它分成三大块:
| 目录/文件 | 作用 | 我的建议 |
|---|---|---|
models/ |
网络结构定义(yolov5s.yaml等) | 先看懂yaml配置文件,再改代码 |
utils/ |
工具函数(损失计算、数据增强、评价指标) | 这是核心,建议逐行阅读 |
train.py |
训练入口 | 先跑通,再调参 |
detect.py |
推理入口 | 部署时主要改这个文件 |
data/ |
数据集配置和样本 | 自定义数据集时重点关注 |
你想想看,整个YOLOv5的流程其实就是:读配置 → 构建模型 → 加载数据 → 前向传播 → 计算损失 → 反向传播 → 保存权重。这个主线抓住了,后面每一章都是在往这条线上加细节。
核心要点:
- 环境搭建:Ubuntu 20.04 + Conda + Python 3.8
- PyTorch版本:1.12~1.13,CUDA版本与驱动匹配
- 源码结构:先看models/yaml,再看utils,最后看train.py
- 验证方法:跑通detect.py的demo
嗯,这一章就到这儿。环境搭好了,下一章咱们就开始啃YOLOv5的核心——网络结构。到时候我会带着你一行一行看代码,把C3模块、SPPF这些玩意儿彻底讲透。
对了,如果你在安装过程中遇到任何问题,比如pip下载慢、CUDA版本不对,别硬扛。换个清华源,或者用conda安装PyTorch,都能解决。我当年就是太倔,非要跟一个报错死磕三天,后来发现换个源就搞定了。
公众号:蓝海资料掘金营,微信deep3321