1. 环境准备:搭建Ubuntu 20.04基础环境
在开始部署YOLOv5之前,我们需要确保Ubuntu 20.04系统已经安装了必要的软件和工具链。我建议使用全新的Ubuntu系统进行操作,这样可以避免各种依赖冲突问题。实测下来,Ubuntu 20.04 LTS是最稳定的选择,它自带的Python 3.8.5版本完全兼容YOLOv5的要求。
首先打开终端(Ctrl+Alt+T),执行系统更新命令:
sudo apt update && sudo apt upgrade -y接下来安装基础开发工具和Python环境:
sudo apt install -y python3 python3-pip python3-dev git curl我强烈建议使用Python虚拟环境来隔离项目依赖。这样可以避免系统Python环境被污染,也方便后续管理:
sudo apt install -y python3-venv python3 -m venv yolov5_env source yolov5_env/bin/activate注意:每次重新打开终端后,都需要先激活虚拟环境才能继续操作。你可以在~/.bashrc文件末尾添加
source /path/to/yolov5_env/bin/activate来自动激活。
2. 安装PyTorch和必要依赖
YOLOv5的核心依赖是PyTorch框架。根据我的经验,直接使用pip安装官方预编译版本是最稳定的方式。这里我们选择PyTorch 1.7.1和对应的torchvision版本:
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html如果你有NVIDIA显卡并想使用GPU加速,需要先安装CUDA驱动,然后安装GPU版本的PyTorch:
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html安装完成后,可以运行以下命令验证PyTorch是否安装成功:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"3. 获取YOLOv5源代码和配置环境
现在我们可以克隆YOLOv5的官方仓库了。我建议在用户目录下创建一个专门的项目文件夹:
mkdir ~/yolov5_project && cd ~/yolov5_project git clone https://github.com/ultralytics/yolov5.git cd yolov5安装项目依赖时,你可能会遇到PATH警告。这是常见问题,解决方法是将用户本地bin目录加入PATH:
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc source ~/.bashrc然后安装requirements.txt中列出的所有依赖:
pip install -r requirements.txt如果遇到"ModuleNotFoundError: No module named 'skbuild'"错误,这是缺少scikit-build导致的:
pip install scikit-build4. 数据准备和模型训练
YOLOv5支持多种训练方式。对于初学者,我建议先从官方提供的小型数据集开始。这里我们使用COCO128数据集:
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --cfg yolov5s.yaml --weights ''训练过程中有几个关键参数需要注意:
--img:输入图像尺寸,越大精度可能越高但显存占用也越大--batch:批处理大小,根据显存调整--epochs:训练轮数,5轮只是演示,实际项目通常需要50-300轮
训练完成后,模型权重会保存在runs/train/exp/weights/目录下。best.pt是验证集上表现最好的模型,last.pt是最后一个epoch的模型。
5. 使用训练好的模型进行目标检测
现在我们可以用训练好的模型进行推理了。YOLOv5支持多种输入源:
- 单张图片
- 图片目录
- 视频文件
- 摄像头实时流
测试单张图片:
python detect.py --source data/images/bus.jpg --weights runs/train/exp/weights/best.pt --conf 0.4测试整个目录下的图片:
python detect.py --source inference/images/ --weights runs/train/exp/weights/best.pt --conf 0.25对于没有GPU的环境,记得加上--device cpu参数:
python detect.py --source 0 --weights runs/train/exp/weights/best.pt --conf 0.4 --device cpu6. 常见问题排查与优化建议
在实际部署过程中,我遇到过几个典型问题,这里分享解决方案:
CUDA内存不足错误:减小--img-size和--batch-size参数值,或者在train.py中设置--multi-scale开启多尺度训练。
训练过程突然中断:检查系统日志dmesg,可能是OOM Killer终止了进程。可以尝试添加交换空间:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile检测结果不理想:尝试以下优化方法:
- 增加训练数据量
- 调整anchor box尺寸
- 增加训练轮数
- 使用更大的模型(如yolov5m.yaml或yolov5l.yaml)
对于生产环境部署,我建议将模型导出为ONNX格式:
python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 17. 进阶技巧与性能优化
当熟悉基础流程后,可以尝试以下进阶操作:
使用TensorBoard监控训练:
tensorboard --logdir runs/train自定义数据集训练:
- 按照YOLO格式准备数据集
- 创建data/custom.yaml配置文件
- 修改模型参数(可选)
- 开始训练:
python train.py --img 640 --batch 16 --epochs 50 --data data/custom.yaml --cfg models/yolov5s.yaml --weights ''模型剪枝与量化:
python export.py --weights runs/train/exp/weights/best.pt --include onnx --img 640 --batch 1 --dynamic --simplify多GPU训练:
python -m torch.distributed.launch --nproc_per_node 2 train.py --img 640 --batch 64 --epochs 50 --data coco128.yaml --cfg yolov5s.yaml --weights '' --device 0,1我在实际项目中发现,合理调整超参数可以显著提升模型性能。建议重点关注学习率(--lr)、权重衰减(--weight-decay)和数据增强参数(--hsv-h, --hsv-s, --hsv-v)。