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

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

一、摘要

针对新能源汽车电池集流盘中因目标缺陷分布杂乱、尺寸跨度大和特征模糊而易出现误检、漏检的问题,提出一种基于多尺度可变形卷积的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].电子测量与仪器学报.

改进YOLOv5的新能源电池集流盘缺陷检测方法 - 中国知网

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/21989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes v1.20 二进制部署

架构 k8s集群master01:192.168.80.101 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:192.168.80.102 k8s集群node01:192.168.80.103 kubelet kube-proxy docker k8s集群node02:192.168.80…

Vue3文字实现左右和上下滚动

可自定义设置以下属性&#xff1a; 滚动文字数组&#xff08;sliderText&#xff09;&#xff0c;类型&#xff1a;Array<{title: string, link?: string}>&#xff0c;必传&#xff0c;默认[] 滚动区域宽度&#xff08;width&#xff09;&#xff0c;类型&#xff1a…

git拉取代码时出现Filename too long错误Git处理长路径

背景 git拉取代码时出现Filename too long错误 现象 如下&#xff1a; $ git checkout . error: unable to create file boot-starters/permission-access-security-service-boot-starter/src/main/java/cn/gzs***/basic/system/platform/starter/permission/access/resourc…

后端整理(MySql)

1 事务 1.1 事务ACID原则 原子性&#xff08;Atomicity&#xff09; 事务的原子性指的是事务的操作&#xff0c;要么全部成功&#xff0c;要么全部失败回滚 一致性&#xff08;Consistency&#xff09; 事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性…

机器学习05-数据准备(利用 scikit-learn基于Pima Indian数据集作数据预处理)

机器学习的数据准备是指在将数据用于机器学习算法之前&#xff0c;对原始数据进行预处理、清洗和转换的过程。数据准备是机器学习中非常重要的一步&#xff0c;它直接影响了模型的性能和预测结果的准确性 以下是机器学习数据准备的一些常见步骤&#xff1a; 数据收集&#xff…

使用kubeadm快速部署一个k8s集群

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

JVM之垃圾回收器

1.如何判断对象可以回收 1.1 引用计数法 什么是引用计数器法 在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器值就加一&#xff1b;当引用失效时&#xff0c;计数器值就减一&#xff1b;任何时刻计数器为零的对象就是不可能再被使用的。 …

【C语言学习】整数范围、整数越界、无符号数

1.整数范围 对于一个字节&#xff08;8位&#xff09;&#xff0c;可以表达的范围是00000000 ~ 11111111 其中00000000 ——> 0 11111111 ~ 10000000 ——> -1 ~ -128&#xff08;从大到小&#xff09; 00000001 ~ 01111111 ——> 1~127&#xff08;从小到大&#xff…

Python需要学的基础有哪些

Python介绍 Python是一种广泛使用的高级编程语言&#xff0c;因其简洁易读的语法和强大的功能而备受欢迎。本文将介绍一些Python教学内容&#xff0c;帮助初学者快速入门编程世界 1. Python基础 Python的基础知识对于编程初学者至关重要。以下是一些重要的基础概念&#xff…

redis 持久化 与 键淘汰策略

redis运维核心&#xff1a; aof日志(全持久化 增量) 、 rdb(半持久化/全量备份) 、 键淘汰策略 、 高可用 1、Redis是基于内存的&#xff0c;一旦Redis重启/退出/故障&#xff0c;内存的数据将会全部丢失。故而有了持久化。 2、持久化&#xff1a;将内存中的数据存于磁盘中&am…

电脑第一次使用屏幕键盘

操作流程 1.在键盘上同时按WinR打开运行; 2.输入control 3.找到设置中心 4.点击屏幕键盘 效果 具体怎么使用 我不咋清除 简单 测试了一下 可以用鼠标点击屏幕键盘的按键 用键盘 按字母键和数字键 是和屏幕键盘不同步的 其他 tab、shift、后退、enter好像同步

stm32和python实现DMA+串口数据收发

STM32F103配置 1-0 串口配置 void uart_init(u32 bound){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //使能USART1时钟RCC_AP…

ansible——playbook

playbook playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook本身由以下各部分组成&#xff1a; Tasks: 任务&#xff0c;即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器&#xff0c;当某条件…

域名校验?反爬界的掩耳盗铃!

这一集我们讲一个比较简单的域名校验&#xff0c;可能你没有听过这个名字&#xff0c;因为这个名字是我编的&#xff0c;那么它究竟是什么呢&#xff1f;又为什么说它是掩耳盗铃呢&#xff1f;我们来看看下面的案例&#xff1a; 必应搜索页隐藏内容虎嗅新闻跳转404 import re…

《Kali渗透基础》13. 无线渗透(三)

kali渗透 1&#xff1a;无线通信过程1.1&#xff1a;Open 认证1.2&#xff1a;PSK 认证1.3&#xff1a;关联请求 2&#xff1a;加密2.1&#xff1a;Open 无加密网络2.2&#xff1a;WEP 加密系统2.3&#xff1a;WPA 安全系统2.3.1&#xff1a;WPA12.3.2&#xff1a;WPA2 3&#…

大数据课程D4——hadoop的YARN

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解YARN的概念和结构; ⚪ 掌握YARN的资源调度流程; ⚪ 了解Hadoop支持的资源调度器:FIFO、Capacity、Fair; ⚪ 掌握YARN的完全分布式结构和常见问题; ⚪ 掌握YARN的服役新节点操作…

Springboot 多数据源 dynamic-datasource动态添加移除数据源

0.前言 上一篇文章我们讲了如何通过多数据源组件&#xff0c;在Spring boot Druid 连接池项目中配置多数据源&#xff0c;并且通过DS注解的方式切换数据源&#xff0c;《Spring Boot 配置多数据源【最简单的方式】》。但是在多租户的业务场景中&#xff0c;我们通常需要手动的…

react-player静音不能自动播放问题

现象 移动端不能自动播放 原因 取决于您使用的浏览器&#xff0c;但muted如果您不想与autoplay用户交互&#xff0c;则必须使用视频。 Chrome 的自动播放策略很简单&#xff1a; 始终允许静音自动播放。在以下情况下允许自动播放声音&#xff1a; 用户与域进行了交互&#x…

RunnerGo条件控制器使用方法

在做性能测试时我们需要根据业务需求、业务场景来配置测试脚本&#xff0c;举个例子&#xff1a;在登录注册场景中&#xff0c;可能会有账号密码全部正确、账号格式错误、密码错误等多种情况&#xff0c;这里的“登录/注册”事件可以视为一个场景。一个真实业务中的场景&#x…

2023 年牛客多校第五场题解

A Jujubesister 题意&#xff1a;给定长度为 n n n 的数列 { a } i 1 n \{a\}_{i1}^n {a}i1n​&#xff0c; q q q 次询问区间 [ l , r ] [l,r] [l,r] 上满足 a i a k > a j a_ia_k>a_j ai​ak​>aj​ 且满足 l ≤ i < j < k ≤ r l \le i <j<k \…