基于Yolov8的工业小目标缺陷检测实战(2):动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023

目录

1.工业油污数据集介绍

1.1 小目标定义

1.2 难点

 1.3 工业缺陷检测算法介绍

1.3.1 YOLOv8

2.Dynamic Snake Convolution

2.1 Dynamic Snake Convolution加入到yolov8

 3.训练结果分析

4.系列篇


1.工业油污数据集介绍

三星油污缺陷类别:头发丝和小黑点,["TFS","XZW"] 

数据集大小:660张,包括部分良品图像,提升背景检测能力。

数据集地址:https://download.csdn.net/download/m0_63774211/87741209

缺陷特点:小目标缺陷,检测难度大,如下图所示;

1.1 小目标定义

1)以物体检测领域的通用数据集COCO物体定义为例,小目标是指小于32×32个像素点(中物体是指32*32-96*96,大物体是指大于96*96);
2)在实际应用场景中,通常更倾向于使用相对于原图的比例来定义:物体标注框的长宽乘积,除以整个图像的长宽乘积,再开根号,如果结果小于3%,就称之为小目标;

1.2 难点

1)包含小目标的样本数量较少,这样潜在的让目标检测模型更关注中大目标的检测;

2)由小目标覆盖的区域更小,这样小目标的位置会缺少多样性。我们推测这使得小目标检测的在验证时的通用性变得很难;

3)anchor难匹配问题。这主要针对anchor-based方法,由于小目标的gt box和anchor都很小,anchor和gt box稍微产生偏移,IoU就变得很低,导致很容易被网络判断为negative sample;

4)它们不仅仅是小,而且是难,存在不同程度的遮挡、模糊、不完整现象;

 1.3 工业缺陷检测算法介绍

工业缺陷检测最受欢迎的深度学习框架分别是Paddle和Pytorch,其中最受欢迎的检测算法是YOLOv8、YOLOV5和PP-YOLOE,本文通过YOLOv8进行缺陷检测能力提升。

1.3.1 YOLOv8

        Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

具体改进如下:

Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

PAN-FPN:毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块;

Decoupled-Head:是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

样本匹配:YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

2.Dynamic Snake Convolution

论文: 2307.08388.pdf (arxiv.org)

摘要:血管、道路等拓扑管状结构的精确分割在各个领域都至关重要,确保下游任务的准确性和效率。 然而,许多因素使任务变得复杂,包括薄的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这些知识来指导我们的 DSCNet 在三个阶段同时增强感知:特征提取、特征融合、 和损失约束。 首先,我们提出了一种动态蛇卷积,通过自适应地关注细长和曲折的局部结构来准确捕获管状结构的特征。 随后,我们提出了一种多视图特征融合策略,以补充特征融合过程中多角度对特征的关注,确保保留来自不同全局形态的重要信息。 最后,提出了一种基于持久同源性的连续性约束损失函数,以更好地约束分割的拓扑连续性。 2D 和 3D 数据集上的实验表明,与多种方法相比,我们的 DSCNet 在管状结构分割任务上提供了更好的准确性和连续性。 我们的代码是公开的。 

        主要的挑战源于细长微弱的局部结构特征与复杂多变的全局形态特征。本文关注到管状结构细长连续的特点,并利用这一信息在神经网络以下三个阶段同时增强感知:特征提取、特征融合和损失约束。分别设计了动态蛇形卷积(Dynamic Snake Convolution),多视角特征融合策略与连续性拓扑约束损失。 

         我们希望卷积核一方面能够自由地贴合结构学习特征,另一方面能够在约束条件下不偏离目标结构太远。在观察管状结构的细长连续的特征后,脑海里想到了一个动物——。我们希望卷积核能够像蛇一样动态地扭动,来贴合目标的结构。

2.1 Dynamic Snake Convolution加入到yolov8

核心代码:

class DySnakeConv(nn.Module):
    def __init__(self, inc, ouc, k=3) -> None:
        super().__init__()
        
        self.conv_0 = Conv(inc, ouc, k)
        self.conv_x = DSConv(inc, ouc, 0, k)
        self.conv_y = DSConv(inc, ouc, 1, k)
    
    def forward(self, x):
        return torch.cat([self.conv_0(x), self.conv_x(x), self.conv_y(x)], dim=1)

详见:

首发Yolov8涨点神器:动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023_AI小怪兽的博客-CSDN博客

 3.训练结果分析

训练结果如下:

原始[email protected] 0.679提升至0.743

YOLOv8-C2f-DySnakeConv summary: 249 layers, 3425894 parameters, 0 gradients, 8.7 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 2/2 [00:04<00:00,  2.15s/it]
                   all         66        187      0.722      0.668      0.743      0.342
                   TFS         66        130      0.582        0.6      0.638      0.295
                   XZW         66         57      0.862      0.737      0.847      0.388

详见:https://cv2023.blog.csdn.net/article/details/133125904

4.系列篇

1)基于Yolov8的工业小目标缺陷检测(1)

2) 动态蛇形卷积 | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023 

3)多检测头提升小目标检测精度

猜你喜欢

转载自blog.csdn.net/m0_63774211/article/details/133125347