毕业设计-深度学习机器视觉铝型材表面缺陷识别

news2024/11/15 13:23:38

目录

前言

课题背景和意义

实现技术思路

实现效果图样例


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

大家好,这里是海浪学长毕设专题,本次分享的课题是

🎯深度学习机器视觉铝型材表面缺陷识别

课题背景和意义

铝型材作为建筑和机械工业领域中重要的应用材料,其全行业的产量和消费量在世界范围内逐年递增。铝型材在生产过程中,由于材料特性和加工工艺,不可避免存在表面缺陷,严重影响铝型材的可靠性、安全性和可加工性。在实际生产中,对铝型材表面缺陷进行准确快速识别,对保证铝型材的质量至关重要。传统的铝型材表面缺陷识别方法包括涡流检测法、超声导波检测及红外检测法等识别成本高、设备复杂,且不易实现缺陷识别过程的可视化。机器视觉检测作为一种非接触式在线自动检测技术,具有非接触、安全性高、识别效率高和工作时间长的特点,是实现表面缺陷准确与快速识别的有效手段。

方法多采用传统机器视觉算法,通过图像形态学处理与特征提取进行缺陷识别,往往需要根据不同形态的缺陷特征,设计不同的特征提取与识别算法。铝型材表面缺陷形态不规则、位置随机且大小不一,采用传统机器视觉缺陷识别方法进行铝型材缺陷识别,难以同时满足检测精度与效率的要求。

实现技术思路

数据集构建

如图 1 所示,铝型材常见的缺陷有 4 种,分别是擦花、漏底、碰凹、凸粉。本文的铝型材图像数据集来源于江苏省某铝材公司。原始的铝型材图像数据集一共包括 342 张铝型材缺陷图像,缺陷图像样本较少,且部分缺陷占整个数据集比例过小、缺陷数据不均衡。深度学习在进行训练时,如果数据集较少会导致模型出现过拟合的问题。为解决上述问题,本文对有缺陷的铝型材图像,采用图像增广来进行数据集扩充。图像增广技术是对原图像数据进行一系列随机对比度调整、旋转等处理,产生相似但不同的训练数据,以扩大训练图像集的规模,同时降低模型对某些特征的依赖,提高模型的泛化能力。 

 

 

识别方法

YOLOv3 作为一种基于回归的目标识别算法,能够实现多目标的快速、准确识别。YOLOv3 对输入图像的全局区域进行训练,可加快训练速度且能更好地区分目标和背景。先利用 Darknet-53主干网络完成铝型材表面缺陷特征提取,再采用目标框直接预测目标类别和位置。铝型材表面缺陷形态不规则、位置随机且大小不一,直接应用 YOLOv3 模型进行识别难以保证微小缺陷的精密识别。本文在深入分析 YOLOv3 模型特性的基础上对其进行改进。将原有 3 尺度识别结构扩展为 4 尺度,提高对微小缺陷的识别能力; 通过重新聚类分析构建适合铝型材表面缺陷的初始目标框,改进 YOLO 算法的模型参数; 采用多尺度训练方式对训练流程进行优化,以增强模型对不同尺度缺陷的适应性和识别精度,解决铝型材表面缺陷识别困难、精度低等问题。

基于 YOLO 的铝型材多尺度识别模型架构如图 2 所示。在数据集构建后,以 Darknet-53 为主干网络进行特征提取,并融合多尺度识别,实现铝型材表面缺陷的有效识别。该网络从训练集和验证集中快速提取铝型材表面缺陷相应特征,并融合多尺度特征信息,同时得到缺陷预测框和类别,从而快速精确地识别出缺陷种类和位置。其中,训练集用于拟合识别网络,验证集用于调整识别网络的超参数以及对网络性能进行评估。

铝型材表面缺陷识别模型的工作流程如下: 首先,构建铝型材表面缺陷图像数据集,将缺陷图像输入识别模型进行训练; 再根据预测边界框及所属类别的概率对缺陷进行多尺度预测; 最后通过损失函数不断调整训练参数,以得到改进后识别模型的参数。

铝型材多尺度识别模型架构

 特征提取网络

采用 Darknet-53 网络作为图像特征提取的主干网络,其网络结构如图 3( a) 所示。整个网络采用完整的卷积层,没有池化层和固定输出的连接层。Darknet-53 网络结构借鉴残差神经网络 Res Net( ResidualNetwork),在其网络中加入 5 个残差块( residual) 。每个残差块中包含不同数量的残差单元,残差单元由特征提取层与两个 DBL( Darknetconv2d BN Leaky) 单元经过两层卷积所构成,如图 3( b) 所示。其中,残差单元中的 DBL 单元也是YOLOv3 的基本构成单元,由卷积( Conv) 、批归一化( BN) 和激活函数 Leaky Relu 共同构成,如图 3( c) 所示。Darknet-53网络中加入残差单元,可以保证主网络结构在不断加深的情况下不会造成梯度消失或爆炸,以加强主网络对图像特征的提取效果,进而提高模型识别的准确率。           

 多尺度识别的模型结构

对于大多数卷积神经网络,通过特征提取网络获取图像最终的特征图后,直接在该特征图上进行预测。这种方式仅能获取图像中单一尺度的语义信息,识别的尺度范围有限。在铝型材表面缺陷识别过程中,缺陷区域往往大小不一,且具有不同特征,因而需要利用不同尺度的识别网络来适应多尺度目标。YOLOv3 通过多尺度预测的方式对不同尺寸的目标来识别,其结构如图 4 所示。以本文的研究对象铝型材为例,输入的图像经过 Dark-net-53 主干网络时,共进行 5 次下采样。每进行一次下采样,铝型材的特征图就会变成原输入图像尺寸一半。经过 5 次即 32 倍下采样后,生成尺度 1 的铝型材特征图。该尺度特征图为 13 ×13 分辨率,通过卷积等操作后进行一次 2 倍上采样,生成 26 ×26 分辨率的特征图,将其与特征提取网络中16 倍下采样生成的 26 × 26 分辨率的特征图进行张量连接。通过张量连接融合两个图像的特征信息,生成一个双尺度融合的铝型材特征图( 尺度 2) 。

以此类推,该尺度特征图再次通过 2 倍上采样,与 8 倍下采样生成的 52 × 52 分辨率的特征图进行张量连接,生成同为 52 × 52 分辨率且 3 尺度融合的铝型材特征图( 尺度 3) 。在铝型材缺陷识别中,存在微小的缺陷区域,使用原YOLOv3 中多尺度预测的方法难以满足微小缺陷精确识别的需求。针对该问题,本文对 YOLOv3 模型进行改进,将原有 3个尺度识别扩展为 4 个尺度,增加 104 × 104 分辨率的特征图,见图 4 新加结构。该尺度通过张量连接的方式,将 4 倍下采样生成的 104 ×104 分辨率的特征图与尺度 3 中 52 × 52分辨率的特征图融合。通过多尺度特征融合方式,将不同分辨率的特征图融合后单独输出且分别进行目标预测,以此提升小目标识别的精确度。融合后的尺度 4 包含之前各尺度信息的特征图,可改善铝型材表面微小缺陷的识别效果。

 目标框的聚类分析

目标框( anchor boxes) 是一组具有固定宽高比的数据集图像初始候选框,其设定对图像检测的精度和处理速度有着重要影响。YOLO 算法对目标框的宽高比维度进行 K-menas聚类分析,并对神经网络的训练过程进行优化,即事先确定一组宽高比维度固定的矩形框作为选取目标包围框时的参照物,通过预测目标框的偏移量取代直接预测坐标,以降低模型训练的复杂度。在 YOLOv3 原模型中,目标框通过 Pas-cal VOC、COCO 等图像标准数据集聚类得到,适用于自然场景中的目标。

本文要识别的目标为铝型材表面缺陷,这些缺陷的特征与上述数据集中的目标完全不同,因此直接使用原算法中聚类分析过的目标框并不合理。基于上述考虑,为得到精准的铝型材缺陷位置和类别信息,本文利用 K-menas 算法对数据集中目标框的宽高比维度重新进行聚类分析,得到适合铝型材数据集的目标框。通过聚类分析主要是获得更高的交并比 Io U( Averange intersection over union) 。Io U 代表预测的目标框与真实目标框的重叠率,其值越大表示聚类效果越好。因此,本文采用 Io U 取代 K-means 方法中的欧氏距离,用 Io U定义的距离 D 可表示为

模型训练 

具体流程如下:

1) 采用 312 × 312 分辨率的铝型材图像对模型进行预训练,获得初始的预训练权重;

2) 利用 416 × 416 分辨率的铝型 材图 像 对 模型 进 行 微调,使得模型能逐渐适应中等分辨率的缺陷特征;

3) 输入 608 × 608 分辨率的铝型材图像进行训练,自主调整每层权重来适应高分辨率图像输入,更好适应铝型材图像中不同尺度的缺陷特征,提高模型尺度不变性和鲁棒性。在训练过程中,损失函数 Loss 的定义为

Loss = lxyδ( x,y) + lwhδ( w,h) + lconfδ( conf) + lcδ( c) ( 3)

式中: δ( x,y) 为预测目标框中心坐标( x,y) 的误差函数,δ( w,h) 为预测目标框宽高比维度的误差函数。δ( conf) 为置信度 Confidence 的误差函数,δ( c) 为类别 c 的误差函数。lxy、lwh、lconf、lc分别为误差权重系数。

缺陷识别

利用铝型材测试集图像对训练后的铝型材 YOLO 模型进行实验,以验证本文方法的有效性。评价模型有效性的相关指标包括平均准确率 AP、平均准确率均值 MAP和平均识别时间 t。AP 用于衡量模型在单个类别上的识别性能; MAP用于衡量模型在所有类别上的平均识别性能; 识别时间为模型平均处理每张图像所需时间,其单位为 ms。和 MAP用公式表示为

 

 

 通过增加模型识别尺度,可精确识别铝型材微小表面缺陷的类别和位置,提升识别精度和定位精度。通过聚类分析重新构建适合铝型材表面缺陷的初始目标框,利用多尺度训练优化模型参数,可更好适应铝型材图像中不同尺度的缺陷特征。

实现效果图样例

 

 

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

最后

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

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

相关文章

excel表格怎么换行?单元格内换行的4个方法

今天分享一个excel单元格内换行的小技巧,希望对大家有用。我们在编辑excel文本时经常会遇到这样的情况:将文字内容用一种方式快速从中间插入。比如我们在制作表格时,要将区域内的数据全部合并到一张表格中(即单元格区域&#xff0…

破茧化蝶,从Ring Bus到Mesh网络,CPU片内总线的进化之路

文章目录**为什么需要片内总线?****星型连接****环形总线(Ring Bus)****Mesh网络****结论**转载于:https://zhuanlan.zhihu.com/p/32216294 在大多数普通用户眼里,CPU也许就是一块顶着铁盖子的电路板而已。但是如果我…

【基于Tansformer的融合方法:感知损失:传递-感知损失】

HyperTransformer: A Textural and Spectral Feature Fusion Transformer for Pansharpening (超级Transformer:一种用于全色锐化的纹理和光谱特征融合Transformer) 先看这一篇简单了解Transformer (是一篇高光谱图像融合&#x…

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: S…

postgresql_internals-14 记录

梳理一下之前理解不太清楚的知识点,重点内容可能会再拆出来单独研究。 原书链接:Index of / 一、 数据组织 1. pg系统库 template0:用于从逻辑备份还原,或创建不同字符集的数据库,不可以修改template1:真…

i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动

一、概述 Linux 内核编译流程如下: 1、配置 Linux 内核。 2、编译 Linux 内核。 说明:进入 Linux 内核源码,使用 make help 参看相关配置。 二、make menuconfig 工作原理 1、menuconfig 它本身是一个软件,只提供图形界面配…

Android App 秒开实践方案~

一、背景 启动速度可以说是一个 APP 的门面,对用户体验至关重要。随着业务不断增加,需要初始化的任务也越来越多,如果放任不管,启动时长会逐步增加,为此雪球客户端针对应用启动时长做了大量优化工作。本文从应用启动基…

[读论文] Monocular 3D Object Reconstruction with GAN inversion (ECCV2022)

概述 项目主页:https://www.mmlab-ntu.com/project/meshinversion/ 方法名称:MeshInversion 输入:单目图像 (in the wild,有背景的,没有抠图的) 输出:textured 3D mesh key challen…

【metaRTC学习】metaRTC的demo运行说明(一)

metaRTC的github的地址为:GitHub - metartc/metaRTC: A cross-platform WebRTC SDK 其作者杨高峰的博客为:metaRTC的博客_CSDN博客-metaRTC,解决方案领域博主 其博客对其自己的demo的运行说明不够详细,刚入门的会一脸懵,本文对其…

Netty(二)- NIO三大组件之Buffer

文章目录一、Buffer 基本介绍二、Buffer 类及其子类三、Buffer 的使用四、关于Buffer 的注意事项和细节1. put和get的数据类型应该相同2. 可以将一个普通 Buffer 转成只读 Buffer3. 可以使用MappedByteBuffer让文件直接在内存中修改4. 可以通过 Buffer 数组完成读写操作&#x…

富文本编辑器 ck-editor5 的使用

最近在项目中需要用到富文本编辑器,据说ck-editor5很不错,于是就使用它了,不过在期间也遇到了很多问题,这里记录下。 一、引入ck-editor5 文档地址:Predefined builds - CKEditor 5 Documentation 这里有个坑&#…

YOLOv2-yolo9000-batter,faster,stronger 论文精度

参考大佬:同济子豪兄 YOLOv2-yolo9000 yolo9000-batter,faster,stronger Introduction 我们提出了一种新的方法来利用大量的图像分类数据,来扩大当前检测系统的范围。我们的方法使用目标分类的分层视图,允许我们将不同的数据集组合在一起…

个人需求1:代码提交这块的做法

老早之前的代码提交的步骤,真的是很繁琐在这里提交代码,现在和大家分析一下我当初的心得。 1.首先黄老师建立了一个jira号,记得把功能背景/方案说明/测试范围提前了解,问起来的时候也能回答,如下图1: 15324就是我本次的jira号,每次开发前先建立jira号,这…

小区访客导航GIS方案

1 应用功能设计 1.1 小区地图 1.1.1 小区地图浏览 基于GIS平台,对小区地图进行渲染发布,提供可视化显示浏览地图可以选择2D地图模式,用户可以在地图上快速查询和点击选择某个小区内的建筑物、POI等信息,并查看其相关属性信息&…

【现代机器人学】学习笔记二:刚体运动

这一节内容最开始在学之前是有些不屑的,这些坐标变换的内容天天都在玩,有什么复杂的?高翔博士的14讲貌似讲这些内容只用了几页。 不过认真一读才发现自己自大肤浅了。 之前我在北大研究院的时候,有一个实验室双聘的浙农林的老师&…

每天一个面试题:ThreadLocal底层原理和实现Demo

ThreadLocal底层原理和实现Demo每天一个面试题:ThreadLocal实现ThreadLocal的DemoThreadLocal底层原理为什么ThreadLocalMap的key设计为弱引用今天开始一个新专栏:每天一个面试题系列 也没有拿到令人心动的offer,看来自己学习方式和能力还是差…

fastapi_No.25_获取配置项

文章目录方式1:隐藏在环境变量中配置环境变量Windows中配置环境变量Linux中配置环境变量在代码中获取环境变量方式2:隐藏在配置文件中装包在代码中获取配置文件内容在之前的代码中,像数据库连接信息等敏感信息,都直接写在代码中&a…

每日一题 —— 882. 细分图中的可到达节点

882. 细分图中的可到达节点 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edgesedgesedges 表示&…

182:vue+openlayers 使用d3实现地图区块呈现不同颜色的效果

第182个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中加载解析geojson文件,同时利用d3的颜色功能,使得美国每个州呈现出不同的颜色区块,方便识别。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,…

UNIX环境高级编程_文件IO_文件描述符

这篇文章记录文件描述符,下一篇文章记录文件描述表。 1 文件描述符 先说说什么是文件IO。文件的IO就是文件的输入输出,也就是文件的读写。读和写是以CPU为参考的,从CPU向文件中写入数据,就是写操作;从文件中读取数据…