赞
踩
点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转载自:知乎 卖火车的小男孩
原文章标题:天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案
https://zhuanlan.zhihu.com/p/50548998
仅用于学习交流分享,如有侵权请联系删除
上一次分享的比赛方案详解:
题目详解
2018年广东省人民政府联合阿里巴巴集团共同启动“广东工业智造大数据创新大赛”,旨在通过数据开放召集全球众智,将重点围绕工业制造大数据展开,以应用为导向,聚集全球顶级人才,发掘全球先进的智能制造应用成果,为政府下一步产业引进和招商引资提供辅助决策,促进广东智能制造产业发展。 大赛分智能算法赛和应用创新赛2大赛场。
智能算法赛以“铝型材表面瑕疵识别”为主题,选择佛山市南海区铝型材标杆企业的真实痛点作为赛题场景,寻求解决方案,助力企业实现转型升级,提升行业竞争力。
赛事介绍:
https://tianchi.aliyun.com/competition/entrance/231682/introduction
本次大赛分为初赛、复赛和决赛三个阶段(9月17日-11月22日),初赛是分类任务,复赛是检测任务,决赛是现场答辩。
经过2个多月的算法角逐和决赛答辩,我们团队(Are you OK?)获得了最终的冠军,感谢天池提供的平台。
这里着重介绍下复赛的答辩方案,对初赛感兴趣的同学可以参照我们的开源代码。
代码与成员
方案详解
在开始介绍我们的方案之前呢,我们先从参赛队伍的角度来回顾一下这次的赛题。这次的赛题要求在给定的图片中定位出铝材缺陷的位置,并准确识别缺陷的类型,这在计算机视觉中是一个很具有挑战性的质检问题。这里是一些缺陷图片的例子。从数据中可以看到,脏点的占比面积特别小,喷流与背景很相似,擦花很不规则。
我们对主办方提供的数据做了一个大体的分析。左边的柱状图显示了每个类别样本的数目,右边的图显示的是缺陷框大小的粗略统计。我们可以看到,大部分的类别是十分均衡的,脏点这个类的数量较多。缺陷框的大小两级分化比较严重。在这其中,小样本的缺陷框基本上都是脏点的类别,这也是这个赛题的难点之一。
在这个架构中,我们注意到了一些细节。原始图片的分辨率非常的大,是1920*2560。为了减少计算开销,我们首先会将图片缩小两倍之后才作为网络的输入。主干网络我们选取的是Resnet-101,在整个卷积的过程中,提取到特征的大小相对于输入图片是缩小了16倍。也就是说,从原图,到最后一层的卷积特征,空间大小一共下降了32倍。由于之后每一个候选框特征会被缩放到7*7的大小,如果说本身缩放前的特征就非常的小,那么缩放之后的特征是不具有判别力的。我们统计了一下数据集中边长<=32的样本,发现这类小样本占了整个数据集的10%,这会严重地影响性能。
为了解决这个问题,我们采用了学术界非常常用的特征金字塔结构来对网络进行改进。我们总结了一下,特征金字塔在这个任务中具有两个优点:第一,从这个示意图我们可以看到,低层的特征进过卷积,上采样操作之后和高层的信息进行融合在卷积神经网络中,高层,也就是后面的特征具有强的语义信息,低层的特征具有结构信息,因此将高低层的信息进行结合,是可以增强特征的表达能力的。第二,我们将候选框产生和提特征的位置分散到了特征金字塔的每一层,这样可以增加小目标的特征映射分辨率,对最后的预测也是有好处的。
具体实现上,我们将原本resent结构的最后一个block改成了可变卷积,原因是在可变卷积的实现中,需要基于前面的特征来学习一个偏移,前面的特征得足够强才能保证这个偏移不会乱学,因此我们只改动了最后一个block。总体的框架还是跟前面FPN的一样。
我们的第三个改进方案,是在提取ROI特征的时候,引入了context上下文信息,我们把这个操作叫做contextual roi pooling。我们用上面两个例子来说明上下文信息的好处。Faster R-CNN是一个先生成候选框,然后精调候选框的过程,那么第一步生成的候选框势必会有偏大或者偏小的情况。之前的方法可以理解成用框内部的信息来推断框的位置,左边这个例子是框偏大的情况,根据内部信息是可以知道框应该往里调的,但是右边这个例子框偏小了,我们能知道该往外调整,但是该调多少呢这个是无从知晓的。因此一个显而易见的想法,就是把整张图片的信息也送给这个候选框当特征,这样相当于让每个候选框以整张图片作为参考,这样呢每个框就知道该往哪调了。
下面我们介绍一下网络训练过程中的一些细节。数据集里面是有提供无缺陷样本的,我们也对这些图片进行了使用。在检测器的训练过程中,有一步是正负样本的选择。我们在训练的时候使用了一个策略,每次会随机选择一张缺陷样本和一张无缺陷样本,然后训练的正样本会在缺陷图片中选择,负样本会在两张图片中都选择,两张图片的所有正负样本合起来做一个OHEM,再进行后面的训练操作。这样的好处是,充分利用了无缺陷样本,增大了模型判别背景信息的能力。
我们还注意到了数据的一个特性。铝材的缺陷是具有翻转不变性的,将一张图片水平和竖直翻转之后,他的瑕疵信息是不会变的,也就是说,我们将图片进行翻转之后,再将框做一个变换到对应的位置,这样可以构建出一批新的数据来。通过这样的数据扩增方式,我们把训练数据扩增了四倍,也因此提升了模型的鲁棒性。
下面我们在整个过程中生成的一些实验结果。左边是在验证集上实验出来的分数,其中擦花,喷流,脏点,漆泡这四个类的分数。右边这四个曲线图展示了这四个类的准确率和召回率,其中红色是准确率,蓝色是召回率。通过分析实验和结果,我们发现擦花和喷流差的原因是基本都是召回率较低。
总结一下,我们充分挖掘了比赛数据的特性,并有所针对地设计网络的结构,包括fpn,dcn,context等等,提出了一个同时兼顾效率和精度的缺陷识别方案。但这个方案对超小下次的定位其实还不是非常精准,这也是我们今后改进的目标。同时这个方案也能迁移到其他类似的领域,如手机盖板缺陷识别,布匹缺陷识别等等,市场上的应用前景非常广泛。
end
添加微信[nvshenj125].回复:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡西),加入AI学习交流群
推荐阅读:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。