工业缺陷检测比赛Top3方案

Datawhale

共 3024字,需浏览 7分钟

 · 2021-01-14

 Datawhale干货 
方向:深度学习,应用:工业缺陷检测
工业缺陷检测是当前深度学习落地的热门项目,近年来许多的比赛平台都举办了关于缺陷检测的比赛,如kaggle前不久举办的钢铁缺陷检测,以及天池刚刚开始的智能算法赛:瓷砖表面瑕疵质检
瓷砖表面瑕疵质检比赛链接:

https://tianchi.aliyun.com/s/bc97f977ae47dcfa4b07c027cd28d907

比赛刚刚开始有兴趣的小伙伴可以报名参加。

我调研了2018年天池的铝型材表面瑕疵识别比赛的获奖方案。从别的人方案学习到该领域相关的知识和有效的技巧。

这里分享一下一般参加比赛的思路:
找开源检测框架→数据增强→调参→小改网络→调参→小改网络→调参->测试增强

01

铝型材表面瑕疵识别


赛题介绍


时间:2018年9月1日

比赛链接

https://tianchi.aliyun.com/competition/entrance/231682/introduction


比赛背景在铝型材的实际生产过程中,由于各方面因素的影响,铝型材表面会产生裂纹、起皮、划伤等瑕疵,这些瑕疵会严重影响铝型材的质量。为保证产品质量,需要人工进行肉眼目测。然而,铝型材的表面自身会含有纹路,与瑕疵的区分度不高。传统人工肉眼检查十分费力,不能及时准确的判断出表面瑕疵,质检的效率难以把控。


数据介绍:数据集包含4356张铝型材表面图片,包含单瑕疵图片,多瑕疵图片,无瑕疵图片,用于参赛者设计图像识别算法。图片所含瑕疵类型总计10种,分别为:不导电、擦花、角位漏底、桔皮、漏底、喷流、漆泡、起坑、杂色、脏点。


题目要求
初赛:分类铝材缺陷图片
复赛:检测铝材缺陷位置
 
赛题分析铝材缺陷检测和常见的缺陷检测难点相似,第一是缺陷目标不规则,同种缺陷具有不同的形状,第二部分缺陷较小,缺陷检测常常输入图片较大而缺陷较小,最后是缺陷与背景的差异小。

02

获奖方案

冠军方案:Are you OK 队


BaselineFasterRCNN



改进方法:


1、采用特征金字塔FPN结构融合高低层信息

动机:图片分辨率过大1920*2560,而部分缺陷较小,特征提取网络将图片缩小过多倍,缺陷特征受影响。

方法:特征金字塔结构(FPN)来对网络进行改进,FPN就是低层的特征进过卷积,上采样操作之后和高层 的信息进行融合在卷积神经网络中。这样做有两点好处:
1、高低层的信息进行结合,可以增强特征的表达能力
2、候选框产生和提特征的位置分散到了特征 金字塔的每一层,这样可以增加小目标的特征映射分辨率




2、采用可变形卷积核(Deformable Convolutoin)

动机:铝材的瑕疵有很多是 这种条状的,传统正规的正方形结构的卷积对这种形状的缺陷处理能力还不够强。

方法:在 resent 结构的最后一个block采用可变形卷积核(Deformable Convolutoin),可变形卷积在卷积计算的过程中能够自动地计算每个点的偏移,从最合适的地方取特征进行卷积。下图大致描述 了可变形卷积的过程,它能够让卷积的区域尽可能地集中在缺陷上。




3、提出Contextual ROI Pooling


动机:Faster R-CNN是先生成候选框,然后精调候选框的过程,那么第一步生成的候选框势必会有偏大或者偏小的情况。左边这个例子是框偏大的情况,根据内部信息是可以知道框应该往里调的,但是右边这个例子框偏小了,就无法根据内部信息调节大小了,因此也需要整张图片的信息。



方法:把整张图片也作为一个ROI,ROI Pooling提取全局的特征并与局部相加,再进行后面的分类和回归操作。这样的实现只多进行了一个roi的特征提取和一个特征相加的操作, 就能大大地提升准确率。



4、训练Trick
(1)正常样本使用:合并正负样本作为新的样本
(2)数据扩增:水平和竖直翻转

5、测试增强
对需要预测的缺陷图片进行水平翻折,对翻折后的图片和原图进行预测,将多个结果进行 nms融合。



亚军方案:嘟嘟嘟嘟队


baseline:Faster R-CNN with FPN



改进方法:
 
1、双路径特征聚合

动机:FPN在检测极端长宽比的瑕疵的时候会有RoI映射非最优的情况出现,而极端长宽比的瑕疵(长宽比大于10)在数据集上的比例接近40%。
 
方法:是在原先Baseline的基础上添加多一路的特征提取,利用另一支路的特征来弥补极端长宽比瑕疵下FPN的Roi Mapping非最优所带来的特征损失。



2、采用ROI Align代替ROI Pooling
 
动机:FPN在做Roi Mapping的时候是根据Roi的面积来计算的,这会导致当出现极端长宽比情况时,这个映射结果会偏大,导致特征丢失严重。
 
方法:网络在做RoiPooling的同时取映射出来的第kt层以及第kt-1层,这样即使是在kt偏大的时候kt-1的特征就更加合适了。而且,取两层的特征进行融合还能增加特征的多尺度特性,同时还不会带来额外的计算量。

3、训练Trick
 
1、数据扩增:随机竖直/水平翻折,色彩空间增强
2、多尺度训练:大小缩放
3、预训练:采用coco数据集进行预训练


亚军方案:BOOMBOOM队


baseline:Faster R-CNN with FPN



改进方法:

 

1、FPN采用了带孔卷积Dilated Convolution


方法:将FPN网络的最后一层操作改成了带孔卷积带孔卷积比标准卷积具有更大的感受野。

                                   

 



       (a)常规的卷积            (b)带孔卷积



2、采用ROIAlign代替ROI Pooling

 

方法:这部分方法和嘟嘟嘟嘟队采用了相同的方法不过多的介绍了。




3、在最后的分类部分,使用Focal Loss代替原来的交叉熵


这里介绍下focal loss的两个重要性质:

1、当一个样本被分错的时候,pt是很小的,比如当y=1时,p要小于0.5才是错分类,此时pt就比较小,反之亦然),因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。

2、当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。

focal loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失的贡献。




4、训练Trick


03

总结


获奖方案baseline都采用了FasterRCNN, FasterRCNN 在目标检测的任务中具有较高的准确率。缺陷检测主要面对的难点是缺陷较小,且形状不过规则。也就是需要解决小目标检测和网络的泛化能力,解决这些问题的方案有使用新的卷积来应对缺陷的不规则的情况比如可变形卷积,以及采用FPN提升小目标的检测能力,其余的主要是比赛的一些技巧如数据扩增和多模融合和测试增强。

算法赛交流群已成立
缺陷检测赛事组队,交流分享
进群学习,可在后台回复【工业赛


↓↓业赛瓷砖表面瑕疵质检
浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报