卷积神经网络自动分类手机外壳划痕①

2020-11-24 05:47张光建
计算机系统应用 2020年11期
关键词:分类器准确率卷积

张光建,朱 婵

1(四川建筑职业技术学院 基础部,德阳 618000)

2(四川建筑职业技术学院 智能计算研究所,德阳 618000)

塑料制品在成型工艺及生产过程中,会因为很多因素造成产品的一些缺陷.传统的缺陷检测方式是通过人工进行,效率不是很高,因为视觉疲劳、主观判定和业务水平等因素也达不到统一的检测标准.利用深度学习的计算机视觉技术进行产品质量的无损检测,能够保障质量,降低生产成本,具有稳定性强、检测精度高等优势.

1 相关研究

国内外学者对缺陷检测分类器的早期研究,是基于图像的外观、颜色、形状等特性,通过人工提取特征,再利用机器学习算法进行分类器的训练.如韩芳芳[1]利用边缘提取和小波变换和支持向量机对表面凹坑缺陷检测研究;张王黎[2],文生平等[3]采用改进的二值图像熵阈值分割方法对采集到的图像进行缺陷分割,再建立检测系统;王武[4]采用了局部自适应阈值分割算法,使用图像处理技术,利用几何特征完成缺陷的提取;Wu 等[5]利用子图像灰度差、颜色直方图和像素规则性3 种图像特征融合,进行工业产品表面缺陷检测,检测精度在93%~98%之间.

深度学习[6]对输入的高维数据对象,通过逐层进行多维度运算,将高维数据转换为低维编码,最后输出结果.在语言和图像识别方面,远远超过早期技术取得的效果.

卷积神经网络(Convolutional Neural Networks,CNN)[7]是包含卷积计算且具有深度网络结构的前馈神经网络(Feedforward Neural Networks),是深度学习的代表算法之一.2012年,Krizhevsky 等提出了一种现代化的卷积神经网络AlexNet[8],开创了深度学习元年.CNN 能够自动完成特征学习提取,大幅度的提高分类和预测的精度.

近年来,CNN 也开始应用于产品外观类的检测.崔炽标[9]使用CNN 对注塑件常见外观缺陷检测进行研究,其中对手机中壳注塑件的划痕类图像的检测正确率能达到91.4%以上.Weimer 等[10]训练神经网络分类器.对任意纹理和弱标记图像数据进行表面缺陷检测,在对手工标注的容器成型检测中取得了很好的检测效果.胡诗尧等[11]利用迁移学习对塑件外观缺陷进行检测,以黑点为例,取得了很好的检测效果.但总体来看,注塑件外观缺陷识别检测,离实际生产检测要求还有一段距离.

2 数据集

数据集包括正样本(合格产品图像)和负样本(缺陷产品图像).样本的采集是通过对实物360 度进行视频录像,再对视频进行按帧采集图像,原始图像分辨率为1280×720,为了加快模型训练,方便后期的操作,使用深度学习中常用的输入图像尺寸处理方案,将原始图像调整为正方形,这里使用分辨率为150×150,3 通道.共采集了2925 张图像,其中1505 张为合格样本,1420 张为缺陷样本.训练集、验证集和测试集按照70%、20%和10%比例,因为是视频连续采样,为了保证各类数据的平衡性,这里使用手工分层获取这3 个数据集.合格和缺陷产品样本如图1所示.因为细微划痕人眼很难看清楚,缺陷产品样本以手工加粗线展示.

图1 数据样本

3 模型

模型使用基本的卷积层、池化层、全连接层建立基础的卷积神经网络模型,网络结构如图2所示.输入图像尺寸为150×150×3,即图像长宽都是150 像素,通道为3 (RGB 三通道图像),首先使用32 个3×3 的滤波器(conv2d_1) 和2×2 的最大池化层(max_pooling21_1)进行池化操作;接着使用64 个3×3 的滤波器(conv2d_2)和2×2 的最大池化层(max_pooling21_2)进行池化操作;最后使用128 个3×3 的滤波器(conv2d_3)和2×2的最大池化层(max_pooling21_3)进行池化操作;因为前面输出的张量形状为三维,需要将三维输出展平为一维以适应模型分类器的输入值要求,最后将三层卷积后的17,17,128 维度的展平为形状为36 992 的一维向量,再添加最后一层全连接层(dense_1),使用512 个隐藏神经元,学习提取特征并减少参数量,这里使用ReLU 激活函数会使一部分神经元的输出为0,这样就形成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生.网络中的4 层都采用ReLU 激活函数;输出值为二分类,所以最后再添加一个输出为1 的全连接层(dense_2),使用Sigmoid 激活函数.

4 仿真实验

仿真实验环境在Microsoft Windows 10 平台上搭建,硬件主要配置为Intel® Core™ i7-8700 @ 3.2GHz处理器,16 GB 内存单个GPU,NVIDIA GeForce GTX1070.网络模型使用TensorFlow 后端,前端编码使用Keras完成(Keras 是一个由Python 编写的开源人工神经网络库),图形绘制使用Matplotlib.

图2 基本模型结构

4.1 设置基准线

模型训练的参数设置为:损失函数loss 使用binary_crossentropy,优化器选用rmsprop,学习率为1e-4,评估模型在训练和测试时的性能指标选用准确率(metrics=['acc']),训练50 批次,每批次100.训练集准确率61%,损失值为0.65,验证集准确率为57%,损失值为0.70.以这些值作为检测的基准线,研究使用不同技术,在基准线上提升模型性能.

绘制训练集和验证集的精度(acc)和损失(loss)曲线对比图,如图3所示.图中明显的对比可以看出模型训练效果不理想.训练集精度值(Training acc)在60%左右,验证集测试时在acc 和loss 上有振荡.

4.2 模型改进

在传统机器学习领域,分类识别图像的标准流程是特征提取、特征筛选,最后将特征向量输入合适的分类器完成特征分类.早期主要使用人工特征提取方法进行模型训练,但人工提取特征需要领域专家进行专业设计,耗时且不稳定.

CNN 能从大量数据样本中自动学习特征,不需要传统的特征工程.针对小数据集上使用深度学习,训练模型不是很友好,提取特征相对薄弱且训练时容易过拟合,这里应用两个重要的深度学习技术:Droupout(丢弃层)和数据增强 (data augmentation).Dropout 是Srivastava 等[12]提出的一种针对深度学习广泛应用的正则化技术.在每次迭代时随机关闭一些神经单元,即每次迭代时都会训练使用一部分神经元的不同模型,随着迭代的进行,由于其他神经元可能在任何时候都被关闭,因此神经元对其他特定神经元的激活变得不那么敏感.

图3 模型的基准检测效果

使用数据增强,让有限的数据产生更多的等价数据.数据增强采用从现有训练样本生成更多训练数据,通过若干随机转换增加样本,生成可信的图像,通过数据增强处理样本后,模型永远不会看到两次完全相同的图像,这有助于模型学习到更多的图像特征.实验结果如图4所示.

在第一阶段实验基础上,在基础模型的全连接层前添加一层Droupout,参数为0.5;Keras 中的ImageData Generator 实例读取的图像执行的多个随机转换来完成数据增强,相关参数设置为:随机选择图片的角度值为40,图片随机水平和垂直偏移的幅度为0.2,剪切变换的程度和随机缩放的幅度值为0.2,可以进行随机水平翻转.同样训练50 批次后,训练准确率达到84%,损失值为0.36,验证集准确率为81%,损失值为0.52,明显改善了模型效果.使用正则化技术或者调整模型的网络参数,如增加每层的滤波器个数,增加网络层数或者增加训练迭代次数,模型迭代训练68 次,训练准确率达到92%,损失值为0.22,验证集准确率提升为94%,损失值为0.20.但数据样本规模太小,特征学习还需要加强,使用其他技术进一步提升模型效果.

图4 数据增强模型的检测效果

4.3 提升准确率

使用早停、批量归一化、迁移学习和微调,进一步调整网络模型及训练.早停技术(early stopping)是一种简单的正则化方法,只需监控验证集性能,如果发现验证集性能不再提高,就停止训练.

使用预训练网络(pretrained network),可以采用二种策略:特征提取(feature extraction)[13]和微调(finetuning).在大规模数据集训练提取的特征权重为基础来更新网络.一般来说,深度学习在大量数据可用时,才能有效的学习,模型才能从数据自身通过学习完成特征提取.因为深度学习模型本质上是高度可调整的,在大规模数据集上训练的图像分类模型权值,在类似任务上重复使用它,只需要进行细微的更改.在计算机视觉的任务中,许多预先训练的模型权重,可以用来从非常少的数据中引导强大的视觉模型.

在第二阶段实验基础上,在模型每个池化层前添加批量归一化层,优化器使用Adam,最后输出为2 的全连接层(dense_2),使用Softmax 激活函数.数据增强调整缩放因子rescale=1./255,batch_size=33.在两个池化层后添加一层Droupout,参数为0.5.使用在Imagenet[14]上训练提取的特征权重进行迁移学习,分别冻结VGG16[15]前15 层和MobileNet[16]前81 层,进行微调,再解冻所有层进行训练.最终获得的检测效果,如表1所示,可以看到准确率相比前两阶段的效果有了显著的提高.

表1 迁移学习检测效果(%)

5 结论

使用CNN 网络模型,搭建小数据样本的手机外壳表面划痕缺陷分类器,自动完成产品检测.模型设计中合理使用丢弃层,批量归一化层,对数据增强扩充样本,训练时采用迁移学习、微调等技术,采用早停技术监测网络训练,模型可以获得较好的实验检测精度.CNN模型的结构简洁,训练速度快,检测精度高.后期将对手机外壳质量检测中的多种表面缺陷产品进行样本采集,进一步训练模型,完成落地实验.

猜你喜欢
分类器准确率卷积
基于全卷积神经网络的猪背膘厚快速准确测定
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
学贯中西(6):阐述ML分类器的工作流程
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
基于朴素Bayes组合的简易集成分类器①