本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。
B站配套视频:https://www.bilibili.com/video/BV1or421T74f
数据训练
上一篇博客里面我们已经获得了标注好的数据以及图片,接下来我们就要开始训练过程。
数据整备阶段
首先在yolov5的目录下创建一个datasets目录,这一步是个人习惯,我们将要训练的数据都会放在这里。
所有的数据需要按照目录规范进行放置,通常train、val的分配比例为8:2,images和labels里面的内容需要对应。
yaml文件准备阶段
编写数据说明文件和结构说明文件,找到data目录下创建一个yaml文件,此处以我个人创建的举例。
数据yaml文件
可以直接复制目录中的coco128.yaml进行修改,将其中的download部分删掉。然后更具自己数据的存放路径进行配置。
train 写训练图片的完整路径,经过多次尝试,写相对路径会有问题。
val 写验证图片的完整路径。系统会自动找到对应的labels目录。
test 可以不用写,对训练结果不会有影响。
nc 写你需要识别的数量。
names 写你需要识别的类别,此处循序一定要注意。
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
# └── coco128 ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
# path: ../datasets/cx # dataset root dir
train: /app/docs/yolov5_v7.0/datasets/cx/images/train # train images (relative to 'path') 128 images
val: /app/docs/yolov5_v7.0/datasets/cx/images/train # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
nc: 2 # number of classes
names: ['good','bad'] # class names
结构yaml文件
打开model目录,找到下面的yaml文件,此处系统已经默认了一些模型文件。通常不需要进行模型魔改的情况下可以基于pt训练,如果需要魔改模型需要自己重新设置一个yaml文件。此处举例看一下。
下文是一个修改后的s模型文件,主要修改的就是nc,其他内容如果没有学习过模型魔改就不要动。
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 2 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326]