基于深度学习的锻造裂纹检测研究
2020-09-15刘建红
刘建红
(天津职业大学,天津300410)
锻造裂纹的识别与检测是大型锻件热锻过程中质量控制的一个重要环节。传统条件下,大型锻件锻造裂纹的检测主要依靠人工在线识别、记录,由于锻造现场的特殊性,只能通过远距离观察,记录工序环节和出现的位置,估算裂纹的尺度,用于后续产品质量跟踪。目前虽然可以通过摄像头、数码相机等影像设备来比较容易的实现锻造图像采集,但是还无法依靠计算机来准确地判断出特定时刻锻件是否存在锻造裂纹,以及自动确定裂纹的位置和尺度等信息,而实现这个流程的自动化关键在于图像的智能识别与分析。
当前,深度学习领域特别是在计算机视觉方面发展迅速[1],已经能够在复杂的环境工况下,进行准确、高效的特征识别,并在此基础上实现智能决策。同时,现在已经存在很多针对一般性数据集的预训练模型,在此基础上,针对具体的问题,采用迁移学习,可以以很少的数据量和计算量针对特征相对具体的数据集获得非常高的特征识别效果。
本文以热锻过程中锻造裂纹的检测为研究对象,依托百度AI的Easydl Pro深度学习平台,针对采用手机及卡片机拍摄的约100张包含锻造裂纹的热锻现场照片小型数据集进行了矩形框检测识别训练,并采用平台目前所提供的SSD-MobileNet、YOLOv3-DarkNet以及Faster_R-CNN-ResNet50-FPN(以下分别简记为SSD、YOLO、FRCNN)三种深度网络模型进行了识别效果对比和讨论。
图1 基于深度学习网络的锻造裂纹自动检测流程Figure 1 Automatic detection process for forging crackbased on deep learning network
1 锻造裂纹自动检测模型训练流程
基于深度学习的锻造裂纹的检测识别过程属于图像深度学习问题中物体检测类问题,可以按照物体检测的流程来进行实施。如图1所示,首先,需要搜集整理一定量的能够反映锻造现场图像采集环境的、存在锻造裂纹的照片。在此基础上,需要人为的对图像中的锻造裂纹区域进行标记,从而形成具有标记信息的锻造裂纹图片数据集。之后,还需要选取具有图像检测能力的深度学习模型。本文所采用的SSD、YOLO以及Faster-RCNN模型均为当前识别效果较好的深度网络模型,其中前两者相对较快,后者识别精度较高。在准备好数据集以及深度学习模型后,就可以依托深度学习框架对模型进行训练,当前比较主流的深度学习框架包括Tenserflow、Caffe、PyTorch等,其中国内以百度的PaddlePaddle比较典型,而本文采用的Easydl平台是基于PaddelPaddel框架的定制化平台,能够比较方便的进行图像标记、创建训练任务以及模型部署,比较适合工程问题的快速实现。
此外,对于一般性的深度学习问题,如果模型的内部参数是随机的,那么这个训练过程会非常耗时,而且效果也不太好,因此一般的训练都是采用经过预训练的模型。对于图像相关的问题,这种预训练的模型通常是建立在对大量一般性图片数据集的特征识别基础上的,其所提供的预训练模型内部参数已经针对图像的特征识别问题进行过训练与优化,在此基础上针对特定的图像数据集进行定制化训练能够在较短的时间内获得较好的训练效果。本文所采用的三类预训练模型均为Easydl平台内置的预训练模型。
图2 训练用的D1-D3数据集示例Figure 2 Examples of D1-D3 datasets for training
图3 测试数据集D4典型照片Figure 3 Typical photographs of the test datasets D4
图4 对裂纹进行矩形框标注后的典型照片Figure 4 Typical photographs of cracks markedwith rectangular frames
2 锻造裂纹数据集
本文所采用的数据集包含三个版本D1、D2和D3,如图2所示,其中下部大图为数据集典型照片,白色矩形框为标记位置。
(1)D1为原始的数据集,包含108张照片。在对该数据集标注的过程中,以尽可能多的囊括全部锻造裂纹的区域作为标注原则,因此一些疑似区域、一些非常小的裂纹区域均作了标注。
(2)D2数据集包含102张照片,在D1基础上,剔除了6张非锻造过程中以及比较模糊的锻件照片,剔除了一些小尺度的、疑似的裂纹标记。由于当前数据集比较小,对于锻前大量覆盖氧化皮的情形,即便是在锻造现场也很难区分裂纹与氧化碎裂缝隙,因此这里将这些照片也进行了剔除。同时小的裂纹,以及一些具有裂纹特征但是尺寸圆滑的锻件表面凹陷,如果不进一步发展,对于锻造质量的影响非常有限,因此识别这些特征增加了计算难度,但是实际意义不大,在D2数据集中不再对这种区域进行标注。
(3)D3数据集包含100张照片,是在D2数据集基础上进一步剔除了两张模糊照片,并仅保留了对特征非常清晰的裂纹的标注。D2虽然剔除了一部分小裂纹及疑似裂纹,但是剔除的非常有限,相对而言,D3剔除的更为激进。这样处理主要是检验数据的筛选甄别对模型效果的影响。
除了训练数据集,这里准备了由30张照片组成的测试数据集D4。前述的训练数据既有锻造过程的,也有锻件翻转、转运等阶段的照片,以及一些拍摄角度比较偏和拍摄效果不太理想的照片,比如从锻件侧面拍摄的,以及拍摄存在模糊,从而最大程度地与锻造环境中一般检测者的视角保持一致,但是对于关键阶段的锻造裂纹检测与记录,图像的采集一般是有所选择性的,比如专门针对镦粗阶段采集图像,或者针对成品阶段采集图像,在这种情形下所拍摄的照片会比较典型,而测试数据集D4就是针对这种情形进行遴选的,用来考察训练出的模型针对典型环境下的裂纹识别的效果。
3 数据集训练与结果对比
在准备好上述数据集的基础上,基于Easydl Pro平台,对数据集进行了矩形框标注,即对裂纹位置采用尽可能紧致的矩形框进行了标记并在平台中保存标记信息,典型照片如图4所示。由于本文只研究锻造裂纹,因此只创建了“crack”这一种标记标签。
数据标注完毕后,就可以创建深度学习任务。
表1 训练任务基本参数及训练效果对比Table 1 Comparison of basic parameters and training effects of the training tasks
表2 基于V5的第二次训练效果Table 2 The second training effect based onV5 training task
采用FRCNN模型进行模型训练的过程中,需要用到锚框,通过不同长宽比、不同大小的锚框来对需要检测的裂纹进行筛选识别。默认设置下锚框的长宽比有0.5、1.0、2.0三种。锚框的选取对于识别的效果会产生影响。锻造裂纹常规条件下一般表现为细长状,即具有较大的长宽比,因此,这里在默认的基础上,对部分训练任务增加了多个锚框的长宽比,如表1所示V4、V5、V10几个训练版本。除此之外,包括SSD、YOLO模型在内的其他训练任务均采用平台的默认参数设置。最终创建的10个训练任务的训练结果如表1所示,其中阈值为平台根据计算给出的能够获得最好的评价效果的门槛值,mAP表示在当前阈值下正确识别并标记裂纹的准确率。精确率指的是预测为裂纹的位置有多少比率是正确的,而召回率指的是标记的裂纹有多少被正确识别。对于锻造裂纹而言,在无法正确识别的前提下,从保守的角度来考虑,一些疑似位置被识别为裂纹是允许的,但是裂纹位置没有被识别则存在潜在的危害性,因此在mAP相同水平下,训练的模型应尽可能保持低精确率和高召回率。
(1)数据集的对比
从表1可见,通过适当剔除干扰数据的D2数据集可以获得最优的裂纹识别结果,对于已标记数据能够达到77%以上的准确率。但是进一步剔除数据的D3数据集的实际训练效果并不佳,反而劣于D2数据集的训练效果,准确率整体在70%以下。
(2)深度学习模型的对比
从所采用的三类深度学习模型来看,SSD模型的训练结果最差,YOLO模型的训练结果虽然优于SSD模型,但是较FRCNN模型存在明显的差别。虽然理论上SSD、YOLO模型的计算效率较高,但是对于当前数据集而言与FRCNN的识别精度差别过于明显。由于数据集有限,无法检验增大数据集量后是否能够缩小模型间的识别精度差别。
(3)锚框的长宽比
根据表1的训练结果,通过V1、V4的对比以及V5、V6的对比可以看出增加锚框的长宽比,使锚框尺度与锻造裂纹的尺度匹配性更好,能够适度改进模型的识别效果,准确率略有提升,可以获得更高的召回率。
综合评价上述结果,V5模型的表现最为优异。因此,在上述训练对比的基础上,针对V5模型进行了进一步的测试数据集检验以及识别效果验证。
4 识别效果验证
在模型训练基础上,采用V5训练任务相同的设定条件对D2数据集进行了第二次训练,同时将D4设为测试数据集验证训练效果,训练结果如表2所示。
由于深度学习的特性,即便在相同的数据集以及相同的预训练模型条件下,所获得的训练结果也会存在一定的差异,可以看出第二次训练的mAP等指标相比V5模型略有浮动,但是基本相同,准确率约78%,接近80%。相对而言,针对测试数据集,模型的检验效果很好,准确率接近90%,精确率和召回率均在90%左右。由此可见,当前训练的模型虽然受数据集规模的影响,对于一般性场景的检测准确率不到80%,但是如果以裂纹检测为目的有意识的获取图像,确保图像不至于太模糊,光线适中,则检测效果非常良好。需要说明的是,表2的测试数据是建立在平台根据训练结果确定的不同阈值水平上的,图5为Easydl平台给出F1-score与阈值的关系,而F1-score为精确率与召回率的调和平均数,可见对于当前模型,阈值对mAP等指标的影响很小,对mAP等指标的对比是可靠的。
图5 由Easydl平台给出的针对D2数据集第二次训练获得的F1-score与阈值的关系Figure 5 Relation between F1-score and threshold of the 2nd training of D2 datasets offered by Easydl platform
图6 采用训练好的模型对锻造裂纹的检测效果Figure 6 Forging crack detection effects examinedby the trained model
图6是采用训练好的模型分别对镦粗和拔长压实阶段的锻造裂纹的识别与检测结果。可以看出,当前训练好的模型能够对锻造裂纹进行准确标记、识别,并可以返回裂纹在图像中的位置以及尺度信息,经过尺寸标定后可以用于工艺研究与质量跟踪。
5 总结
本文基于Easydl Pro深度学习平台,在较小的数据量(100张普通质量照片)条件下,采用FRCNN深度学习模型,针对一般锻件场景实现了78%的锻造裂纹识别准确度,针对锻造实施过程中典型检测场景实现了90%的锻造裂纹识别准确度。
本文受数据量限制,模型精度还存在进一步改善空间,在此基础上,如果能进一步加大训练数据量,应能获得可以代替人工质检的锻造裂纹识别及检测能力。