yolov5模型结构:
1、下载yolov5
下载链接:https://github.com/ultralytics/yolov5
目录结构如下:
卷 OS 的文件夹 PATH 列表
卷序列号为 0000001E 1A52:341F
C:\USERS\User\DOWNLOADS\YOLOV5-MASTER
│ .dockerignore
│ .gitattributes
│ .gitignore
│ .pre-commit-config.yaml
│ CONTRIBUTING.md
│ detect.py
│ Dockerfile
│ export.py
│ hubconf.py
│ LICENSE
│ README.md
│ requirements.txt
│ setup.cfg
│ train.py
│ tutorial.ipynb
│ val.py
│
├─.github
│ │ dependabot.yml
│ │ FUNDING.yml
│ │
│ ├─ISSUE_TEMPLATE
│ │ bug-report.yml
│ │ config.yml
│ │ feature-request.yml
│ │ question.yml
│ │
│ └─workflows
│ ci-testing.yml
│ codeql-analysis.yml
│ greetings.yml
│ rebase.yml
│ stale.yml
│
├─data
│ │ Argoverse.yaml
│ │ coco.yaml
│ │ coco128.yaml
│ │ GlobalWheat2020.yaml
│ │ Objects365.yaml
│ │ SKU-110K.yaml
│ │ VisDrone.yaml
│ │ VOC.yaml
│ │ xView.yaml
│ │
│ ├─hyps
│ │ hyp.finetune.yaml
│ │ hyp.finetune_objects365.yaml
│ │ hyp.scratch-high.yaml
│ │ hyp.scratch-low.yaml
│ │ hyp.scratch-med.yaml
│ │ hyp.scratch.yaml
│ │
│ ├─images
│ │ bus.jpg
│ │ zidane.jpg
│ │
│ └─scripts
│ download_weights.sh
│ get_coco.sh
│ get_coco128.sh
│
├─models
│ │ common.py
│ │ experimental.py
│ │ tf.py
│ │ yolo.py
│ │ yolov5l.yaml
│ │ yolov5m.yaml
│ │ yolov5n.yaml
│ │ yolov5s.yaml
│ │ yolov5x.yaml
│ │ __init__.py
│ │
│ └─hub
│ anchors.yaml
│ yolov3-spp.yaml
│ yolov3-tiny.yaml
│ yolov3.yaml
│ yolov5-bifpn.yaml
│ yolov5-fpn.yaml
│ yolov5-p2.yaml
│ yolov5-p34.yaml
│ yolov5-p6.yaml
│ yolov5-p7.yaml
│ yolov5-panet.yaml
│ yolov5l6.yaml
│ yolov5m6.yaml
│ yolov5n6.yaml
│ yolov5s-ghost.yaml
│ yolov5s-transformer.yaml
│ yolov5s6.yaml
│ yolov5x6.yaml
│
└─utils
│ activations.py
│ augmentations.py
│ autoanchor.py
│ autobatch.py
│ benchmarks.py
│ callbacks.py
│ datasets.py
│ downloads.py
│ general.py
│ loss.py
│ metrics.py
│ plots.py
│ torch_utils.py
│ __init__.py
│
├─aws
│ mime.sh
│ resume.py
│ userdata.sh
│ __init__.py
│
├─flask_rest_api
│ example_request.py
│ README.md
│ restapi.py
│
├─google_app_engine
│ additional_requirements.txt
│ app.yaml
│ Dockerfile
│
└─loggers
│ __init__.py
│
└─wandb
log_dataset.py
README.md
sweep.py
sweep.yaml
wandb_utils.py
__init__.py
2、安装所需依赖包
这里直接使用pip进行安装,所需依赖包都在./requirement.txt中,只需在cmd中进入当前目录,运行下面代码即可自动安装
pip install requirement.txt
3、测试环境是否能运行
3.1 下载预训练好的模型
https://github.com/ultralytics/yolov5/releases,可根据自己的电脑配置和需求,选择对应模型,后缀名为.pt,不同版本的速度和精度会有所不同。下载完后可在yolov5-master目录下新建一个目录weights用于保存模型。
3.2 运行detect.py
在cmd中运行./detect.py,用默认提供的图片进行识别,默认图片保存在./data/images,输入以下命令即可。(还有更多参数可见附录)
python detect.py --weights yolov5s6.pt --source ./data/images/bus.jpg
运行成果后会在./runs/detect/exp1目录下生成检测结果图片
4、训练自己的数据集
4.1 搜集数据并进行标注
在这里我将教会模型识别人参的性状,首先我上网爬取了149张人参的图片并使用labelImg
进行标注(可自行上网查找并安装)。在这里我将图片保存在./data/images/renshen/images目录下,将标签存放在./data/images/renshen/labels目录下。
标注前图片:
标注后图片:
labelImg标注软件可将所标注区域的矩阵保存为yolo模型认识的标签。
4.2 划分数据集
打完标签以后,可运用脚本或者手动将数据集分为训练集、验证集、测试集,由于数据量少,我在这里只分了训练集和测试集,文件目录树如下
├─train
│ ├─images
│ └─labels
└─valid
├─images
└─labels
4.3 训练前配置
自行建立一个配置文件,在这里我命名为renshen.yaml,输入以下内容
path: ./data/images/renshen # dataset root dir
train: train/images # train images (relative to 'path')
val: valid/images # train images (relative to 'path')
#test: test-dev2017.txt
nc: 1 #有几类就写几
names: ["人参"] #此处为具体类别,如果是中文,则需要修改一些编码,此处忽略。
4.4 进行训练
输入以下代码并运行
python train.py --img 640 --batch 16 --epochs 5 --data ./data/data.yaml --cfg ./models/yolov5s.yaml --weights ./weights/yolov5s6.pt
# epochs 训练次数
# img 输入图片大小
# data 模型配置
# cfg 训练数据配置
# ... 更多参数见附录
如果出现以下错误,参考文章https://blog.csdn.net/weixin_51697369/article/details/120101292解决:
OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "D:\....
模型训练完成后会在./runs./train./exp1目录下生成训练结果,在这里我使用了tensorboard进行了可视化展示,训练完成的模型会保存在./runs./train./exp1/weights文件夹下。
4.5 测试模型
训练完成后,我随意找了一张模型没有见过的图片进行探测,这里依然用官方提供的detect.py脚本进行测试,输入以下代码
python detect.py --weights ./runs/train/exp3/weights/best.pt --source ./data/images/renshen/images/000298.jpg
检测结果如下,由于使用了中文,可能遇到了编码问题,暂时还未解决。