基于卷积神经网络的玻璃瓶口缺陷检测

2022-06-28 17:46谢泽祺邹光明
制造业自动化 2022年6期
关键词:玻璃瓶灰度边缘

谢泽祺,徐 巍*,邹光明,姜 佳,闵 达

(1.武汉科技大学 冶金装备及其控制教育部重点实验室,武汉 430081;2.武汉科技大学 机械传动与制造工程湖北省重点实验室,武汉 430081)

0 引言

在日常生活中玻璃瓶是一种使用广泛、实用性强的容器。在制造过程中,由于生产工艺、加工设备及人为因素会对玻璃瓶造成不同类型的缺陷。这些缺陷不仅会影响生产商的利润水平,更会影响消费者的使用[1]。在玻璃瓶的生产制造过程中,对于其质量检测环节来说显得尤为重要。

机器视觉作为一种非接触性检测技术,用计算机来模拟人的视觉系统,已经成为检测领域的一个重要发展方向。传统表面缺陷检测通常是由人工来辨识,为解决这类问题Raaffat等[2]在1996年提出一种基于机器视觉的玻璃和塑料检测系统。汤勃等[3]提出Otsu阈值分割法对钢板表面微小缺陷进行分割。吕明珠[4]提出基于K-means聚类的十字线分割法检测印刷品表面缺陷。机器视觉检测技术相比于传统检测技术效率更高、稳定性更强,具有更高的检测速度。随着深度学习的快速发展,一些基于深度学习的方法在不断运用于不同领域。近年来,深度学习的代表卷积神经网络(convolutional neural network,CNN),在图像分类与识别[5]、自然语言识别、语音的识别与合成[6,7]、信号处理和人脸识别[8]等方面应用广泛,且取得了较好的结果。颉潭成等[9]提出利用卷积神经网络识别轴承故障。王豪南等[10]提出基于交叉并行卷积神经网络对货物列车车厢号识。韩林洁等[11]提出一维卷积神经网络对轴承寿命的预测。上述研究表明CNN具有良好的分类效率和质量。

本文通过对玻璃瓶口缺陷图进行预处理,结合卷积神经网络,提出一种基于残差卷积神经网络的玻璃瓶缺陷检测方法,实现缺陷检测及分类。最后通过玻璃瓶口的缺陷检测验证了该方法的有效性和可行性。

1 实验系统及算法原理

1.1 实验系统

图1是玻璃瓶口缺陷检测示意图,分为两个部分。图1(a)是图像获取单元,从瓶口的主要形状和光学角度进行分析,可以确定以无影LED 光照的原理通过光学照明的方式来使瓶口特征更加明显的体现,从而获取整个瓶口的完整信息以便于后期的检测。再由CCD相机获取图像,然后图像采集卡对输出的信号进行实时采集并将数字化处理后的图像传输至计算机中。图1(b)是图像处理和缺陷识别模块,用OpenCV对图像进行预处理,将预处理后的图片构建成实验数据集,用TensorFlow设计出残差卷积神经网络模型,对缺陷图像进行训练和分类,最终达到缺陷检测的目的。

图1 检测系统示意图

图像算法主要分为三个模块:图像初步处理,深度学习网络模型构建,测试数据得出实验结果。算法流程图如图2所示。

图2 图像处理算法流程

1.2 卷积神经网络

卷积神经网络(Convolutional Neural Networks,CNN),属于前馈神经网络。与传统的BP神经网络最大的区别是加入了卷积层和池化层[12~14]。卷积神经网络结构示意图如图3所示。

图3 CNN基本结构示意图

在全连接中每个神经元与前后相邻层的神经元相连,输入是特征,输出为预测结果。在实际项目中输入神经网络时具有更高分辨率的图片使得送入全连接网络的输入特征过多,随着隐藏层层数的增加、网络规模过大、待优化参数过多、容易使模型过拟合。在实际应用时会对原始图片进行特征提取来减少待训练参数。把提取出来的特征送给全连接网络,让全连接网络输出识别结果。

卷积计算是一种有效的特征提取方法。对于图片数据,这种权值相乘累加的运算是在信号处理领域的一种标准运算:离散卷积运算。离散卷积运算在计算机视觉中有着广泛的应用。在信号处理领域,1D连续信号的卷积运算被定义2个函数的积分:函数,函数,其中经过了翻转和平移后变成。卷积的“卷”是指翻转平移操作,“积”是指积分运算,1D离散卷积积分如式(1)所示:

计算机视觉中,卷积运算基于2D图片函数f(m,n)和2D卷积核g(m,n),其中f(m,n)和g(m,n)仅在各自窗口有效区域存在值,其他区域视为0。此时的2D离散卷积定义如式(2)所示:

卷积神经网络通常用局部连接,权值共享和降采样使其具有图像识别不变性来减少权值参数数量[15,16]。局部连接即局部相关性,节点与感受野窗口内的所有像素连接,与窗口外的像素不连接。权值共享通过权值矩阵得到一个局部的信息,局部信息即为一个卷积核,用这个卷积核对全图进行一个卷积运算。降采样是为了减少卷积神经网络中的特征数据量通常采取池化操作,池化同样基于局部相关性的思想,通过从局部相关的一组元素中进行采样或信息聚合,从而得到新的元素值。

2 样本数据预处理

在玻璃瓶的生产中,玻璃瓶口常见的缺陷有小缺口、断口、裂纹和磨损这四种主要缺陷,如图5所示。

图5 玻璃瓶口常见缺陷

为了减少CNN的训练量和训练时和产生的多余窗口,本文将对原始图像进行预处理操作。考虑到玻璃瓶口的大小不变且缺陷分布全在瓶口处,本文通过图像预处理减少了背景干扰,提取图像中缺陷边缘的位置。得到高质量的玻璃图像输出,为接下来的操作提供必要条件。本文中的图像预处理是指对获得的图像进行灰度化处理,包括有二值化处理、平滑处理、阈值检测和边缘检等[17~19]多种操作。

2.1 灰度值转变

为了更好得到图像的梯度特征减少图像后续处理的计算量和提高计算效率,我们通常将三通道的彩色图转变成单通道的灰度图。一幅图像是由许多像素点组成。而每个像素点的颜色都是由R、G、B三个颜色分量决定,每个分量的取值都在0~255之间。白色为255,黑色为0。图像的灰度化处理将图像的三通道转换成单通道。灰度处理的方法通常有分量法、平均值法、最大值法和加权平均法。本文采用加权平均法处理原始图像。公式如式(3)所示:

式(3)中:R(x,y),G(x,y),B(x,y),分别是原始彩色图像的红、绿、蓝三色分量。一般wR=0.299,wG=0.587,wB=0.114时[19],得到的灰度图像效果最好。

2.2 阈值分割和边缘提取

阈值分割是将图像中的目标与背景区分开,分割法是以区域为基础的图像分割方法,它的理论是:根据设置不同的阈值,将图片的像素点划分成多个类别。设初始图片为f(x,y),根据特定的规则在f(x,y)中查找到特征值T,把图像根据阈值进行分割形成2个部分,处理后图像的表达式如式(4)所示:

若b0=0为黑色,b1=1为白色,经过阈值进行分割之后,图像转换为二值图像,在二值图像中只含有黑色和白色两种颜色。

阈值分割的方法有:双峰法、迭代法、OTSU法、最大熵分割法。假设将图像分为背景和前景两个部分。熵代表信息量,图像信息量越大,熵就越大,最大熵算法就是找出一个最佳阈值使得背景与前景两个部分熵之和最大。本文采用最大熵分割法对图像进行分割。

Kapuret提出利用图像熵为准则进行图像分割,是现在仍然使用较广的一种图像熵分割方法。给定一个特定的阈值q(0≤q<K-1),对于该阈值所分割的两个图像区域C0,C1,其估算的概率密度函数可表示为:

式(6)中:P0(q)为q阈值下背景区域像素的累计概率,P1(q)为q阈值下目标区域像素的累计概率,两者之和为1。背景和目标对应的熵表示为:

式(8)中:H0(q)、H1(q)分别表示图像阈值后的黑、白像素相关的熵,也就是背景区域和目标区域的熵。最佳的阈值是H0(q)+H1(q)时得到的最大熵,最大熵如式(9)所示:

最大阈值分割法的结果如图6所示。图6分别显示了小缺口、裂纹、断口、磨损的灰度直方图。由灰度直方图选出阈值灰度级,从而得到缺陷图的二值图像。

图6 缺陷图像直方图和二值图像

边缘检测是图像分割、识别图像的边缘的一个重要方法。根据上一步得到的二值图像,本文采用Canny边缘检测对玻璃瓶口缺陷进行特征提取。Canny边缘提取主要有四步:高斯滤波降噪、计算图像梯度、非极大值抑制和阈值筛选,首先对图像高斯滤波降噪处理,避免出现过多的伪边缘。边缘就是灰度值变化较大的像素点集合,在图像中用梯度来表示灰度值的变化程度和方向综合梯度,通过以下公式计算梯度值和梯度方向:

式(11)中:gy(m,n),gx(m,n)是不同方向梯度值。在高斯滤波过程中,边缘有可能被放大了,通过非极大值抑制使边缘的宽度尽可能为1个像素点。最后阈值筛选,在Canny中使用最大和最小两个阈值筛选边缘提高准确度。其中大于最大阈值的都被检测为边缘,而低于最小阈值的都被检测为非边缘。对于中间的像素点,如果与确定为边缘的像素点邻接,则判定为边缘;否则为非边缘。本文选取的最大阈值为150,最小阈值为50,图7是边缘检测后的图片。

图7 不同缺陷的边缘提取

3 网络搭建

3.1 ResNet网络介绍

卷积神经网络随着网络层数的不断加深,其学习能力也会增强,人们在探索卷积实现特征提取中发现通过加深网络层数取得了越来越好的效果。但是随着网络层数继续堆叠增加,准确率反而下降,单纯堆叠神经网络层数会使神经网络模型退化,以至于后面的特征丢失了前面特征的原本模样。ResNet[20]网络通过深度残差框架解决了这个退化问题。

ResNet模型是由何凯明于2015年提出的一种CNN网络结构。ResNet用了一根跳连线将前边的特征直接连接到了后边,使输出结果H(x)包含了堆叠卷积的非线性输出F(x)和跳过着两层堆叠卷积,直接连接过来的恒等映射x,使得对应元素相加。这一操作有效缓解了神经网络模型堆叠导致的退化,使得神经网络可以向着更深层级发展。

输入x通过两个卷积层,得到特征变换后的输出F(x),与输入x进行对应元 素的相加运算,得到最终输出F(x)=x+F(x)叫做残差模块。如图8所示。由于被跳连线包围的卷积神经网 络需要学习映射F(x)=H(x)-x,故称为残差网络。

图8 残差模块

ResNet中有两种情况,一种情况如图9中的实线所示,这种情况两层堆叠卷积没有改变特征图的维度,也就是它们特征图的个数、高、宽、深度都相同,直接将F(x)与x相加。另一种情况用图中的虚线表示,这种情况中两层堆叠卷积改变了特征图的维度。需要借助1×1的卷积来调整x的维度。使H(x)与F(x)的维度一致。如图9所示。

图9 不同情况的残差模块

3.2 构建网络模型

网络加深会使得网络训练变得十分不稳定,过深的网络层数还会造成网络不收敛和网络不更新。同时网络对超参数也比较敏感,超参数的变化会导致网络训练完全改变。2015年,Google研究人员Sergey Ioffe等提出了一种参数标准化(Normalize)的手段,并基于参数标准化设计了批标准化(Batch Nomalization,简称BN)。

神经网络对0附近的数据更加敏感,但是随着网络层数的增加,特征数据会出现偏离0均值的情况,标准化使数据符合以0为均值,1为标准差的正态分布,把偏移的特征数据重新拉回0附近。批标准化是一个batch的数据做标准化处理,使数据回归标准正态分布。常用在卷积操作和激活操作之间。可以通过以下式子计算批标准化后得到输出特征图:

本文的卷积层和全连接层均采用线性整流函数(Relu函数)作为激活函数。Relu函数是个分段函数,符合激活函数具备近似恒等性。Relu函数在正区间解决了梯度消失的问题,并且只需要判断输入是否大于0,计算速度快。训练参数时收敛速度远快于Sigmoid函数和tanh函数。BN操作可以避免训练中过多的负数特征进入Relu函数导致神经元死亡。

在本文模型的构建中通过卷积层、批标准化层、激活函数层的堆叠构建出残差神经网络的一个基本块,每个基本块有两个卷积。整个模型第一层采用64个3×3的卷积核,步长为1,全零填充,采用BN操作,Relu激活。第一个块是两条实线跳连的维度相同的ResNet块,接下来的第二,三,四块先由虚线连接不同维度的ResNet块,再由实线连接相同维度的ResNet块,每条虚线的借助1×1的卷积调整使得维度一致。最后经过平均全局池化和全连接得到残差卷积神经网络结构,整个网路结构一共18层,如图10所示。

图10 残差网络模型结构图

配置网络模型的训练方法,选择Adam优化器对算法进行优化,用分类交叉熵函数作为损失函数。告知网络评测指标。最后使用分类器对不同缺陷数据进行分类。

4 实验结果分析

4.1 数据集

本文采用CCD相机和图像采集卡获取玻璃瓶口缺陷图像,将图像预处理后自制数据集。在深度学习的过程中数据集是十分重要的,当训练集中的样本数不够多容易造成过拟合,为了使神经网络具有更好的泛化性,同时增加模型鲁棒性。通过旋转、镜像等操作可以扩充样本数据集,增加数据集的数量。

在本次实验中,图像处理采取旋转和镜像操作来扩充数据集,预处理得到的结果为训练集图像2000幅和测试集图像200幅。如表2所示。

表2 训练集和测试集分布

4.2 网络训练及结果分析

完成预处理的操作后将归一化的图像数据导入网络模型,对玻璃瓶口缺陷分类。操作系统为Window10 X64,包含NVIDIA GeForce GTX 1660Ti GPU显卡机器,内存8G,该实验在TensorFlow框架下进行训练,本文的迭代轮为10000,动量为0.9,学习率为0.001。为了防止过拟合,提高模型的泛化能力,在模型训练的过程中,将训练集按照5∶1进一步地划分为训练集和验证集。在本文中训练集数量为2000,验证集数量为400。

随着网络迭代次数的逐渐增加,ResNet网络模型达到了非常好的收敛状态。网络模型的训练集损失曲线和验证集曲线呈逐步下降状态,网络模型的识别率曲线呈逐步上升的状态,并在迭代8000次时达到了95.5%。网络模型的训练集损失曲线、验证集损失曲线和识别率曲线如图11所示。

图11 缺陷图像识别准确率及损失曲线

使用卷积神经网络模型对4类缺陷的检测结果如表3所示。

表3 测试集缺陷检测结果

从表3可以看出玻璃瓶口缺陷检测网络以95.50%的正检率完成了共计200个样本,其中小缺口和磨损存在漏检和错检,裂纹存在漏检,这是因为过小的缺口不易归类。

为了进一步验证卷积神经网络的性能,本文设计了对比实验,分别使用BP神经网络、VGG-6网络、SF两层网络、文献[21]所提的阈值统一局部TULBP+BP神经网络缺陷检测方法和文献[22]所提的局部二值模式LBP陷检测方法,与本文所提ResNet实验结果进行比较,统计了以上6种方法的正检率及漏检率,结果如表4所示。

表4 ResNet与其他方法对比

实验对比可知ResNet的漏检率最低,且正检率最高,具有较高的精度。

5 结语

针对玻璃瓶缺陷人工检测复杂困难这一问题,本文提出基于卷积神经网络的玻璃瓶口缺陷检测。本文将玻璃瓶口缺陷图像进行阈值分割,使用Canny算子提取缺陷边缘,将预处理的图片自制数据集。再用ResNet卷积神经网络对玻璃瓶口缺陷处理图像进行分类,验证出卷积神经网络对检测玻璃瓶口缺陷的可行性。为验证ResNet的网络性能,用ResNet网络与其他网络等自动分类方法做比较,得出ResNet具有较高的精度和准确性。随着玻璃瓶产业的发展,该自动缺陷检测方法对玻璃瓶质量检测应用具有现实意义。

猜你喜欢
玻璃瓶灰度边缘
两个玻璃瓶
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
Arduino小车巡线程序的灰度阈值优化方案
玻璃瓶中的妖怪
一张图看懂边缘计算
瓶子回收桶
基于热区增强的分段线性变换提高室间隔缺损超声图像可懂度研究
在边缘寻找自我
走在边缘