2. 四川建筑职业技术学院 智能计算研究所, 德阳 618000
2. Institute of Intelligent Computing, Sichuan College of Architectural Technology, Deyang 618000, China
塑料制品在成型工艺及生产过程中, 会因为很多因素造成产品的一些缺陷. 传统的缺陷检测方式是通过人工进行, 效率不是很高, 因为视觉疲劳、主观判定和业务水平等因素也达不到统一的检测标准. 利用深度学习的计算机视觉技术进行产品质量的无损检测, 能够保障质量, 降低生产成本, 具有稳定性强、检测精度高等优势.
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所示. 因为细微划痕人眼很难看清楚, 缺陷产品样本以手工加粗线展示.
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.
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]提出的一种针对深度学习广泛应用的正则化技术. 在每次迭代时随机关闭一些神经单元, 即每次迭代时都会训练使用一部分神经元的不同模型, 随着迭代的进行, 由于其他神经元可能在任何时候都被关闭, 因此神经元对其他特定神经元的激活变得不那么敏感.
使用数据增强, 让有限的数据产生更多的等价数据. 数据增强采用从现有训练样本生成更多训练数据, 通过若干随机转换增加样本, 生成可信的图像, 通过数据增强处理样本后, 模型永远不会看到两次完全相同的图像, 这有助于模型学习到更多的图像特征. 实验结果如图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.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所示, 可以看到准确率相比前两阶段的效果有了显著的提高.
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.
|