YOLOv5训练和推理
YOLOv5训练和推理
文章目录
前言
前面记录了YOLOX的使用,本节继续探讨YOLO系类之YOLOv5。
一、搭建YOLOv5环境
1.官网下载YOLOv5稳定版本
[Github官网YOLOv5的zip包](https://github.com/ultralytics/yolov5/tree/v6.2)
zip包解压后进入当前目录
2.创建conda虚拟环境
conda create -n yolov5 python=3.8
conda activate yolov5
3.pytorch环境安装
为自己的显卡选择合适的pytorch版本
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
pip show torch
4.YOLOv5环境安装
pip install -r requirements.txt
二、使用步骤
1.推理测试
从官网下载一个模型比如最小模型yolov5s.pt
python detect.py --weights yolov5s.pt --source data/images/zidane.jpg
结果保存在runs/detect/exp
使用自己的模型推理
python detect.py --weights runs/train/exp11/weights/best.pt --source datasets/pig_coco/images/val2017/0020.jpg --data data/pig_coco.yaml
2.onnx模型测试
安装onnx环境
pip install -r requirements.txt onnx onnx-simplifier onnxruntime-gpu
yolov5.pt导出为yolov5.onnx
python export.py --weights yolov5s.pt --include onnx
自己训练的模型导出
python export.py --weights runs/train/exp16/weights/best.pt --include torchscript onnx --data data/pig_coco.yaml
onnx推理测试
python detect.py --weights yolov5s.onnx --source data/images/zidane.jpg
三、标注训练自己的模型
1.标注数据
推荐使用labelImg标注yolo数据集格式
2.推理测试
使用默认的coco128数据训练
python train.py --img 640 --batch-size 16 --epochs 10 --data data/coco128.yaml --weights yolov5s.pt --device '0'
使用自己的数据训练,根据coco128.yaml编辑自己的yaml(仿造coco128制作自己的数据集)
训练自己的三个类别模型
python train.py --img 640 --batch-size 32 --epochs 100 --data data/pig_coco.yaml --weights yolov5s.pt --device '0'
推理
python detect.py --weights runs/train/exp11/weights/best.pt --source datasets/pig_coco/images/val2017/0020.jpg --data data/pig_coco.yaml
四、遇到的问题
1.问题1
现象:AttributeError: module ‘numpy‘ has no attribute ‘int‘.
原因:numpy版本不匹配,降低版本会影响其他库,只能修改源码
比如:utils/dataloaders.py里面的np.int改为np.int_
2.问题2
现象:coco格式转yolo格式数据集出现“TypeError: must be real number, not NoneType”
原因:背景类没有标签。修改代码跳过这个背景标签,再出错行上面
修改:
使用早期标注的coco数据集格式转yolo时出现,后面使用labelImg直接标注YOLO格式数据集就可以了。
3.问题3
现象:AttributeError: ‘FreeTypeFont’ object has no attribute ‘getsize’
原因:高版本因pip install tf-models-official删除了该getsize 功能
解决:
pip install Pillow==9.5
4.问题4
现象:handleNode DNN/ONNX: ERROR during processing node with 1 inputs and 1 outputs: [Identity]:(onnx::Reshape_475)
原因:torch1.12.x以上的版本要改成False,导出onnx的时候就可以正常使用了
解决:
总结
本文仅作为在YOLOv5学习过程中的笔记记录,有问题欢迎交流~~~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!