yolov5目标检测

2023-12-14 13:45:29

一、安装

1.源码下载

git clone git://github.com/ultralytics/yolov5.git

cd yolov5

2.环境配置

conda create -n yolov5 python=3.8

conda activate yolov5

nvcc -V查看cuda版本

pytorch官网下载对应版本,例如当cuda版本为11.6

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3.权重下载

  1. https://github.com/ultralytics/yolov5

  2. 点击右侧Releases

  3. 最下方Assets中点击下载相应模型(yolov5s.pt)

4.测试

python3 detect.py --source data/image --weights yolov5s.pt

二、数据集

1.数据集准备

新建dataset文件夹 (名字可自定义)

新建images和labels文件夹 (名字不能错)

images和labels内分别新建train和val文件夹 (名字不能错)

将准备的图像按大致8 : 2随机分配,放入images的train和val文件夹内,作为训练集和验证集

labels文件夹将存放之后生成的txt格式标签

如图:

2.数据标注

推荐使用Roboflow

每类图片数量大于1500张 (不同场景上下浮动)

每类图片的实例(标注的数量)大于10000 (同上)

图片多样性: 不同光照,不同角度最重要

标签一致性: 不能有漏标的待检测物体

标签准确性: 标签需紧贴被标物体,不留空隙,不能漏标

背景图: 在训练集中加入0~10%的背景图(没有任何标注),以减少假阳性/过拟合 (防止将背景的特征误认为是物体的特征)

三、训练

1.准备

1.在data文件夹内修改或创建data.yaml (文件名可自定义)
  • train和val 指定训练集和测试集的图片所在文件夹路径

  • nc 为训练的classes数量

  • names 为标签名,需要和classes.txt顺序一一对应

2.修改models文件夹中对应预训练模型的yaml文件
  • 只需修改nc为你训练的classes数量

2.本地训练

cd yolov5 python train.py --img 640 --batch 16 --epochs 300 --data data/data.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0

参数说明

img 图片大小

device 使用cpu或者gpu

batch batch-size 和显卡性能有关,在能设的范围内越大越好,最好为2的倍数(玄学)

epochs 训练迭代次数

data 指定之前修改的data/data.yaml

cfg 模型结构配置文件

weights 允许练模型权重

resume 如果指定–resume则可以继续上次中断的训练

workers 多线程

训练效果

  • 随着训练进度,mAP@.5将从0趋近1

  • 观察多少epochs之后mAP开始趋近1,则模型收敛

  • 训练过程中best和last模型会实时保存到runs/train/expn/weights中

3.官方建议

训练小模型或中模型建议使用预训练模型

训练大模型建议不用预训练模型,从头开始训练

使用P6模型作为预训练模型可以提高精度,但是会减慢速度,P6模型image size为1280

初始epochs设为300,如果过拟合减少epochs,欠拟合则增加epochs

默认image size 640,如果训练小物体检测可将image size设为1280

训练,测试和部署的image size应一致

使用硬件所允许最大的batch size

四、detect

python detect.py --source data/image --weights runs/train/weights/best.pt --device cpu

五、export

python export.py --data data/myjob.yaml --weights runs/train/weights/best.pt --device cpu --include onnx --opset 12

python detect.py --source data/image --weights runs/train/weights/best.onnx --device cpu

netron可视化onnx

一般使用int8量化

六、c++推理加速

git clone https://github.com/Hexmagic/ONNX-yolov5

mkdir build&&cd build

cmake ..

make -j4

cd ..

./build/main yolov5s.onnx data/images/zidane.jpg

七、打标工具

https://roboflow.com/

文章来源:https://blog.csdn.net/qq_34144750/article/details/134921303
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。