APP下载

基于图像增强和CNN的布匹瑕疵检测算法

2021-06-03俞文静李梓瑞赖冬宜

计算机技术与发展 2021年5期
关键词:布匹图像增强直方图

俞文静,刘 航,李梓瑞,赖冬宜

(广州大学华软软件学院,广东 广州 510990)

0 引 言

在纺织工业生产中,影响布匹质量和生产效率的主要因素是纺织机器的故障或者人工操作失误所造成的布匹疵点和破损,传统检测方法以人工方式肉眼观察为主要手段。检测者凭借眼睛去观察,发现布匹的瑕疵并判断布匹出现瑕疵的原因,对生产机器和人工操作做出及时调整,减少生产损失。人眼检测的效率低下,人工成本较大,耗时耗力。因此,研究自动化、智能化的针织物瑕疵检测的应用设施已经成为纺织行业、信息技术行业的热点。

近年来,国内外将机器视觉技术应用于布匹瑕疵检测已取得一些成果,其中具有代表性的Ye[1]提出基于图像直方图统计变量的模糊推理,对瑕疵具有旋转平移不变性的优点,但是对图像的噪声特别敏感;基于Gabor变换的方法[2]和基于滤波器的方法[3-4]能够基于不同的尺度图像获得较高维度的特征空间,对于边缘瑕疵、孔洞具有很好的检测效果,但是滤波器的参数值较难优化且算法计算量大。

综上所述,已有的研究成果在保持瑕疵变换不变性和边缘检测等方面有很好的效果,但是容易受到图片噪声的影响和计算量大的制约。借鉴于此,结合卷积神经网络图像识别算法,该文提出一种基于图像增强和CNN的单色布匹瑕疵检测方法。

1 算法思路及设计

如今,卷积神经网络(convolutional neural network,CNN)在图像识别领域冠绝一时,不仅对图像中的无数特征有着强大丰富的表达能力,且在图像变换不变性、背景复杂的条件下依然有很强的分类与泛化能力[5-7]。传统的深度学习模型(如AlexNet[8],VGGNet[9],ResNet[10])在1 000种物体的分类精度已达到很高的水平,因此近年来有一些将传统的深度CNN模型用于布匹瑕疵检测的尝试。然而大型卷积神经网络模型的层次较深、参数数量庞大,容易导致模型出现过拟合,效果不太理想。

结合以上分析,针对布匹瑕疵特征数据量小和受到布匹纹理特征干扰大的特点,考虑到传统图像增强方法对布匹瑕疵检测容易受到光照不均匀、图像噪声的影响,该文设计了一个含有3个卷积层、3个池化层、2个全连接层的CNN模型。然后提出一种结合图像增强技术的模型训练方法,将原始图片样本进行特征增强[11-12]提高样本图片的对比度,增强了布匹样本中的特征点,以此来提升模型训练效果。

该文将CNN应用于布匹瑕疵检测,首先对布匹图像中出现的瑕疵特征进行取样和分类,包括5种瑕疵(毛斑、吊经、扎洞、织稀、跳花)及正常布匹共6种样本图像,建立实验所需要的图像样本库。然后将原始样本数据集拷贝为两份,分别划分训练集、验证集和测试集:其中一份不做图像增强处理,直接作为文中模型的输出层数据训练分类模型;另一份先进行图像增强处理,再利用增强后的数据集训练分类模型。最后利用测试集分别对两组实验模型的性能进行测试。采用方法的步骤具体如下:

①对布匹样本图像进行取样和分类,建立样本库。

②将原始样本库拷贝为两份,分别划分为训练集、验证集和测试集。

③对其中一份数据集进行图像增强,提高图片的对比度,降低噪声,增强边缘特征。

④分别构建并训练CNN模型。

⑤测试模型性能。

整个检测流程见图1。

图1 检测流程

2 图像增强

2.1 直方图均衡化

在图像的灰度直方图中,灰度分量较低的部分代表了图像的暗区域,而灰度分量较高的部分代表了图像的亮区域。直方图均衡化[13]是一种常用的灰度变换方法,通过将原始图像中高低不等、分布不均衡的灰度分量进行调整,使得灰度值在整个直方图中近似于均匀分布,也就是图像像素在[0,255]这个灰阶范围上的分布更加均衡,那么图像的灰度动态范围和明暗对比度就得到了提高,图像的细节就得到了增强。

对于灰度级范围为[0,L-1]的数字图像,其直方图可以表示为一个离散函数:

h(rk)=nk

(1)

其中,nk是第k级灰度值rk的像素个数。也就是说,横坐标代表了灰度值rk,纵坐标代表了该灰度级的个数nk。实际应用中,通常要先对直方图进行归一化,假设灰度图像的维数是M×N,MN表示图像的像素总数,则归一化直方图可以表示为:

(2)

其中,p(rk)表示灰度级rk在图像中的出现概率,归一化直方图所有分量之和等于1。

2.2 图像降噪

图像降噪采用均值滤波,主要方法是先定义一个固定大小和参数的滤波器模板,该模板通过领域平均法来计算中心像素点的值,对整幅图像的像素值重新赋值,以达到图像降噪的目的,但同时会模糊图像的边缘。对于布匹瑕疵图像,该文使用的是简单有效的算数均值滤波器。令Sxy表示中心点在(x,y)处,大小为m×n的滤波器窗口。算术均值滤波器计算中心点领域像素均值并赋给中心点的过程可以表示为:

(3)

其中,g(s,t)表示原始图像,f(x,y)表示均值滤波后得到的图像。

2.3 边缘检测

边缘检测是图像增强中的一个重要部分,它通过检测图像中亮度变化梯度大的像素点识别图像的边缘部分,根据特定需求可以大幅度地减少原始图像中的无效数据量,保留了图像重要的结构属性。该文选择Sobel边缘检测算子,它包含两组3×3的矩阵,分别为横向及纵向模板,可以分别检测图像的垂直边缘和水平边缘。在瑕疵布匹图像中,瑕疵部分一般都与正常部分的像素值不同,并且在布匹瑕疵检测中并不关心正常布匹的纹理特征。而Sobel算子恰好对此细纹理不敏感,因此可以大幅度减少布匹中与瑕疵部分无关的特征信息,这大大减少了之后卷积神经网络学习中需要提取的数据信息量。

通常将以下两个模板(见式(4)、式(5))与图像作平面卷积来检测图像边缘,就可以分别获得图像横向及纵向的亮度差分近似值。

检测水平边沿横向模板Gx:

(4)

检测垂直边沿纵向模板Gy:

(5)

图像中每一个像素点的横向和纵向梯度近似值的大小可用式(6)来计算:

(6)

通常,为了提高效率,使用不开平方的近似值表示为:

|G|=|Gx|+|Gy|

(7)

如果梯度G大于某一阈值,则认为该点(x,y)为边缘点。

3 CNN

3.1 经典CNN模型结构

经典的CNN模型[14-16](见图2,图中省略了激活函数层)包括卷积层、池化层、全连接层、激活函数层ReLU和分类器损失函数层Softmax。

图2 经典CNN结构

C表示卷积,用来提取特征,其计算公式为 :

(8)

输入特征图的通道数为I;输出特征图的通道数为J;xi表示第i个通道输入特征图;yi表示第j个通道输出特征图;kij表示xi与yj之间的卷积核;*表示卷积操作;bj表示第j个通道输出特征图的偏置项,上标(r)表示卷积区域,f表示激活函数,用来增加模型的非线性。

P表示池化,用来减小输入矩阵的宽高的大小,筛选主要的特征,降低特征的维度,主要方法有均值池化和最大值池化,目的是降低后续操作中的计算量。

FC表示全连接层,一幅图像经过层层卷积可以提取出数以千计的特征图像,全连接层上的神经元与这些特征图像的节点相连,将这些特征综合起来送入Softmax分类器中计算分类概率值。

3.2 文中CNN模型结构

参照AlexNet模型,该文设计了一个由1个增强层E,3个卷积层C,每个卷积层后接一个ReLU激活函数,3个池化层P,2个全连接层FC,1个Softmax层组成的简化布匹瑕疵检测模型(见图3,其中省略ReLU层)。

图3 网络训练结构

表1给出了该模型的网络拓扑结构,其中E为第一层(输入层)的一个图像预处理层,它依次通过三种图像处理算法,增强输入层数据的特征点,剔除大量在布匹瑕疵检测中干扰机器学习精度的布匹纹理特征,更有利于反映不同类别间的特征差异。

表1 文中模型CNN设计

根据目前AI学习界在卷积神经网络中的大量尝试和经验,结合该文对于布匹瑕疵特点的分析,模型的设计原则总结如下:

(1)对于布匹图像数据规模小且纹理简单的特点,需要一定量地减少网络中参数的数量,这样既可以降低模型的计算量和内存占用空间,又可以减少模型过拟合的程度。

(2)在进行模型预测实验的分析时发现,原始数据即使在经过数据扩充后也依然会存在许多相似之处,来源于同一原始图像扩充后的数据经过图像增强之后,所保留的瑕疵特征比较相似,这可能造成过拟合。因此,提高原始数据的多样性依旧是该算法的重要工作之一。

4 实验结果与分析

4.1 建立布匹样本库

布匹样本均来源于国内某知名AI挑战赛所公开提供的布匹图像数据,该文挑选了该批布匹图像中的主要单色织物(灰色),选取出现布匹瑕疵(a.毛斑、b.吊经、c.扎洞、d织稀、e跳花,见图4),将这5种瑕疵图像与正常布匹图像建立布匹瑕疵数据集。

图4 布匹瑕疵样品

实验所获得的原始布匹图像为普通摄像机所拍摄,每张图像分辨率为2 560×1 920,对这些原始图像进行人工的瑕疵判别分类,选取了5种数量占比较大的瑕疵图像和正常图像进行样本采集,每幅图像的采集分辨率为500×500。对数量不足的瑕疵图像进行数据扩充,每个类别得到100张样本图像。

4.2 图像增强效果

文中实验中,布匹瑕疵图像增强部分所用到的算法均源于OpenCV库。布匹瑕疵图像依次经过了直方图均衡化、均值滤波和边缘增强的处理,对6种类别部分样本图像的处理效果见图5。

图5 布匹瑕疵图像增强效果

其中,第一列表示的是布匹图像的原始灰度图,第二列是对第一列进行直方图均衡化后的结果,第三列是对第二列进行均值滤波后的结果,第四列表示的是对第三列进行边缘检测的结果,也是布匹样本图像增强后的最终结果。

由图5中各类布匹样本图像的增强效果可以看出,尽管样本图像来自几种细纹理不同的单色布匹,原始图像数据采集过程中由于布匹摆放不平整和光照拍摄角度的影响,使得样本图像的结构和色调略有不同,但通过本文所提出的图像增强算法和检测算法都能将瑕疵从布匹纹理背景中提取出来。这些实验性的结果证明了本文增强算法对布匹瑕疵检测的有效性。虽然最终结果中图像部分瑕疵的细节在处理过程中被消除或掩盖掉了,但与原始图像对比,瑕疵部分的特征更加明显了。这为本文CNN模型的特征提取提高了效率和精准度。

4.3 文中网络模型实验结果

文中实验重点研究了布匹瑕疵检测在基于Python开发语言上的实现效果,实验的物理环境为:64位的Windows 10操作系统PC机一台,8.00 GB内存,CPU为Intel(R)Core(TM)i5-6300HQ,GPU为NVIDIA Geforce GTX 950M,主要软件环境有Python 3.6版本、OpenCV 3.1版本、TensorFlow 2.0版本、NVIDIA显卡加速库CUDA 10.0版本、神经网络加速库cuDNN v7.6.4版本。深度学习框架为Keras,将数据集中各个类别的图像随机抽取70%作为训练集,10%作为验证集,20%作为测试集。

为了验证文中模型对布匹瑕疵检测的有效性,设计了另一组不处理原始图像的CNN模型(参考图3),该对照模型除了没有图像增强层E以外,其余训练参数皆与文中模型相同。实验导入模型可视化模块来直观地观察模型的性能,每当数据训练迭代完一遍,便记录其训练参数的历史数值,最后通过Matplotlib的图像功能显示出来。两组模型的训练情况见图6。

对照模型损失度 对照模型精确度 文中模型损失度 文中模型精确度

由图6可以看出,在文中提出的模型中,验证集上的损失度曲线和精确度曲线都比对照模型更加趋近于训练集曲线,体现了该模型拥有更好的收敛性,并且误差也降低到比较低的水平。为了进一步验证模型的有效性,实验使用各组的测试集数据继续对两组模型的性能进行测试,结果如表2所示。可以看出,文中模型相比对照模型的识别准确率有不错的提升,错误率大幅降低。

表2 模型测试结果对比

5 结束语

结合传统图像增强技术和卷积神经网络算法,针对布匹瑕疵特征数据量小和受到布匹纹理特征干扰大的特点,提出并设计了一个简化的CNN模型,并将样本数据进行图像增强处理后进行模型训练。实验结果表明:

(1)相对于经典的深度卷积神经网络,所使用的简化CNN模型结构在布匹瑕疵检测上的内存空间占用和计算量更少,模型训练速度较快。

(2)结合使用直方图均衡化、均值滤波和边缘检测三种传统图像增强方法对样本图像进行增强处理,尽可能地去除掉瑕疵检测中所不关心的布匹细纹理特征,保留布匹的瑕疵特征。

(3)相对于单独使用传统图像增强技术或者单独使用卷积神经网络进行布匹瑕疵检测,将使用传统增强算法处理过的布匹样本图像作为卷积神经网络的输入层数据进行训练。减少了使用传统算法的计算复杂度,提高了卷积过程中瑕疵特征的有效提取率,降低了模型的计算量和误差。

基于小规模布匹瑕疵样本的训练模型,有可能在海量数据的样本测试中降低效果,扩充训练样本的多样性和实现输出分属各类的概率将是下一步的研究目标。

猜你喜欢

布匹图像增强直方图
通过图像增强与改进Faster-RCNN网络的重叠鱼群尾数检测
一种基于轻量级深度网络的无参考光学遥感图像增强算法
审布匹
用直方图控制画面影调
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
例析频率分布直方图
中考频数分布直方图题型展示
基于双树四元数小波变换的图像降噪增强
选择的价值
有漏洞的账本