从零到一:在Ubuntu 20.04上部署并实战YOLOv5目标检测 1. 环境准备搭建Ubuntu 20.04基础环境在开始部署YOLOv5之前我们需要确保Ubuntu 20.04系统已经安装了必要的软件和工具链。我建议使用全新的Ubuntu系统进行操作这样可以避免各种依赖冲突问题。实测下来Ubuntu 20.04 LTS是最稳定的选择它自带的Python 3.8.5版本完全兼容YOLOv5的要求。首先打开终端CtrlAltT执行系统更新命令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 torch1.7.1cpu torchvision0.8.2cpu torchaudio0.7.2 -f https://download.pytorch.org/whl/torch_stable.html如果你有NVIDIA显卡并想使用GPU加速需要先安装CUDA驱动然后安装GPU版本的PyTorchpip install torch1.7.1cu110 torchvision0.8.2cu110 torchaudio0.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目录加入PATHecho 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。