1. 引言
锂电池电芯表面蓝膜起到对电池起到保护作用,但是在生产过程中由于外力作用导致部分蓝膜存在表面破损等缺陷,影响蓝膜效果,最终导致电芯存在安全隐患,而采用传统的人工目视法效率低下且错检误检的概率高,这就需要采用深度学习的方式实现对传统人工目视法的取代。针对性的机器视觉方案在面对单一场景的检测往往可以取得优异的效果,在面对复杂多变的场景时缺乏泛化性,采用深度学习方法来解决这些局限性是目前比较常用的。
与现有的深度学习方法相比,本文针对电芯蓝膜缺陷检测的特点,采用了基于Resnet50分割网络改进模型。相较于传统的分割网络,该方法更容易捕获小的图像细节,且极大的提高了配准效率。此次之外本文仅使用适当数量的训练图像及可获得较为准确的缺陷检测结果。本文的主要贡献为:
1) 在数据预处理阶段将蓝膜大图像进行裁剪,经过数据增强后包含605张电芯蓝膜缺陷图片,制作了一个电芯表面缺陷数据集。
2) 通过对初步分割的图像进行检测,降低了模型训练的硬件要求以及采用训练完模型检测缺陷的时间成本。
3) 采用Resnet50残差网络对蓝膜图像进一步分割,在蓝膜缺陷数据集上取得了可行的效果,可以实现检测出细小缺陷。
2. 相关工作
2.1. 金属缺陷检测
在深度学习的缺陷检测领域国内外学者进行了一系列研究 [1] ,Kang [2] 采用深度去噪编码器,利用其误差重建以此检测绝缘子图像中的缺陷。Youkachen [3] 使用MSE重建误差以及卷积自动编码器 (Convolutional Autoencoder, CAE)进行图像的重建,采用一种锐化处理的方法,获取热轧带钢表面缺陷分割出的结果。Zhao [4] 等将原始图像与重建后的图像利用LBP算法处理,然后采用再做差方法利用GAN和CAE进行表面缺陷图像的重建。
2.2. 图像分割
现有的使用深度学习进行缺陷检测的方法中,较为先进的分割网络是编码器体系结构,在U-Net与全卷积网络(FCN)基础上发展而来 [5] 。这些分割网络有一个相似性,采用先编码再解码的结构可以有效获得图像的细节 [6] ,近年来利用自编码方法进行缺陷检测逐渐兴起,Rumelhart [7] 等最早提出了自编码器的概念,Bourlard [8] 等对其进行了详细的阐释。然而在电芯工业生产中,缺陷相对蓝膜大图像非常细小。表面缺陷的检测中,缺陷样本少、缺陷细小导致无法获得较为准确的训练结果,无法满足工业上的需求 [9] 。传统的CNN网络随着模型层数加深通常会出现梯度消失或者爆炸的问题,深层次的网络可以得到收敛,但是可能会产生退化问题 [10] ,而Resnet网络完美解决了这个问题,大量实验表明,Resnet50具有良好的分割性能,且模型结构简单,具有优秀的泛化能力 [11] 。本文通过采用Resnet50分割网络模型,在建立的电芯蓝膜数据集上进行缺陷检测实验,验证了本文方法的可行性以及有效性。
3. 算法模型
3.1. 网络结构及算法
深度学习的发展带给图像分割领域一系列突破,然而由于模型深度的增加,精度趋于饱和,就会导致迅速退化,并不是由过拟合引起,是因为在一个深度适中的网络中增加层数会导致训练误差变高,Resnet网络通过引入深度残差块解决了这种退化问题。让神经网络隔层相连,将某些层跳过下一层连接,弱化各层间的强联系,残差结构使用一种shortcut的连接方式,让特征矩阵隔层相加。将输入与最后输出叠加计算,方法如下:
(1)
式中,x为上一层的输出,y是经过残差块输出得到的,图一残差块结构包含3个卷积层;Resnet由于其网络结构简单且具有强大的功能,因此常作为图像处理中的特征提取网络,如图1所示,输入图像经resize处理,经过7 × 7的卷积与池化处理,送入50层残差块中,最后经3 × 3最大池化后得出分割图。本文利用Resnet50网络,在自制的蓝膜数据集上进行了实验。
Figure 1. Resnet50-based cell blue film segmentation network structure with residual blocks
图1. 基于Resnet50的电芯蓝膜分割网络结构与残差块
此外通过标准化(Standardization)去均值实现了中心化的处理,其主要是通过方差体现的。与归一化相对比,标准化中所有相关数据都有体现,这就解决了蓝膜缺陷细小容易被卷积忽略掉的问题。此外还可以加速模型收敛,便于更加平缓的找到最优解,Loss值也更容易找到正确的最优解。
采用归一化是为了找到数据之间的相互映射关系。将原数据映射到某个区间上,如(0, 1)。再根据跟原始数据的数据分布,采用如Relu、L2范数归一化等方法对原始数据进行放缩,如式2所示。
(2)
式中的
表示为:
(3)
在经过归一化操作后,可以更好的体现出原始数据的变化。针对蓝膜缺陷,也增加了缺陷部分数据的权重。
3.2. 蓝膜数据集
锂电池电芯出厂时会包裹一层蓝膜,可以起到对电芯的保护作用,但是在生产过程部分蓝膜中会由于外力作用产生破损如图,破损会极大影响蓝膜质量导致电芯出现安全问题。
电芯图像来源于工业生产过程中线扫相机对电芯模组扫描得出,原始图像为4000 × 18000大小的图像,缺陷相对于整张图像非常细小,因此本文在将缺陷标注完成以后,按缺陷所在位置将图像分割成1024 × 1024大小的图像。数据集包含605张图像,缺陷类型为破损,按5:1的比例划分出训练集与测试集。
切割后的蓝膜缺陷以及对应的mas标签如图2所示。
Figure 2. Original blue film image with defective label image
图2. 蓝膜原图与缺陷标签图
在实际的生产过程中,能拍摄到的蓝膜缺陷样本并不多,这就需要采用数据增强的方式对现有的缺陷数据样本进行扩充。采集到的蓝膜缺陷原图像有200张左右,采用OpenCV等工具,对原始图像实现行翻转、旋转、镜像翻折等 [12] 操作,最终将原始图像数据扩增到605张。
4. 实验结果及分析
4.1. 实验环境及模型参数设置
为了验证该模型的有效性以及合理性,本文实验在一台Intel(R) Core(TM) i5-11400H @2.70GHz,显卡NVIDIA GTX 3050的Win10操作系统的服务器上进行。采用pytorch框架,Python实现算法编程语言,最大训练epoch为50,学习率0.001,num-workers线程数为8。
4.2. 实验结果
评估图像分割性能一般将背景像素视为负样本,正样本为缺陷像素。通常背景像素占相对大的比例。在本文的分割算法中,模型的评估指标使用Dice_loss损失函数和Precision精准率 [13] 表示,Dice_loss损失函数表达式如下:
(4)
Precision精准率表示的是预测为正样本且真实为正样本的占预测为正样本的比例,该指标能更好地减少缺陷的漏检现象。
(5)
式中TP和FP分别表示预测为正且真实为正、预测为正且真实为假的含义。
如图3所示,在实验结果中,随着epoch训练轮次的增加,损失函数dice_loss也达到了54.97%,而Precision也稳定在了98.21%。
Figure 3. The relationship between Dice_loss, Precision and epochs
图3. Dice_loss、Precision与epoch的关系
4.3. 实验分析
如图4所示,采用训练完成的模型对蓝膜缺陷进行预测,能够很好的在像素级别给予缺陷mask标签,取得了不错的表现。另外,相较于直接采用Resnet50网络对原蓝膜样本的检测,本文的方法在检测时间上有37.3%提升,该结果也说明了数据预分割处理的合理性。
Figure 4. Image segmentation prediction results
图4. 图像分割预测效果图
5. 讨论和结论
为了解决电芯底部蓝膜图像大、缺陷小的问题,本文提出了一种基于Resnet50的蓝膜缺陷检测算法。该算法对原始图像初步分割,判断各个切割区域是否存在表面缺陷。再针对具有缺陷的区域采用Resnet50二次图像分割,较大提高了检测的准确率,也缩短了检测时间成本。相较于直接采用Resnet50网络,该算法拥有98.21%的准确率以及降低了37.3%检测时间。此外本文还制作提供了一套蓝膜缺陷数据集,该数据集中包含蓝膜拍摄的原图像、标注生成的BMP文件以及XML训练标签。
本文算法改进主要是将图像分割分为两个步骤:初次分割以及缺陷预测分割。采用初次图像分割的方法,虽然准确率以及检测时间有所优化,但同样也增加了训练模型的工作量以及时间成本。如何在配准精度以及训练时间之间取得一个较好的平衡点,是今后主要的研究方向以及后续工作之一。