1. 从零开始:YOLOv5环境搭建与源码获取
第一次接触YOLOv5可能会觉得有点懵,但别担心,跟着我的步骤来,保证你能顺利跑通第一个目标检测demo。我去年第一次部署YOLOv5时也踩了不少坑,现在把这些经验都总结给你。
YOLOv5是目前最流行的目标检测算法之一,相比前代版本,它的速度和精度都有显著提升。最棒的是它开源在GitHub上,我们可以直接下载使用。不过要注意的是,官方推荐使用Python 3.8或3.9版本,太高或太低的Python版本可能会导致依赖冲突。
首先打开GitHub仓库(https://github.com/ultralytics/yolov5),点击绿色的"Code"按钮,选择"Download ZIP"把源码下载到本地。我更推荐使用git clone命令,这样后续更新更方便:
git clone https://github.com/ultralytics/yolov5 cd yolov5下载完成后,我们需要配置Python环境。强烈建议使用conda创建虚拟环境,这样可以避免污染系统环境:
conda create -n yolov5 python=3.8 conda activate yolov5接下来安装依赖库,官方提供了requirements.txt文件,一键安装所有依赖:
pip install -r requirements.txt这里有个常见坑点:PyTorch的安装。如果你用的是Windows系统且没有NVIDIA显卡,需要安装CPU版本的PyTorch:
pip install torch==1.10.0+cpu torchvision==0.11.1+cpu -f https://download.pytorch.org/whl/torch_stable.html安装完成后,可以运行以下命令验证环境是否配置正确:
python -c "import torch; print(torch.__version__)"如果看到版本号输出,说明环境配置成功了。整个过程大概需要10-15分钟,具体取决于你的网速和电脑性能。
2. 模型权重下载与首次推理
环境准备好后,我们需要下载预训练模型权重。YOLOv5提供了多个不同大小的模型,从轻量级的yolov5s到高精度的yolov5x。作为新手,建议先从yolov5s开始尝试:
python models/export.py --weights yolov5s.pt --img 640 --batch 1如果下载速度慢,可以手动下载权重文件(https://github.com/ultralytics/yolov5/releases),然后放到项目根目录下。
现在我们可以运行第一个目标检测demo了!YOLOv5自带了一些测试图片,位于data/images目录下。运行detect.py脚本:
python detect.py --source data/images/bus.jpg --weights yolov5s.pt第一次运行可能会有点慢,因为需要加载模型。完成后,检测结果会保存在runs/detect/exp目录下。打开生成的图片,你应该能看到类似这样的输出:
image 1/1 /path/to/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, Done. (0.189s)这说明检测到了4个人、1辆公交车和1个停车标志。如果你的输出和这个类似,恭喜你!已经成功运行了第一个YOLOv5目标检测模型。
3. 常见问题排查与优化
新手在运行YOLOv5时经常会遇到几个典型问题。我整理了自己踩过的坑和解决方案:
问题1:CUDA out of memory这是因为显卡显存不足。可以尝试以下解决方案:
- 减小输入图像尺寸:添加--img 320参数
- 使用更小的模型:比如yolov5s.pt
- 在detect.py中减小batch size
问题2:No module named 'xxx'这是缺少Python依赖包导致的。解决方法是:
- 检查是否激活了正确的conda环境
- 重新运行pip install -r requirements.txt
- 手动安装缺失的包:pip install xxx
问题3:检测结果不准确可能是模型权重没有正确加载。检查:
- 权重文件路径是否正确
- 权重文件是否完整下载(yolov5s.pt约27MB)
- 是否使用了正确的模型版本
为了提高检测速度,可以尝试以下优化:
- 添加--half参数使用半精度推理
- 使用TensorRT加速(需要NVIDIA显卡)
- 减小输入图像尺寸(但会影响精度)
4. 进阶使用:自定义数据检测
成功运行示例后,你可能想检测自己的图片。这很简单,只需要修改--source参数:
python detect.py --source /path/to/your/image.jpg --weights yolov5s.pt对于视频文件也同样适用:
python detect.py --source /path/to/your/video.mp4 --weights yolov5s.pt如果想实时查看检测结果,可以添加--view-img参数:
python detect.py --source 0 --weights yolov5s.pt --view-img这会调用你的摄像头进行实时检测。按'q'键可以退出实时检测模式。
检测结果的保存路径默认在runs/detect/exp,每次运行都会新建一个文件夹。如果你想覆盖之前的检测结果,可以添加--exist-ok参数:
python detect.py --source data/images --weights yolov5s.pt --exist-ok对于批量处理图片,可以直接指定文件夹路径:
python detect.py --source /path/to/your/images --weights yolov5s.ptYOLOv5会自动处理文件夹下的所有图片,并将检测结果保存在runs/detect/exp目录下。