💡💡💡本文摘要:一种基于YOLO改进的高效且轻量级的表面缺陷检测, 在NEU-DET和GC10-DET任务中涨点明显
目录
1.轻量且高效的YOLO
1.1 SCRB介绍
1.1.1 ScConv介绍
1.2 GSConvns
1.3 od_mobilenetv2_050
1.4 对应yaml
2.实验结果
3.源码获取
1.轻量且高效的YOLO
轻量且高效的YOLO网络结构
1.1 SCRB介绍
其实ScConv和Bottleneck的基础上,和C3进行结合。
1.1.1 ScConv介绍
原文链接:Yolov8引入CVPR2023 SCConv:空间和通道重建卷积,即插即用,助力检测_scconv 2023-CSDN博客
论文:https://openaccess.thecvf.com/content/CVPR2023/papers/Li_SCConv_Spatial_and_Channel_Reconstruction_Convolution_for_Feature_Redundancy_CVPR_2023_paper.pdf
卷积神经网络(CNN)已经实现在各种计算机视觉任务中表现出色,但这是以巨大的计算成本为代价的资源,部分原因是卷积层提取冗余特征。 在本文中,我们尝试利用特征之间的空间和通道冗余,针对 CNN 压缩,提出了一种高效的卷积模块,称为 SCConv(空间和通道重建卷积),以减少冗余计算,并促进代表性特征学习。 提出的 SCConv 由两个单元组成:空间重建单元(SRU)和通道重建单元(CRU)。 SRU利用分离重建方法来抑制空间冗余,而CRU使用分割-变换-融合策略来减少通道冗余。 此外,SCConv 是一个即插即用的架构单元,可以可以直接用来替代各种卷积神经网络中的标准卷积。 实验结果表明SCConv 嵌入式模型能够实现更好的效果
通过减少冗余特征来显着降低复杂性和计算成本来提高性能。
SCConv 的结构包括了空间重建单元(SRU)和通道重建单元(CRU)。 下图显示了我们的 SCConv 模块添加在 ResBlock 中的确切位置 。
SRU结构:
CRU结构:
1.2 GSConvns
YoloV8优化:轻量级Slim-Neck | 即插即用系列_slim-neck 是怎么改进-CSDN博客
论文地址:https://arxiv.org/ftp/arxiv/papers/2206/2206.02424.pdf
github: GitHub - AlanLi1997/slim-neck-by-gsconv: Pytorch implementation of the 'Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles'
本文贡献:
-
引入了一种新方法
GSConv
来代替SC
操作。该方法使卷积计算的输出尽可能接近SC
,同时降低计算成本; -
提供了一种新的设计范式,即带有标准
Backbone
的Slim-Neck
设计;
图2(a)和(b)展示了深度可分离卷积(DSC
)和标准卷积(SC)的网络结构,但是深度可分离卷积这种设陷导致特征提取和融合能力比 SC
低得多。
为了使 DSC
的输出尽可能接近 SC
,引入了一种新方法——GSConv
,使用 shuffle
将 SC
生成的信息(密集卷积操作)渗透到 DSC
生成的信息的每个部分。
采用 GSConv 方法的 Slim-Neck 可缓解 DSC 缺陷对模型的负面影响,并充分利用深度可分离卷积 DSC 的优势。
1.3 od_mobilenetv2_050
其实就是od_mobilenetv2_050替换了backbone
1.4 对应yaml
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.25 # 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] # P5/32# 0-P1/2
# 1-P2/4
# 2-P3/8
# 3-P4/16
# 4-P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, od_mobilenetv2_050, [odconv4x mobilenetv2 050.pth.tar path, 4]], # 4[-1, 1, SPPF, [1024, 5]], # 5]# YOLOv5 v6.0 head
head:[[-1, 1, GSConvns, [512, 1, 1]], # 6[-1, 1, nn.Upsample, [None, 2, 'nearest']],# 7[[-1, 3], 1, Concat, [1]], # cat backbone P4 8[-1, 3, SCRB, [512, False]], # 9[-1, 1, GSConvns, [256, 1, 1]], # 10[-1, 1, nn.Upsample, [None, 2, 'nearest']], # 11[[-1, 2], 1, Concat, [1]], # cat backbone P3 12[-1, 3, SCRB, [256, False]], # 13 (P3/8-small)[-1, 1, GSConvns, [256, 3, 2]], # 14[[-1, 10], 1, Concat, [1]], # cat head P4 15[-1, 3, SCRB, [512, False]], # 16 (P4/16-medium)[-1, 1, GSConvns, [512, 3, 2]], # 17[[-1, 5], 1, Concat, [1]], # cat head P5 18[-1, 3, SCRB, [1024, False]], # 19 (P5/32-large)[[13, 16, 19], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)]
2.实验结果
我们的方法在NEU-DET和GC10-DET上取得了更好的性能。具体指标见表一、表二。
NEU-DEU任务
GC10-DET任务PR result plot on NEU-DET
PR result plot on GC10-DET
Visualization of detection results
3.源码获取
可私信获取