训练属于自己的Yolov5模型,从打标签到训练全过程

yolov5模型结构:
20201109151413529.png

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用于保存模型。
image.png

3.2 运行detect.py

在cmd中运行./detect.py,用默认提供的图片进行识别,默认图片保存在./data/images,输入以下命令即可。(还有更多参数可见附录)

python detect.py --weights yolov5s6.pt --source ./data/images/bus.jpg

运行成果后会在./runs/detect/exp1目录下生成检测结果图片
bus.jpg

4、训练自己的数据集

4.1 搜集数据并进行标注

在这里我将教会模型识别人参的性状,首先我上网爬取了149张人参的图片并使用labelImg
进行标注(可自行上网查找并安装)。在这里我将图片保存在./data/images/renshen/images目录下,将标签存放在./data/images/renshen/labels目录下。
标注前图片:
000000.jpg
标注后图片:
image.png
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文件夹下。
image.png

4.5 测试模型

训练完成后,我随意找了一张模型没有见过的图片进行探测,这里依然用官方提供的detect.py脚本进行测试,输入以下代码

python detect.py --weights ./runs/train/exp3/weights/best.pt --source ./data/images/renshen/images/000298.jpg

检测结果如下,由于使用了中文,可能遇到了编码问题,暂时还未解决。
rs.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值