基于深度学习多图像融合的屏幕缺陷检测方案
公司项目,已申请专利。
深度学习作为新兴技术在图像领域蓬勃发展,因其自主学习图像数据特征的性能避免了人工设计算法的繁琐,精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能,使得深度学习技术在图像领域得到广泛应用,包括图像检测、图像分类、图像重构等。
屏幕缺陷检测作为保障显示屏质量的重要步骤在显示屏生产过程中占有重要位置,屏幕缺陷包括点线缺陷比如暗点暗线,Mura缺陷,外观缺陷等。显示屏缺陷需要通过高清工业相机拍照成像后再由算法进行检测,而不同的缺陷需要通过不同的光学方案才能得到较为清晰的图像,光学方案包括相机拍摄角度包括正视斜视,打光方案包括光源强度及光源角度等,因此不同屏幕缺陷类型或者同一类缺陷类型的不同表现需要通过不同的光学方案得到多张拍摄图像供算法处理。
多张图像的处理增加了算法的工作量以及需要后期对多张图像进行检出结果整合,需要考虑不同图像中同一个缺陷的像素位置对齐的问题,增加了算法的复杂度。
深度学习图像算法通过提取图像中的特征信息,在高维空间中构建特征向量空间,可以通过提取多张图像中的特征信息,在高维空间中进行融合,将多张图像中的缺陷信息融合在一个统一的高维特征信息空间中,实现端到端(End-To-End)的屏幕缺陷检测,通过融合不同光学方案下的单一缺陷图像,整合不同图像中的多维缺陷信息,提高缺陷检测的精度,消除传统算法分别对多张图像进行处理后再做结果整合的弊端,提高屏幕缺陷检测效率。
本专利将深度学习中的多图像融合技术应用于显示屏缺陷的检测中,设计出一种基于Mixed-Attention结构的神经网络,称为MIFT-Net(Multi Image Fuse Test Net),对同一个缺陷显示屏进行不同光学方案的拍照,得到多张不同的图像,通过对各个图像进行特征提取及特征对齐融合,使用多头混合注意力机制进行各个图像特征的对齐融合,形成统一的高维特征空间,通过对同一个缺陷在不同图像中的特征进行特征信息整合,得到该缺陷更加清晰更加全面丰富的缺陷信息,提高检测效率。本专利缺陷检测部分属于开放方式,可以使用各种不同检测模块处理不同缺陷任务,即可以进行多任务处理,大大增强了模型的泛化性,提高了模型的通用性。
本专利提出了一种基于深度学习多图像融合的屏幕缺陷检测方案,使用不同光学方案对同一个缺陷屏幕进行拍照取图,包括相机参数的不同设置,相机拍摄角度以及不同光源的打光方案,得到同一个缺陷屏幕的不同成像方式的多张图像,通过神经网络卷积操作对多张图像进行特征提取,通过混合注意力机制对各张不同特征图进行特征对齐融合,统一编码成一个高维特征信息向量空间,然后在这个统一特征空间中进行后期缺陷检测。
在图像特征信息提取阶段,使用基于金字塔结构的分层卷积方式,融合同一张图像中不同层次的特征信息,能更好地得到整张图像全面丰富的特征信息。在多图像特征融合阶段,使用基于Self-Attention和Cross-Attention的多头混合注意力机制,对同一缺陷屏幕多张不同的特征图进行特征对齐,融合各张图像的多角度信息。针对缺陷屏幕图像分辨率高,缺陷像素面积小的特点,使用基于Deformable Attention的混合注意力机制,使得大大减少计算量,更加关注缺陷部分及其周围像素的特征而或略远处无关像素的信息,提高缺陷特征的提取精度及效率,创新性地在互注意力模块中也使用了Deformable Attention,能更好的得到各张不同图像特征中的对齐信息。
Deformable Attention
将Transformer注意力应用到图像特征图上的核心问题是,它将查看所有可能的空间位置。为了解决这个问题,可变形注意模块只关心参考点周围的一小组关键采样点,而不考虑特征图的空间大小。通过为每个查询分配少量固定数量的键,可以缓解收敛性和特征空间分辨率问题。
给定一个输入特征图 x ∈ R C × H × W使q为上下文特征 Z q的查询元素, P q 为一个二维参考点,可变形注意力特征可以通过以下方式计算:
输入特征图 x(C x H x W),特征图中每个像素点都是一个C通道的向量 z q,每个像素点的索引(Reference Point)也就是二维位置坐标为 p q。M代表多头注意力机制中头的数目。每一个头中只考虑 z q附近 K个点(K远小于H x W)。 Δ p m q k代表采样的位置偏移量,是一个二维的坐标(初始化采样点是固定的,但后续将通过全连接层计算预测更加值得关注的点的坐标)。 A m q k 代表注意力的权重( ∑ k = 1 A m q k = 1)。 W m 和W ’ m代表两组全连接层的权重参数。
两个需要学习预测的值 A m q k 和 Δ p m q k 都是通过 z q计算而来的。
- 其中位置偏移delta_pmqk是可学习的,由query经过全连接层得到。
b.注意力权重直接由query经过全连接层得到。
c.每个query在每个头部中采样K个位置,只需和这些位置的特征交互(x(pq+delta_pmqk)代表基于采样点位置插值出来的value)
Deformable-Attention通过仅计算某个特征点附近有限个其他特征点而不是计算整张特征图中所有特征点,大大降低了计算量,并且使得该特征点忽视了很多和它本身无关的其他特征点,使得注意力计算更加精准,特别适合分辨率较大且缺陷所占像素较少的图像。
光学方案及缺陷图像获取
缺陷照片获取
本专利使用的是监督学习的深度学习技术,通过一个垂直缺陷屏幕的主相机和两个带有侧光源的斜视相机,得到三张缺陷屏幕图像。
照片预处理
对于通过拍照获取的缺陷图片,在送入AI神经网络进行训练前,需要对图片进行一些预处理工作,包括图片裁剪和图片数据集增强等。
图片裁剪缩放:使用相机拍摄得到的缺陷图像除了显示器屏幕部分外还包括一些周围背景部分,这部分图像是不需要的,可能会对AI神经网络的训练及检测带来影响,且多出来的图像也会增加AI神经网络训练和测试时的时间成本以及GPU显存消耗,因此需要通过裁剪的方式去除这些无用图像,只保留原图片内容。并使原图和拍照图的长宽为2的次方,便于后期AI运算。
数据集增强:AI神经网络训练时需要大量的样本图片,通过从大量样本中学习到的数据特征进行建模,有些时候数据集并不是那么充分且通过拍照增加数据集需要额外的时间人力成本,需要通过数据增强方式人为“增加”样本数据,数据增强包括对照片进行旋转、偏移、镜像、裁剪、拉伸、灰度变换等图像操作,使得新图片和原图“看起来”不一样,一定意义上生成了新的图片,扩充了数据集。
基于深度学习多图像融合的神经网络
本专利MIFT-Net神经网络分为图像特征提取的Backbone(左侧),不同图像间特征对齐及融合的注意力模块(中间)以及作为缺陷检测的Detect Head模块(右侧)。
整个神经网络分为三部分,左边为图像特征提取模块,通过三台相机拍照得到三张图像,一张主视图,两张侧视图,通过Backbone提取各自的图像特征信息;将三张图像的特征信息送入中间的特征对齐融合模块,使用多头混合注意力机制融合三张图像各自的特征信息并进行特征对齐,然后通过通道叠加以及卷积操作,生成统一的高维特征信息空间,送入检测头模块;右边的检测头模块根据得到的统一特征信息,进行后续各类缺陷检测。
特征提取Backbone
通过多次使用基于金字塔FPN的图像信息提取模块+区域像素注意力模块RPA+特征压缩模块FS+注意力Dropout模块,从三张图像中得到各自的特征信息。
金字塔特征提取模块FPN
FPN通过对输入不同层特征进行多次提取及融合,利用各层特征图的多角度信息,更好的提取输入图像的全局特征信息,并且通过Res连接在深层特征中直接加入浅层特征信息,避免了特征信息消散的弊端。
输入特征图F1经过4个卷积块生成4个分层特征(F2-F5),每个分层特征大小为前一层的一半,通道是前一层的两倍,F5特征层得到中间结果特征层D5。
D5进过双线性插值得到R5,使得特征大小尺寸和F4相同,R5再和F4按特征通道进行叠加,再进过一个1×1卷积块进行通道间特征融合,之后再和R5进行加和操作,再进过一个1×1卷积块中间结果特征层D4。
D4和R5进行加和操作,进过双线性插值得到R4,使得特征大小尺寸和F3相同,R4再和F3按特征通道进行叠加,再进过一个1×1卷积块进行通道间特征融合,之后再和R4进行加和操作,再进过一个1×1卷积块中间结果特征层D3。
D3和R4进行加和操作,进过双线性插值得到R3,使得特征大小尺寸和F2相同,R3再和F2按特征通道进行叠加,再进过一个1×1卷积块进行通道间特征融合,之后再和R3进行加和操作,再进过一个1×1卷积块中间结果特征层D2。
D2进过双线性插值得到R2,使得特征大小尺寸和F1相同,R2再和F1按特征通道进行叠加,再进过一个1×1卷积块进行通道间特征融合,之后再和R2进行加和操作,再进过一个1×1卷积块中间结果特征层D1。
D1和R2进行加和操作,得到最终结果R1,R1的特征尺寸和F1相同,通道数比F1多。
区块像素注意力模块RPA
RPA给输入特征的每块区域像素分配一个权重,使得神经网络对于图像特征明显的区域更加关注。输入特征(B,C,H,W)先经过一个BatchNorm-DefConv-ReLU进行通道压缩为(B,C*r,H/2,W/2),r<1;再经过一个BatchNorm-DefConv还原成(B,C,H/4,W/4),通过SigMoid函数生成每个像素值的权重,最后使用双线性插值还原成(B,C,H,W),和原输入特征一对一相乘相乘。
Feature Squeeze
使用卷积对上一层输出的特征图进一步提取缺陷特征信息,并压缩特征图的长宽。
注意力Dropout
基于注意力的Dropout方法,不同于一般Dropout使用的随机方式,利用注意力保留更重要的特征信息,使得神经网络的性能和泛化性更好。
对输入特征经过两个批次归一化+可变性卷积+ReLU/SigMiod,生成和原特征形同尺寸的注意力矩阵,根据注意力矩阵的值,将注意力小于阈值的原特征矩阵对应位置神经元置零。
多图像特征融合模块
通过使用多头(N个)混合注意力机制,每个混合注意力头里多次(k次)使用基于Deformable-Attention的自注意力机制+基于Deformable-Attention的互注意力模块+加和/标准化操作,对齐并融合三张不同图像的特征信息,再将各个混合注意力头的输出通过一个通道叠加以及卷积操作,得到统一的特征信息空间。
多头注意力机制能够从不同角度得到图像的更全面信息,Cross Attention模块可以对多张图像特征进行特征信息的对齐以及融合,Deformable Attention模块通过只关注某个特征点附近有限个特征点的信息而计算所有特征点的信息,更加关注和该特征点关联大的其他特征点,有效解决缺陷图像大分辨率带来的计算量激增以及小尺寸缺陷难以检测的问题。
注意力机制模块
输入三组特征编码得到三组Query和Value值,然后两两分组,使用Query值互相进行基于Deformable-Attention的互注意力计算,将结果进行通道叠加再使用1×1卷积进行通道特征融合,得到三组Z值。
混合注意力机制
输入三个图像特征编码得到三组Query和Value值,这三组(Q,V)首先各自进行基于Deformable-Attention的自注意力计算,得到各自的Z值,再编码得到三组新的Query和Value值,然后两两分组,各自进行互注意力计算,得到三组新的Z值,和之前的Z值进行加和操作并标准化。
结果送入下一次注意力模块,把每次加和操作并标准化的结果进行按通道叠加,并把每次注意力机制的输出结果进行加和操作。
生成统一特征信息空间
将注意力模块的各个输出特征结果进行通道叠加和卷积处理,得到一个统一的特征信息空间,对齐并融合了三张原始图像各自的缺陷特征信息,得到整张显示屏的整体信息,供下一步检测处理。
Detect HEAD
得到整张显示屏多图像的统一特征信息空间后,就可以进行显示屏缺陷检测,本专利该模块属于开放性部分,可以用于不同的缺陷检测任务,包括分类网络、目标检测网络、分割网络等,同一个检测任务也可以使用各种不同检测头。
本专利通过对缺陷显示屏使用不同的光学方案进行多次拍照,得到不同拍摄角度和拍摄方式的三张不同图像,使用深度学习神经网络的方式得到三张图像的特征信息,并加以特征对齐和融合,形成一个统一的特征信息空间,全面包含了三张图像中的不同信息,得到更加全面完整的缺陷特征,使得后期的检测任务可以使用三张图像中的多个角度丰富的缺陷信息,使得缺陷检测精度大大提高,也避免了传统多图像算法需要对各张图像单个处理的弊端,消除了单张图像中缺陷信息不完整不丰富的缺点,以及免除了传统算法后期需要进行多张图像特征对齐的麻烦。
相关文章:

基于深度学习多图像融合的屏幕缺陷检测方案
公司项目,已申请专利。 深度学习作为新兴技术在图像领域蓬勃发展,因其自主学习图像数据特征的性能避免了人工设计算法的繁琐,精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能,使得深度学习技术在…...

MySQL基础笔记(三)
在此特别感谢尚硅谷-康师傅的MySQL精品教程 获取更好的阅读体验请前往我的博客主站! 如果本文对你的学习有帮助,请多多点赞、评论、收藏,你们的反馈是我更新最大的动力! 创建和管理表 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数…...

【JetPack】WorkManager笔记
WorkManager简介: WorkManager 是 Android Jetpack 库中的一个重要组件。它用于处理那些需要在后台可靠执行的任务,这些任务可以是一次性的,也可以是周期性的,甚至是需要满足特定条件才执行的任务。例如,它可以用于在后…...

docker 安装 ftp
前言 经多次测试 不知道为什么 必须添加被动模式跟端口才可以 连接成功,有知道为什么可以评论下 下载镜像 docker pull fauria/vsftpd启动ftp 服务 参考链接 docker run -d -v /etc/localtime:/etc/localtime:ro -v /home/dr/data/ftp:/home/vsftpd \ -e "…...

5.C语言内存分区-堆-栈
目录 内存分区 运行之前 代码区 全局初始化数据区 、静态数据区 (data) 未初始化数据区(bss(Block Started by Symbol)区) 总结 运行之后 代码区 (text segment) 未初始化数据区(bss) 全局初始化数据区,静态…...

传统CV算法——基于opencv的答题卡识别判卷系统
基于OpenCV的答题卡识别系统,其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术,自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述: 1. 导入必要的库 系统首先导入…...

国产 HighGo 数据库企业版安装与配置指南
国产 HighGo 数据库企业版安装与配置指南 1. 下载安装包 访问 HighGo 官方网站(https://www.highgo.com/),选择并下载企业版安装包。 2. 上传安装包到服务器 将下载的安装包上传至服务器,并执行以下命令: [rootmas…...

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件
本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息,页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…...

Springboot @Transactional使用时需注意的几个问题
一、事务的隔离级别 在Springboot应用中,如果我们想实现方法一旦执行有异常产生,就触发事务回滚,可以在方法上面添加Transactional注解。如果应用采用mysql数据库,虽然mysql本身也有事务隔离机制,但在Sping数据库的应…...

数字经济下的 AR 眼镜
目录 1. 📂 AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. 🔱 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. Ὂ…...

力扣150题
88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 **注意:**…...

剑指offer搜索二维矩阵
题目连接 https://leetcode.cn/problems/search-a-2d-matrix-ii/’ 代码 自己想出来的 解法一 初始化两个指针,i0,j列数-1 若此时matrix[i][j]target 则返回true 若此时matrix[i][j]>target,表明在第j列中不可能存在target,因为列是升序的 若此时ma…...

如何设置浏览器不缓存网页
设置浏览器不缓存网页可以通过多种方法实现,以下是一些常见的策略: HTTP响应头控制: Cache-Control:这是最常用的HTTP头之一,用于控制响应的缓存行为。例如: Cache-Control: no-cache, no-store, must-r…...

Iris简单实现Go web服务器
package mainimport ("github.com/kataras/iris" )func main() {app : iris.New() // 实例一个iris对象//配置路由app.Get("/", func(ctx iris.Context) {ctx.WriteString("Hello Iris")})app.Get("/aa", func(ctx iris.Context) {ct…...

后端项目java中字符串、集合、日期时间常用方法
我这里只介绍了项目中最常用的哈,比如像集合有很多,但我们最常用的就是ArrayList。 然后我这里会以javascript中的字符串、数组的方法为基准来实现,有些方法js和java会有些区别也会介绍 字符串 每次修改 String 对象都会创建一个新的对象,而 StringBuffer 可以在同一个对象…...

【Spring事务】深入浅出Spring事务从原理到源码
什么是事务 保证业务操作完整性的一种数据库机制 (driver 驱动)事务特定 ACID A 原子性 (多次操作 要不一起成功 要不一起失败 (部分失败 savepoint)) C 一致性 (事务开始时数据状态,…...

vue.js滑动到顶便锁定位置
<template><div><div class"nav"></div><div class"searchBar" id"searchBar"><ul :class"searchBarFixed true ? isFixed :"> <li>区域<i class"iconfont icon-jiantouxia"…...

EdgeX Core Service 核心服务之 Core Command 命令
EdgeX Core Service 核心服务之 Core Command 命令 一、概述 Core-command(通常称为命令和控制微服务)可以代表以下角色向设备和传感器发出命令或动作: EdgeX Foundry中的其他微服务(例如,本地边缘分析或规则引擎微服务)EdgeX Foundry与同一系统上可能存在的其他应用程序…...

掌握常用HTML标签:创建个人简介网页
任务目标 理解HTML文档的基本结构,掌握常见的HTML标签及其用途,创建一个简单的个人简介网页。 学习内容脑图 #mermaid-svg-5GTdqH41gawr4v0h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

音视频学习(二十五):ts
TS(MPEG-TS,MPEG Transport Stream) 是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG(Moving Picture Experts Group)组织制定,用于视频和音频的压缩编码。在 HLS(HTTP Live Stream…...

10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹
本文记录当前最新版虚拟机VMware Workstation Pro(2024.12)如何在win11下共享文件,以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机,打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…...

单元测试mock框架Mockito
为了继续改进 Mockito 并进一步改善单元测试体验,我们希望您升级到 2.1.0!Mockito 遵循语义版本控制,仅在主要版本升级时包含重大更改。在库的生命周期中,重大更改是推出一组全新功能所必需的,这些功能会改变现有行为甚…...

Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…...

2024多模态大模型综述最新总结
摘要 随着人工智能技术的快速发展,多模态大模型(MLLM)已成为研究的新热点。这些模型以强大的大型语言模型(LLM)为基础,能够处理和理解多种模态信息,如文本、图像、视频和音频。本文综述了MLLM的…...

Redis——缓存穿透
文章目录 1. 问题介绍1.1 定义1.2 举例 2. 解决方案2.1 方案一:空值缓存2.1.1 做法2.1.2 举例2.1.3 示例代码2.1.4 优点2.1.5 缺点 2.2 方案二:布隆过滤器2.2.1 思想2.2.2 做法2.2.3 示例代码2.2.4 优点2.2.5 缺点 2.3 方案三:限流3. 总结 1.…...

1.gitlab 服务器搭建流程
前提条件: 一、服务器硬件水平 搭建gitlab服务器最低配置要求2核4G,低于这个配置的服务器运行效果很差。 gitlab官网:https://about.gitlab.com/ 下载地址:gitlab/gitlab-ce - Packages packages.gitlab.com 本机ubuntu 二、安装依赖 su…...

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构
原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件,包括移动订单进度跟踪和向客户发送营销通信(交易和促销)。 统一事件平台(unified eve…...

GTID详解
概念和组成 1,全局事务表示:global transaction identifiers 2, GTID和事务一一对应,并且全局唯一 3,一个GTID在一个服务器上只执行一次 4,mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如…...

图解HTTP-HTTP状态码
状态码 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。 类别原因短语1XXInformational(信息状态码)接收的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕4XXRedirection (重定向状态码)需要…...

sh cmake-linux.sh -- --skip-license --prefix = $MY_INSTALL_DIR
本文来自天工AI --------- 命令用于安装CMake的脚本,其中--skip-license参数表示跳过许可协议的显示,--prefix参数指定了CMake的安装目录。$MYINSTALLDIR是一个环境变量,应该在运行命令之前设置为您想要安装CMake的目录。 -------- sh xx…...