计算机系统应用  2020, Vol. 29 Issue (11): 271-275   PDF    
卷积神经网络自动分类手机外壳划痕
张光建1,2, 朱婵1,2     
1. 四川建筑职业技术学院 基础部, 德阳 618000;
2. 四川建筑职业技术学院 智能计算研究所, 德阳 618000
摘要:塑料手机外壳出厂合格检测时, 使用传统的人工辨别外观缺陷, 费时费力. 利用深度学习的卷积神经网络模型训练一个分类器, 实现手机外壳外观出现的划痕缺陷自动化检测, 可以极大的提高工作效率. 实验首先建立基本的卷积神经网络模型, 训练模型获得识别基线, 再设计修改逐步提高检测准确率. 为了解决小数据集训练中的模型过拟合和提高检测精度, 综合使用了丢弃层、数据增强技术和批量标准化, 减少参数量, 并应用迁移学习等方法. 实验结果证明, 分类器模型能有效提升准确率, 在小数据集上达到非常好的划痕缺陷识别效果.
关键词: 划痕缺陷    卷积神经网络    深度学习    迁移学习    小样本学习    
Automatic Classification of Scratches on Mobile Phone Shell by CNN
ZHANG Guang-Jian1,2, ZHU Chan1,2     
1. Department of Fundamental Subjects, Sichuan College of Architectural Technology, Deyang 618000, China;
2. Institute of Intelligent Computing, Sichuan College of Architectural Technology, Deyang 618000, China
Foundation item: Science and Technology Supporting Program of Deyang, Sichuan Province (2017ZZ058); Science and Technology Projects of Sichuan College of Architectural Technology (2017KJ11)
Abstract: Plastic mobile phone shell factory quality inspection. It’s time-consuming and uses traditional manual methods to identify appearance defects. The classifier uses the convolution neural network model of deep learning to train. This classifier can automatically detect the scratch defects on the appearance of mobile phone shell, which can greatly improve the work efficiency. In the experiment, a basic convolution neural network model is established firstly, the recognition baseline is obtained by training model, and then the detection accuracy is gradually improved by design modification. In order to solve the model over fitting and improve the detection accuracy in small data set training, the dropout, data augmentation method and batch normalization are used to reduce the amount of parameters, and the transfer learning method is applied. Experimental results show that the classifier model can effectively improve the accuracy and achieve a very good scratch defect recognition effect on small data sets.
Key words: scratch defect     convolutional neural network     deep learning     transfer learning     few shot learning    

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

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维度的展平为形状为36992的一维向量, 再添加最后一层全连接层(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中的ImageDataGenerator实例读取的图像执行的多个随机转换来完成数据增强, 相关参数设置为: 随机选择图片的角度值为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]和微调(fine-tuning). 在大规模数据集训练提取的特征权重为基础来更新网络. 一般来说, 深度学习在大量数据可用时, 才能有效的学习, 模型才能从数据自身通过学习完成特征提取. 因为深度学习模型本质上是高度可调整的, 在大规模数据集上训练的图像分类模型权值, 在类似任务上重复使用它, 只需要进行细微的更改. 在计算机视觉的任务中, 许多预先训练的模型权重, 可以用来从非常少的数据中引导强大的视觉模型.

在第二阶段实验基础上, 在模型每个池化层前添加批量归一化层, 优化器使用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模型的结构简洁, 训练速度快, 检测精度高. 后期将对手机外壳质量检测中的多种表面缺陷产品进行样本采集, 进一步训练模型, 完成落地实验.

参考文献
[1]
韩芳芳. 表面缺陷视觉在线检测关键技术研究[博士学位论文]. 天津: 天津大学, 2012.
[2]
张王黎. 基于机器视觉的塑料制品缺陷检测算法研究[硕士学位论文]. 广州: 华南理工大学, 2014.
[3]
文生平, 洪华锋, 舒凯翔. 精密注塑手机外壳表面缺陷视觉检测系统设计. 塑料工业, 2017, 45(9): 53-56. DOI:10.3969/j.issn.1005-5770.2017.09.012
[4]
王武. 手机壳体表面缺陷视觉检测技术研究[硕士学位论文]. 南京: 南京航空航天大学, 2018.
[5]
Wu XJ, Xiong HJ, Yu ZY, et al. A surface defect detection method based on multi-feature fusion. Proceedings of 9th International Conference on Digital Image Processing. Hong Kong, China. 2017. 104200S.
[6]
Hinton GE, Osindero S, Teh YW. A fast learning algorithm for deep belief nets. Neural Computation, 2006, 18(7): 1527-1554. DOI:10.1162/neco.2006.18.7.1527
[7]
LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791
[8]
Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. Communications of the ACM, 2017, 60(6): 84-90. DOI:10.1145/3065386
[9]
崔炽标. 注塑件常见外观缺陷检测系统的研究与开发[硕士学位论文]. 武汉: 华中科技大学, 2017.
[10]
Weimer D, Thamer H, Scholz-Reiter B. Learning defect classifiers for textured surfaces using neural networks and statistical feature representations. Procedia CIRP, 2013, 7: 347-352. DOI:10.1016/j.procir.2013.05.059
[11]
胡诗尧, 周华民, 郭飞, 等. 基于迁移学习的塑件外观缺陷柔性检测方法. 模具工业, 2019, 45(6): 1-8.
[12]
Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: A simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 2014, 15(1): 1929.
[13]
Hinton GE, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors. arXiv: 1207.0580, 2012.
[14]
Deng J, Dong W, Socher R, et al. ImageNet: A large-scale hierarchical image database. Proceedings of 2009 IEEE Conference on Computer Vision and Pattern Recognition. Miami, FL, USA. 2019. 248–255.
[15]
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. arXiv: 1409.1556, 2015.
[16]
Howard AG, Zhu ML, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv: 1704.04861, 2017.