基于半监督深度学习的芯片管脚缺失检测方法
技术领域
本发明涉及计算机视觉、深度学习技术领域,具体涉及一种基于半监督深度学习的芯片管脚缺失检测方法。
背景技术
现今社会,电路芯片的地位非常重要,应用范围越来越大,使用数量也随之暴增,芯片生产出来后都需要对其进行内核、外设电路及管脚的封装,而芯片生产的数量之多,不免会存在很多残次缺陷,而管脚的漏装会芯片生产造成很大的影响,对产品的质量、厂家的声誉造成很大影响。因为数量巨大,对其做人工检测的成本会非常高,智能化的检测是减少成本的重要途径。
一般情况,同一种功能的芯片会衍生出很多型号。而目前的芯片检测系统都基于专用光源、专用导轨、专用相机组成的专用系统。一般的检测方式为模板匹配,而该方法对阈值化分割的精度要求过高,光源、相机的参数稍有不同就可能导致整个系统的失效。此类系统需要经常人工维护,定期校准、调参。而且模板匹配方法,针对性太强,只能对一种特定的芯片做检测,而且对芯片的种类、型号、摆放角度都有限制。针对其他型号的芯片,检测精度低。芯片具有尺寸小的特点,且生产量大,需检测芯片的数目多,目前的芯片检测技术对芯片进行逐一检测,容易漏检,且检测过程繁琐,检测效率低。
因此,现有芯片管脚缺失检测技术存在专用性过强、维护和使用难度偏大、检测精度低、检测效率低的问题。
发明内容
本发明提供了一种基于半监督深度学习的芯片管脚缺失检测方法,该方法基于机器视觉处理方法进行样本标注,半监督地训练深度卷积神经网络,实现了对芯片缺失的管脚的检测,扩大了应用范围,降低了维护及使用难度,提高了检测精度和检测效率。
一种基于半监督深度学习的芯片管脚缺失检测方法,该方法包括:
步骤一,对相机采集的芯片图像进行预处理,得到增强的芯片灰度图像;
步骤二,对增强的芯片灰度图像进行边缘检测,并对边缘检测结果进行阈值化、形态学滤波处理,得到芯片轮廓图像,同时对增强的芯片灰度图像进行阈值化、形态学滤波处理,得到芯片封装图像;
步骤三,对芯片轮廓图像、芯片封装图像进行连通域检测,计算芯片轮廓连通域与芯片封装连通域对应边的间距,设置阈值,根据阈值与对应边的间距之间的大小关系,判断得出芯片具有管脚的侧面;
步骤四,根据芯片轮廓图像、步骤三的判断结果生成封装遮罩图像,将封装遮罩图像与芯片轮廓图像点对点相乘,得到芯片管脚图像;
步骤五,对芯片管脚图像进行连通域检测,根据管脚连通域之间的间距进行管脚缺失判断,并根据判断结果在芯片图像中标示出管脚缺失位置;
步骤六,根据标示的管脚缺失位置,生成管脚缺失位置遮罩,作为样本标注结果,将芯片图像和标注结果作为样本数据集,训练语义分割深度卷积神经网络;
步骤七,将待检测芯片图像输入训练好的语义分割深度卷积神经网络,对语义分割深度卷积神经网络结果进行二值化处理,得到精确的芯片缺失位置。
步骤一中的预处理包括:对芯片图像进行灰度化处理,对灰度处理结果进行归一化,对归一化结果进行图像增强,得到增强的芯片灰度图像。
步骤二中的边缘检测具体为:利用Sobel算子对增强的芯片灰度图像进行边缘检测。
形态学滤波处理具体为闭运算。
步骤三具体为:
对芯片轮廓图像、芯片封装图像进行连通域检测,得到芯片轮廓连通域与芯片封装连通域;根据芯片轮廓连通域与芯片封装连通域,得到芯片轮廓最小外接矩形、芯片封装最小外接矩形;计算芯片轮廓最小外接矩形、芯片封装最小外接矩形的对应边的间距;设置阈值,如果所得对应边的间距中存在边距大于阈值,则这一边距对应的芯片侧面存在芯片管脚,如果所得对应边距中不存在边距大于阈值,则芯片的四个侧面均存在管脚。
步骤五具体为:对芯片管脚图像进行连通域检测,得到管脚连通域;针对中间管脚缺失,设置最大间距阈值,如果相邻管脚连通域间距大于最大间距阈值,则相应管脚连通域之间缺失至少一个管脚;针对两端管脚缺失,计算边缘管脚连通域与管脚区域包围框较短两边的间距,如果所得间距大于相邻管脚连通域间距中的最小值,则边缘管脚到边缘之间缺少至少一个管脚;根据判断结果在芯片图像中标示出管脚缺失位置。
本发明的有益效果在于:
1、本发明采用计算机视觉、深度卷积神经网络等技术,克服了传统模板匹配方法专用型过强的问题,扩大了应用范围;
2、本发明采用半监督自动标注结果来训练深度神经网络模型,最终使用深度卷积神经网络进行语义分割来得到结果,克服了机器视觉系统使用中需要手动调参维护、微调的问题,降低使用及维护难度;
3、本发明采用形态学滤波处理、图像遮罩处理,对摆放好的芯片样本自动做位置标注,可以高效、准确地生成标注结果,进一步提高后续对芯片管脚缺失的检测精度;
4、本发明使用语义分割深度卷积神经网络进行图像分割,对芯片个数没有限制,不仅克服了机器视觉算法在相机摆放、光源发生变化后失效的问题,而且可以同时对多个芯片进行检测,提高了芯片管脚缺失的检测效率。
附图说明
图1为芯片管脚缺失检测流程图;
图2为芯片图像示意图;
图3为芯片轮廓图像示意图;
图4为芯片封装图像示意图;
图5为芯片轮廓最小外接矩形、芯片封装最小外接矩形示意图;
图6为芯片管脚包围框示意图;
图7为管脚缺失检测结果示意图;
图8为管脚缺失标注结果示意图;
图9为管脚缺失检测语义分割结果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种芯片管脚缺失检测方法,图1为芯片管脚缺失检测流程图。下面通过具体实施例来进行说明。
实施例一:
基于半监督深度学习的芯片管脚缺失检测方法,该方法包括:
步骤一,对相机采集的芯片图像进行预处理,得到增强的芯片灰度图像。
一种实施例是使用彩色面阵相机采集芯片图像。芯片封装部分以暗色一般为黑色、深黑色,芯片管脚部分颜色一般为金属银色。芯片图像如图2所示。预处理包括:对芯片图像进行灰度化处理,对灰度处理结果进行归一化,对归一化结果进行图像增强,得到增强的芯片灰度图像。
首先,对采集的彩色芯片图像进行处理,获取采集的芯片图像的RGB数据。使用暗通道先验的方式,对三通道对应位置分量取最小值,得到对比度较强的芯片灰度图像I:
I(x,y)=min(R(x,y),G(x,y),B(x,y))
其中,I(x,y)是芯片灰度图像I在位置(x,y)处的值,R(x,y),G(x,y),B(x,y)分别代表位置(x,y)处像素的红、绿、蓝通道分量值。
可选地,在灰度化处理后可以对芯片灰度图像I进行降采样。取n×n的结构作为窗口,对灰度图像I进行处理,取窗口内最大值作为锚点的像素值,从而得到降采样的芯片灰度图像。
对芯片灰度图像I进行归一化处理。一种实施例是采用离差标准化方法,使图像的值位于[0,1]区间内,具体公式如下:
对归一化后的芯片图像Inorm进行图像增强处理,进一步增强芯片图像的对比度。一种实施例是采用伽马变换对芯片凸显进行增强,提高图像中的芯片前景与芯片背景的对比度,具体图像增强公式如下:
Ienhan=hrγ
r为输入的灰度值,取值范围为[0,1]。h称为灰度缩放系数,用于整体拉伸图像灰度,通常取值为1。一种实施例下,伽马γ值取1.3。至此,得到增强的芯片灰度图像Ienhan。
步骤二,对增强的芯片灰度图像进行边缘检测,并对边缘检测结果进行阈值化、形态学滤波处理,得到芯片轮廓图像,同时对增强的芯片灰度图像进行阈值化、形态学滤波处理,得到芯片封装图像。
对增强后的芯片图像进行边缘检测,得到芯片边缘图像。芯片图像中,芯片的梯度很明显,芯片背景部分很平滑,梯度几乎为零,因此采用梯度算子可以得到较高质量的芯片轮廓图像。一种实施例是采用Sobel算子对增强后的图像进行边缘检测,Sobel算子在x、y方向的卷积核分别为:
利用上述卷积核对增强后的芯片灰度图像进行卷积运算,得到芯片图像在x方向的灰度值和在y方向的灰度值。根据以下公式获得初始芯片边缘图像Grad。
对初始芯片边缘图像Grad进行阈值化处理,并对阈值化处理结果进行形态学滤波处理。形态学滤波处理具体采用闭运算,对前景图像芯片中的小洞进行填充,消除不相关的细节。其中,可根据最大类间方差法来获取用于图像分割的阈值,一种阈值化的实施例是根据如下公式进行阈值化处理:
根据上述算式可以得到阈值化的芯片边缘Grad‘(x,y)。图像闭运算是对先对图像进行膨胀,然后在进行腐蚀。闭运算处理可采用9×9的全1矩阵作为结构算子。将闭运算后的芯片边缘图像进行可视化处理,将其像素值映射至[0,255]区间,所得芯片轮廓图像如图3所示。
芯片封装一般为黑色、深黑色。根据这一特性,可以通过阈值化处理可以对芯片封装部分进行提取,得到的芯片封装图像基本只剩下黑色的封装部分。具体地,可根据最大类间方差法来获取用于图像分割的阈值,阈值化处理可以采用以下公式:
阈值化处理结果Ipack即封装部分。对阈值化处理结果Ipack进行形态学滤波处理。形态学滤波处理具体采用闭运算,消除小范围的黑色区域,从而使得芯片封装部分变成连通的图像,得到芯片封装图像。闭运算是对先对图像进行膨胀,然后在进行腐蚀。闭运算处理可采用9×9的全1矩阵作为结构算子。将闭运算后的芯片封装图像进行可视化处理,将其像素值映射至[0,255]区间,所得芯片封装图像如图4所示。
步骤三,对芯片轮廓图像、芯片封装图像进行连通域检测,计算芯片轮廓连通域与芯片封装连通域对应边的间距,设置阈值,根据阈值与对应边的间距之间的大小关系,判断得出芯片具有管脚的侧面。
对芯片轮廓图像、芯片封装图像进行连通域检测,得到芯片轮廓连通域与芯片封装连通域;根据芯片轮廓连通域与芯片封装连通域,得到芯片轮廓最小外接矩形、芯片封装最小外接矩形;计算芯片轮廓最小外接矩形、芯片封装最小外接矩形的对应边的间距;设置阈值,如果所得对应边的间距中存在边距大于阈值,则这一边距对应的芯片侧面存在芯片管脚,如果所得对应边距中不存在边距大于阈值,则芯片的四个侧面均存在管脚。
对芯片轮廓图像、芯片封装图像进行连通域检测分析,提取最外层的连通域,消除图像中存在的小区域连通域,分别得到n个连通域,n为芯片图像中芯片的个数。
以单个芯片为例,分别得到芯片轮廓连通域、芯片封装连通域,计算芯片轮廓连通域的最小外接矩形、芯片封装连通域的最小外接矩形,得到芯片轮廓最小外接矩形、芯片封装最小外接矩形。具体可以采用以下方法求得最小外接矩形:把图像投影到X和Y轴。然后在这两个轴上分别找到边界。返回这两条边界上非零的最大最小位置。芯片轮廓最小外接矩形、芯片封装最小外接矩形如图5所示。
根据得到的芯片轮廓最小外接矩形、芯片封装最小外接矩形的位置、面积等方法来判断得出芯片具有管脚的侧面。具体地,本发明采用根据芯片轮廓最小外接矩形、芯片封装最小外接矩形的对应边距,判断得出芯片具有管脚的侧面。芯片封装最小外接矩形和芯片轮廓最小外接矩形存在两组近似平行的边,每一组具有四条。分别求取芯片封装最小外接矩形和芯片轮廓最小外接矩形之间对应边的间距,根据所得边距大小判断出具有引脚的侧面。
具体判断方法如下:获得芯片封装最小外接矩形(下称第一最小外接矩形)的四个顶点a1、a2、a3、a4,四条边la12、la23、la34、la41,芯片轮廓最小外接矩形(下称第二最小外接矩形)的四个顶点b1、b2、b3、b4,四条边lb12、lb23、lb34、lb41。下标相同的边即为近似平行的对应边,分别计算四组对应边之间的间距,得到四组对应边之间的距离D1、D2、D3、D4,这四个间距可近似用a1、a2、a3、a4分别到lb12、lb23、lb34、lb41的距离来近似,计算方法采用点到直线的距离公式计算:
根据第二最小外接矩形的两个端点可以得到该边所在的直线Ax+By+C=0,其中,A、B、C为直线的参数。获得直线后,可以进一步采用上述公式计算获得四组对应边之间的距离D1、D2、D3、D4。
根据获得的对应边之间的间距,可以判断出具有引脚的侧面。一种实施例是根据四组间距的大小进行判断。如果四组边距中存在有一个数据远小于其它数据,则这个数据对应的芯片侧面没有芯片引脚。对数组中的数据进行遍历,如果不存在数据远小于其它数据,则芯片的四个侧面均存在管脚。具体地,采用以下算式进行是否远小于的判断:
Di>g*min(D1,D2,D3,D4)
其中,Di表示间距数组中的第i个数据,g为设置的常数,g>1,g*min(D1,D2,D3,D4)为设置的阈值。具体地,可以取g=5。
对于有管脚的一侧,利用管脚侧面的四个顶点组成管脚包围框。具体地,如果判断出Di对应的侧面具有管脚,可以根据该侧面的四个顶点:ai、ai+1、bi、ai+1得到管脚包围框。特别地,当i=4时,令i+1为1,即可得到相应的芯片管脚的包围框。芯片管脚的包围框如图6所示。
步骤四,根据芯片轮廓图像、步骤三的判断结果生成封装遮罩图像,将封装遮罩图像与芯片轮廓图像点对点相乘,得到芯片管脚图像。
根据步骤三的判断结果,得到芯片管脚的包围框。对芯片管脚的包围框的像素以1填充,其余部位以0填充,获得封装遮罩图像mask。用封装遮罩图像与芯片轮廓图像做对应元素的乘积,得到芯片管脚图像。
步骤五,对芯片管脚图像进行连通域检测,根据管脚连通域之间的间距进行管脚缺失判断,并根据判断结果在芯片图像中标示出管脚缺失位置。
对芯片管脚图像进行连通域检测,得到管脚连通域;针对中间管脚缺失,设置最大间距阈值,如果相邻管脚连通域间距大于最大间距阈值,则相应管脚连通域之间缺失至少一个管脚;针对两端管脚缺失,计算边缘管脚连通域与管脚区域包围框较短两边的间距,如果所得间距大于相邻管脚连通域间距中的最小值,则边缘管脚到边缘之间缺少至少一个管脚;根据判断结果在芯片图像中标示出管脚缺失位置。下面对判断方法进行详细阐述。
对芯片管脚图像进行连通域检测,得到芯片管脚图像内的所有连通域。根据每个管脚连通域的最小外接矩形,计算连通域最小外接矩形中心点之间的间距,作为管脚连通域之间的间距。根据管脚连通域之间的间距,判断管脚是否缺失。最小外接矩形中心点坐标为其四个顶点坐标和的平均,具体采用以下公式:
其中,(xi,yi)是顶点坐标,(x,y)为计算得到的中心点坐标。根据最小外接矩形的中心点之间的间距进行管脚缺失判断,并根据判断结果在图像中标示出管脚缺失位置。管脚缺失判断分为:中间管脚缺失和两端管脚缺失。两者判断方法不同。
中间管脚缺失方法具体如下:首先,计算得到相邻的最小外接矩形的中心点间距d。理论上,所有的间距d应该相等。但是,在图像处理以及检测过程中,误差不可避免,很难得到精确相等的间距。因此,首先,计算所有中心点间距中的最小值,得到最小间距dmin。根据最小间距,设置最小间距的适当倍数作为阈值。如果存在中心点间距大于该阈值,则该间距过大,该间距的相邻管脚之间缺少至少一个管脚。具体地,该阈值可以设置为中心点间距的1.6倍。
两端管脚缺失的判断方法:根据芯片管脚的包围框,计算包围框中较短的两边的中心点E、F。芯片管脚的包围框较短的两边如图6中两边圆圈所示。分别计算每个管脚的中心点与E、F的距离,所得最小距离即为边缘管脚中心点与E、F的距离。如果相邻的最小外接矩形的中心点间距最小值dmin小于距离,则相应管脚到边缘之间至少缺少一个管脚。根据判断结果在图像中标示出管脚缺失位置,管脚缺失检测结果如图7所示。
步骤六,根据标示的管脚缺失位置,生成管脚缺失位置遮罩,作为样本标注结果,将芯片图像和标注结果作为样本数据集,训练语义分割深度卷积神经网络。
在管脚缺失位置绘制实心圆形,即可得到样本标注结果,圆形的大小需要根据芯片的具体型号以及图片大小具确定,半径不应大于两个管脚的间距。管脚缺失标注结果如图8所示。采集多组芯片图像,即可得到多组样本标注结果,将芯片图像和标注结果作为样本数据集,训练语义分割深度卷积神经网络。
经典的深度卷积神经网络的结构具有很多类型,例如全卷积网络FCN、SegNet,但输入输出的张量具有一定特点。本发明采用预设的深度卷积神经网络进行训练,以VGG-16为例,设网络分辨率为[224,224],则输入输出的张量[C,H,W]大小应为[3,224,224],[2,224,224]。
选择交叉熵损失函数,具体定义如下:
CE(S1(i,j),L1(i,j))=L1(i,j)*log(S1(i,j))
其中S1为通道1的输出结果,L1是绘制圆形得到的样本标注结果,标注值为1,其余为0。将输出结果与样本标注结果所有对应点的损失相加,即输出结果与期望结果之间的损失。
基于交叉熵的损失函数在不同圆形标记大小的情况下,最终收敛的损失函数值不相同,因此,何时停止训练则需要使用测量损失函数下降率来确定。早停止技术已经广泛地应用于深度学习领域,因此,实施者使用何种方法停止训练,本发明不做保护。
一种实施方式是,深度卷积神经网络的损失函数下降率低于阈值时即可停止训练。至此,得到训练好的深度卷积神经网络模型。
步骤七,将待检测芯片图像输入训练好的语义分割深度卷积神经网络,对语义分割深度卷积神经网络结果进行二值化处理,得到精确的芯片缺失位置。
将待检测芯片图像输入训练好的语义分割深度卷积神经网络模型,网络前向传播,得到对应的两个通道的输出,由于交叉熵损失函数的特性,最终的分割结果是通道1而不是通道0。图9为管脚缺失检测语义分割结果示意图,示意了一个待检测芯片图像的语义分割结果。
对通道1即对语义分割结果进行阈值化,得到大于1的部分。由于部分网络具有一些反卷积的操作,因此得到的阈值化结果中可能会存在网格化的现象,这样会导致重复检测。因此,需要使用闭运算对网格化问题进行抑制。实施者应当知道,闭运算是为了闭合网格现象,而非闭合多个检测结果,因此卷积核使用何种大小,后处理加入何种方式都是围绕本发明的精神进行的,均在本发明的保护范围内。
最终得到的阈值分割结果即为待检测芯片图像芯片管脚缺失的位置。
以上实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。