【目标检测论文解读复现NO.33】改进YOLOv5的新能源电池集流盘缺陷检测方法

news/2024/11/8 3:16:48/
前言
此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮助大家解答疑惑。解读的系列文章,本人已进行创新点代码复现,有需要的朋友可关注私信我。本文仅对论文代码实现,如果原文章的作者觉得不方便,请联系删除,尊重每一位论文作者。

一、摘要

针对新能源汽车电池集流盘中因目标缺陷分布杂乱、尺寸跨度大和特征模糊而易出现误检、漏检的问题,提出一种基于多尺度可变形卷积的YOLOv5方法(YOLOv5s-4Scale-DCN),以用于汽车电池集流盘缺陷检测。首先,针对不同尺度的缺陷目标,在YOLOv5模型的基础上新增检测层,通过捕获不同尺度缺陷的特征以及融合不同深度的语义特征,提高对不同尺度缺陷目标的检测率;其次,引入可变形卷积,扩大特征图的感受野,使提取的特征辨析力更强,有效地提高了模型的缺陷识别能力。实验结果表明,所提的YOLOv5s-4Scale-DCN算法可以有效检测新能源汽车电池集流盘缺陷,m AP达到了91%,相较原算法提高了2.5%,FPS达到了113.6,重度不良和无盖缺陷这两种类别的缺陷,检测召回率达到了100%,满足新能源汽车电池集流盘缺陷实时检测要求。

二、网络模型及核心创新点

1.新增检测层

2.引入可形变卷积

```
第二步:定义yaml网络结构文件。
```python
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc: 4  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # 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# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, DCNConv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [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, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]```

三、应用数据集(模型构建过程)

本文实验所用的数据集为自行构建,使用从生产线上收集的真实磷酸铁锂汽车电池集流盘缺陷数据,由高分辨率巴斯勒工业相机在光线良好的室内环境下进行拍摄采集。原始图像分辨率为2448×2048,在预处理阶段通过Python以电极孔为中心对原始图像进行裁剪,去除无关背景,保留有用信息,截取之后的图像分辨率为1250×1200。使用Lableme数据标注工具对图片进行标注,标注后自动生成JSON格式的文件,文件名与图片名始终保持一致。

图8为良品图像和常见的5种新能源汽车电池集流盘缺陷类型:焊穿(Weld through)、焊偏(Welding offset)、无盖(No cover)、坏点(Bad point)、重度不良(Severely bad)。

四、实验效果(部分展示)

为了评估算法性能,我们将本文提出的YOLOv5s-4Scale-DCN改进算法与YOLOv5s、YOLOv5l、YOLOv5m、YOLOv5n、YOLOv5x、YOLOv7、YOLOv tiny、YOLOv7x、Faster R-CNN[26]和SSD[27]10种经典算法在自制据集上进行检测性能比较,所有实验均在相同参数设置下进行。

实验结果如表4所示,由表4可知,改进后的算法,mAP达到了91.0%,FPS达到了113.6,相比其他算法综合效果最佳。

五、实验结论

综上所述,改进后的YOLOv5s-4Scale-DCN算法漏检率低、误检率低、识别精度高、检测速度快,综合性能更强,有效降低了误检率、漏检率。

六、投稿期刊介绍

注:论文原文出自 陈彦蓉,高刃,吴文欢,唐海,袁磊.改进YOLOv5的新能源电池集流盘缺陷检测方法[J/OL].电子测量与仪器学报.

https://kns.cnki.net/kcms/detail/11.2488.TN.20230307.1403.010.html

解读的系列文章,本人已进行创新点代码复现。


http://www.ppmy.cn/news/31198.html

相关文章

ARM uboot 的移植3 -从 uboot 官方标准uboot开始移植

一、选择合适的官方原版 uboot 1、官方原版 uboot 的版本 (1) 版本号。刚开始是 1.3.4 样式,后来变成 2009.08 样式。 (2) 新版和旧版的差别。uboot 的架构很早就定下来了,然后里面普遍公用的东西(common 目录下、drivers 目录下、fs 目录…

如何使用码匠连接 CouchDB

目录 在码匠中集成 CouchDB 在码匠中使用 CouchDB 关于码匠 CouchDB 是一种开源的 NoSQL 数据库服务,它使用基于文档的数据模型来存储数据。CouchDB 的数据源提供了高度可扩展性、高可用性和分布式性质。它支持跨多个节点的数据同步和复制,可以在多个…

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.57】引入可形变卷积

文章目录前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列…

Mysql问题:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

1 问题描述 使用Navicat连接到MySQL(版本:8.0.18),执行查询: select * from t_user WHERE user_name admin查询结果没有问题,但是报错: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY claus…

(枚举)(模拟)(前缀和)(数组模拟哈希)(可二分)1236. 递增三元组

目录 题目链接 一些话 流程 套路 ac代码 题目链接 1236. 递增三元组 - AcWing题库 一些话 int f[N]; memset(f,0,sizeof f)影响不到f[N] 所以尽量不要对f[N]赋值,不要用f[N]操作 流程 //由三重暴力i,j,k因为三重暴力底下是分别用i和j,j和k作比较…

SpringBoot - 什么是跨域?如何解决跨域?

什么是跨域? 在浏览器上当前访问的网站,向另一个网站发送请求,用于获取数据的过程就是跨域请求。 跨域,是浏览器的同源策略决定的,是一个重要的浏览器安全策略,用于限制一个 origin 的文档或者它加载的脚本…

python带你成功复刻热门手机游戏——飞翔的小鸟

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 飞翔的小鸟(游戏英文名:Flappy Bird) 一款由越南独立开发者开发的手机游戏,是之前非常流行的一款手机游戏 小游戏目标:让小鸟穿过管子,不要碰到任何物体…

23种设计模式-迭代器模式(安卓应用场景介绍)

迭代器模式是一种行为型设计模式,它允许你在不暴露集合对象内部结构的情况下遍历集合中所有元素。在本文中,我们将介绍迭代器模式的概念和原理,提供一个基于Java的示例,并探讨在Android应用程序开发中的实际应用。 迭代器模式的概…