此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮助大家解答疑惑。解读的系列文章,本人已进行创新点代码复现,有需要的朋友可关注私信我。
针对整车原木检测中存在密集小目标难检测、原木被遮挡易被漏检、目标检测模型复杂度太大难以部署等问题,提出一种基于YOLOv5的整车原木数量检测方法 TWD⁃YOLOv5,来探究目标检测在整车原木场景下进行快速精准检测的可行性,从而实现智能检尺,提高检尺效率。 本研究在原始YOLOv5模型的基础上通过修改模块数量、加入注意力机制和 Transformer 模块的操作来优化主干网络,结合新的检测尺度与基于Ghost卷积设计特征融合网络,提升网络检测小目标的能力,降低模型复杂度,选用 CIoU 作为边界框回归的损失函数和DIoU⁃NMS 作为边界框筛选算法,提高边框的回归精度和解决物体被遮挡的问题。 本研究算法 TWD⁃YOLOv5进行4组试验,从平均精度均值(mAP)、每秒传输帧数、原木真检率多种尺度指标进行评估,同时通过预测框完成对原木根数的计数。 试验结果表明,本研究方法的mAP达到 0.731,每秒传输帧数为7.33,模型参数降低40.5%,且测试集原木真检率达到了99.551%,误检率为0.22%。 该方法不仅大幅减少了模型复杂度,还保持了较高的检测精度。 本研究的模型能对整车原木场景下的原木有良好的检测效果,解决了原木被遮挡的问题,且检测速度快,能做到实时检测,另外该算法有较强的鲁棒性且模型较小,可以满足部署至移动端进行目标检测的轻量化需求。
1.优化 CSP结构
2.加入增强全局特性的 Transformer模块
3.基于Ghost卷积的特征融合结构改进
4.改进的损失函数
复现yaml如下,完整项目代码请关注私信获取。
# YOLOv5 by Ultralytics, GPL-3.0 license
# Parameters
nc: 1 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.5 # layer channel multiple
anchors:
- [5,6, 8,14, 15,11]
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3CBAM, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3CBAM, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, CTR3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head:
[ [ -1, 1, GhostConv, [ 512, 1, 1 ] ],#20*20
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
[ -1, 3, C3Ghost, [ 512, False ] ], # 13
[ -1, 1, GhostConv, [ 512, 1, 1 ] ], #40*40 14
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3 80*80
[ -1, 3, C3Ghost, [ 512, False ] ], # 17 (P3/8-small) 80*80
[ -1, 1, GhostConv, [ 256, 1, 1 ] ],
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 2 ], 1, Concat, [ 1 ] ], # cat backbone P3
[ -1, 3, C3Ghost, [ 256, False ] ], # 17 (P3/8-small)21
[ -1, 1, GhostConv, [ 256, 3, 2 ] ],
[ [ -1, 18 ], 1, Concat, [ 1 ] ], # cat head P4
[ -1, 3, C3Ghost, [ 256, False ] ], # 20 (P4/16-medium)24
[ -1, 1, GhostConv, [ 256, 3, 2 ] ], #22 80*80
[ [ -1, 14 ], 1, Concat, [ 1 ] ], #23 80*80
[ -1, 3, C3Ghost, [ 512, False ] ], #24 80*80
[ -1, 1, Conv, [ 512, 3, 2 ] ],
[ [ -1, 10 ], 1, Concat, [ 1 ] ], # cat head P5
[ -1, 3, C3Ghost, [ 1024, False ] ], # 23 (P5/32-large)
[ [ 21, 24, 27,30 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5)
]
该研究的数据来源于福建金森林业股份有限公司某原木货场,使用 1600×1200像素分辨率的NV201E工业相机以及手机相机等设备进行图像采集。 经过筛选,挑选出107张整车原木图片构建图像数据集,将采集到的数据进行整理和筛选,用lable 软件对采集到的图片中所有的原木轮廓进行标注,构建车装原木数据集,标注原木13134个,模型能够学习到标注出的原木特征。
注:论文原文出自——余鸿晖, 郑积仕, 张世文, 等. 基于改进YOLOv5的整车原木数量检测方法.林业工程学报[C],2022, 7(4): 135-143.