基于美团发布的YOLOv6开发构建自己的个性化目标检测项目超详细教程

2024-01-09 11:31:06

超详细的系列教程文章以实现从零到完整独立构建出来自己的项目为首要目标,在前面系列的博文中,已经撰写了很多篇相关的文章,感兴趣的话可以自行移步阅读:
《基于yolov7开发实践实例分割模型超详细教程》

《YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程》

《基于官方YOLOv4-u5【yolov5风格实现】开发构建目标检测模型超详细实战教程【以自建缺陷检测数据集为例】》

《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》

《基于yolov5-v7.0开发实践实例分割模型超详细教程》

《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》

《轻量级模型NanoDet基于自己的数据集【接打电话检测】从零构建模型超详细教程》

?《基于自建数据集【海底生物检测】使用YOLOv5-v6.1/2版本构建目标检测模型超详细教程》

《超轻量级目标检测模型Yolo-FastestV2基于自建数据集【手写汉字检测】构建模型训练、推理完整流程超详细教程》?

《基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】》?

前面我们基于个性化的数据业务场景进行过很多实战项目的开发实践,最近看到有很多粉丝私信在自己构建YOLOv6模型的时候遇上了很多问题,想要能够出一期超详细的教程文章,可以看到:前文中yolov5、yolov7、yolov8都有撰写对应的超详细系列的文章,唯独缺少了yolov6,那么今天他来了。

Yolov6是美团开发的轻量级检测算法,截至目前为止该算法已经迭代到了4.0版本,每一个版本都包含了当时最优秀的检测技巧和最最先进的技术,YOLOv6的Backbone不再使用Cspdarknet,而是转为比Rep更高效的EfficientRep;它的Neck也是基于Rep和PAN搭建了Rep-PAN;而Head则和YOLOX一样,进行了解耦,并且加入了更为高效的结构。YOLOv6也是沿用anchor-free的方式,抛弃了以前基于anchor的方法。除了模型的结构之外,它的数据增强和YOLOv5的保持一致;而标签分配上则是和YOLOX一样,采用了simOTA;并且引入了新的边框回归损失:SIOU。
YOLOv5和YOLOX都是采用多分支的残差结构CSPNet,但是这种结构对于硬件来说并不是很友好。所以为了更加适应GPU设备,在backbone上就引入了ReVGG的结构,并且基于硬件又进行了改良,提出了效率更高的EfficientRep。RepVGG为每一个3×3的卷积添加平行了一个1x1的卷积分支和恒等映射的分支。这种结构就构成了构成一个RepVGG Block。和ResNet不同的是,RepVGG是每一层都添加这种结构,而ResNet是每隔两层或者三层才添加。RepVGG介绍称,通过融合而成的3x3卷积结构,对计算密集型的硬件设备很友好。

官方团队发表了两篇对应的论文,如下:

YOLOv6 v3.0: A Full-Scale Reloading

YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications

官方项目在这里,如下所示:

目前已经有5.4k的star量,还是很不错的了。

点击tags,可以看到历史发布版本,如下:

本文的目的就是选择最新的版本来开发构建自己的目标检测模型,点击0.4.1分支,如下:

下载源码包

可以看到这里0.4.1分支主要是做分割模型的。我们直接从主页面下载:

如下所示:
?

下载后本地解压缩,如下所示:

还是老样子,我习惯先删除掉本次实践开发用不到文件,目的是为了清洁简化项目结构能够一目了然,清理后如下:

weights是自己新建的目录用来存储官方提供的预训练模型,如下所示:

data目录下用来配置训练数据文件,如下所示:

self.yaml是我自己数据场景新建的训练数据配置文件,如下所示:

# Please insure that your custom_dataset are put in same parent dir with YOLOv6_DIR
train: ./dataset/images/train # train images
val: ./dataset/images/test # val images
test: ./dataset/images/test # test images (optional)

# whether it is coco dataset, only coco dataset should be set to True.
is_coco: False

# Classes
nc: 11  # number of classes

# class names
names: ['BiCyclist', 'Car', 'EngineTruck', 'HeavyTruck', 'LargeBus', 'LightTruck', 'MotorCyclist', 'Motorcycle', 'Pedestrian', 'Truck', 'van']


dataset目录存放的是自己的数据集,如果如何构建自己的数据集有问题的可以看我前面的超详细系列的博文,非常详细,有完整代码实现。

终端执行:

python tools/train.py --batch-size 16 --conf configs/yolov6n_finetune.py --data data/self.yaml --fuse_ab --device cpu --name yolov6n --epochs 100 --workers 2

日志输出如下:

这里我是使用的cpu来训练的,可以看到速度是比较慢的。

有GPU资源的可以直接使用GPU训练即可。

训练完成结果文件如下:

weights目录如下所示:

我一直都觉得yolov6在结果文件上跟yolov5、yolov7和yolov8不能比,没有任何对应的指标图表或者结果实例可以直观地来查看,感觉很鸡肋。

接下来看下离线推理效果,如下所示:

最轻量级的模型也有蛮不错的效果的,这里检测可视化效果我觉得yolov6要优于其他系列的模型。看到这里抓紧动手做起来吧!

?

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