一种基于YOLO改进的高效且轻量级的表面缺陷检测网络, NEU-DET和GC10-DET涨点明显

本文主要是介绍一种基于YOLO改进的高效且轻量级的表面缺陷检测网络, NEU-DET和GC10-DET涨点明显,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💡💡💡本文摘要:一种基于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'

 本文贡献:

  1. 引入了一种新方法 GSConv 来代替 SC 操作。该方法使卷积计算的输出尽可能接近 SC,同时降低计算成本;

  2. 提供了一种新的设计范式,即带有标准 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.源码获取

可私信获取

这篇关于一种基于YOLO改进的高效且轻量级的表面缺陷检测网络, NEU-DET和GC10-DET涨点明显的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/613164

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程