雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达640?wx_fmt=jpeg

本文转载自:知乎 卖火车的小男孩

https://zhuanlan.zhihu.com/p/59951235

从今天开始以后会分享一些大佬的竞赛相关的实战案例,很多比赛的题目都是基于实际的需要,所以可以说含金量非常高,分享这些优秀同学的作品也是希望能和大家共同成长进步。

之前分享过比赛答辩现场的视频录像,有兴趣的可以看一下,学一波



640?wx_fmt=gif
接下来进入正题

2018雪浪制造AI挑战赛,由江苏省无锡经济开发区(太湖新城)、阿里云计算有限公司联合主办。大赛基于阿里云天池平台,提供数千份精标注布样数据,以“ 视觉计算辅助良品检验”为主题,聚焦布匹疵点智能识别,开展大数据与人工智能技术在布匹疵点识别上的应用探索,助力工业制造良品提升。
题目背景:布匹疵点检验 是纺织行业生产和质量管理的重要环节,目前的人工检验速度慢、劳动强度大,受主观因素影响,缺乏一致性。2016年我国布匹产量超过700亿米,且产量一直处于上升趋势,如果能够将人工智能和计算机视觉技术应用于纺织行业,对纺织行业的价值无疑会是巨大的。
比赛链接地址
https://tianchi.aliyun.com/competition/entrance/231666/introduction?spm=5176.12281915.0.0.33a010bd2OSySF

本次比赛为期2个月,从7月初到9月初,分初赛、复赛、决赛2部分。比赛内容是通过布样影像,基于对布样中疵点形态、长度、面积以及所处位置等的分析,识别瑕疵的种类。评估指标为AUC+MAP。
主办方为了让更多人参与赛题探索,对赛题进行了简化。只保留了单类缺陷样本图片,过滤了单张图片存在2个及以上的缺陷样本。另外赛题给出了缺陷大概的位置,但只要求给出图片中的缺陷种类,没有各类检测框的需求,可以当做分类问题。听到选手现场答辩,大部分也是采用了分类的方法。在我们实验尝试中,也发现常规的检测模型效果不如分类模型,可能是因为一些布匹缺陷融入背景中,很难区分边界的原因,边界回归效果不好。我们最终的实验方案思路类似于Fast RCNN方案,但用固定的滑窗取代了anchor生成算法,并取消了边界框的回归。
我们的方案比较简单,思路中还存在不足,到实际落地还有很大的距离。希望对工业质检、缺陷检测感兴趣的朋友相互交流,相互学习。感谢天池提供的平台和切合实际业务的数据,让我们可以学习锻炼。
比赛结束时间比较久了,很多资料当时都没整理好,这里直接搬运了答辩方案,天池平台对答辩就行了录播。

录播视频:https://tianchi.aliyun.com/course/video?spm=5176.12586971.1001.24.606312b1pf4uiC&liveId=12331

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第1张图片

这是两个经典样本,从左图可以看出缺陷位置占比不到1%,结合左右两图,可以看出缺陷不仅占比小,而且缺陷的尺寸变化特别大。


雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第2张图片

接着从统计的角度来看,本次赛题有三个难点,第一个是样本类别不均衡,正常样本与某些缺陷类的比例超过了10:1;第二个问题是缺陷区域占比很小,缺陷占比不到1%的样本超过了82%;第三个问题是缺陷尺度变化大,缺陷尺寸长度小到100 大到2500 ;我们本次的解决方案,就是围绕着这三个难点展开。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第3张图片

简单介绍下流程框架:我们对数据做了常规的数据扩增,包括上下左右flip,randomGray,以及固定角度的旋转;接着我们分别从损失函数、数据、模型、三个方面来解决前面的三个问题;最后呢,在我们前面工作的基础上,提出我们专门针对于缺陷检测任务的MRA Net(为了好听,强行起了一个名字)。


雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第4张图片

首先从解决先前的三个难点入手,来实现布匹缺陷的智能识别。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第5张图片

经过我们探讨,选择分类框架作为我们的基础框架,如左图。针对样本不平衡会导致梯度的更新方向被数量多的正常样本主导,重要的信息被掩盖。在本次赛题中,我们使用了Facebook AI Research 在17年提出了Focal Loss作为惩罚函数改善。Focal Loss 是cross entropy (CE) loss的改进版,实现了对于正负样本不平衡的调整。同时针对线上评测指标0.7AUC+0.3mAP ,AUC本质上是评测正负样本的分类指标,因此我们在模型训练的时候加入了一个用于正负样本2分类的辅助loss。将所有缺陷样本当做正样本,将正常样本当却负样本,这样在加快模型收敛速度的同时,把正负样本比例调整到1:2,也在一定程度上解决了这个问题。


雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第6张图片

针对瑕疵区域占比小的问题,我们采取小patch块在大图按一定的stride滑动的方式来解决;对训练数据,只选取包含缺陷区域的patch作为样本,对测试数据,保留所有patch块做训练样本;蓝色box的缺陷区域,相当整个大图来说,patch块能更好、更容易关注到缺陷区域,但是带来了概率取值的问题,简单的方法是取最大值,但这样导致最终预测结果将偏阳性。


雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第7张图片

针对这个问题,我们提出了一个简单后处理方案,来给出合理的缺陷概率和瑕疵区域,针对test数据,根据patch的坐标信息和2分类预测结果,映射到原图坐标,负样本+0,正样本+1,映射到原图位置得到heatmap如图。在heatmap上找到极大值大区域,如红色虚线框位置,该区域即是最大概率瑕疵区域的中心,选取所有包含该中心的patch块的概览求平均。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第8张图片

我们认为Patch块有效的原因,在一定程度上可以看成spatial attention,卷积核是一种信息聚合体,在局部感受野上,聚合了空间信息和特征维度信息。我们进一步从channel attention的角度进行了探索。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第9张图片

我们使用了胡杰在2017年提出的Se模块做channel Attention,Se模块通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。并且使得每一个layer都获得全局的感受野。具体实现以Resnet为例,先将卷积特征做全局池化,之后进行降维升维,经过Scale操作后给每个特征通道一个重要程度的权重。 采用了一种全新的「特征重标定」策略,显式地建立特征通道之间的相互依赖关系。 (一般情况下SE模块对分类任务都有提升,当然不用也可以)

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第10张图片

针对缺陷尺度变化大的问题,单一尺度的patch不能完全应对不同尺寸的布匹缺陷,顾此失彼;继续从数据层面入手的,把patch的扩充到3个尺度,较为有效应对该问题。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第11张图片

这里是大概的试验对比。1. Patch有效的解决了缺陷占比小的问题,Patch特征在缺陷识别任务上性能远高于全图特征;2.Se 模块实现了Channel Attention,更好的提升重要特征,抑制无用特征;3.多尺度Patch解决了缺陷尺寸变化大的问题,能大幅的提升模型的识别精度;总体来说,基于Multi-Scale patch的算法方案,精度高,可以有效的识别出布匹的瑕疵区域,但随之而来带来了巨大的时间消耗,降低了算法的实用性。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第12张图片

从可用和实用性的角度出发,我们在前面工作的基础上做了改进,MRA Net。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第13张图片

我们基于数据patch的方法和R-CNN很相似,patch块之间存在大量重叠,提取特征操作冗余,浪费了大量的时间;Fast RCNN的提出,只提取一次特征,在特征的feature Map层做候选框选取,带来的百倍的性能提升。我们从中获得启发,来优化我们的方案, 只提取一次特征,在特征层进行patch选取,其中的关键点就是获得原图到feature Map的区域映射。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第14张图片

我们要获得feature map的patch对应于原图的坐标,关键是是把原图左上角和右下角映射到 feature map上的两个对应点。有了feature map上的两对角点就确定了 对应的 feature map 区域(橙色),跟SPP类似。(这部分具体可以参考文章SPP)

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第15张图片

在实现上面,将原来的global pool 替换为 patch pool(跟模型前面正常的pool一样的,只是个名字而已),将原来的fc替换为1*1的卷积;其中Patch pool是kernel size为12,stride为2的avg pool;输入方面,将原来384*384的patch块改为resize到768*1024的原图;Feature Map将从原来12*12转换为32*24;进过patch pool和1*1卷积之后,获得11*7个patch的预测结果。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第16张图片

同时,为了进一步提升模型对不同尺寸缺陷的泛化能力,patch pool也增加了多尺度;进过多尺度的patch pool之后,分别获得11*7 12*8 13*9的三个featmap,分别进行1*1conv,得到最终的多尺度label信息。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第17张图片

大概的试验对比,精度上,单尺度和多尺度的MRA Net与数据Patch方法都不相上下,速度上,MRA Net相对于单尺度数据patch方法,有20多倍的提升,相当于多尺度数据patch方法有近百倍的性能提升。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第18张图片

主要参考的paper资料,还有一些知乎大佬的博客文章。

雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享_第19张图片

这是简单的团队介绍,大家经过了2个月的努力,在比赛中取得了不错的成绩,感谢队友,实名称赞各位优秀的大佬。另外特别感谢刀刀大佬对我们PPT的优化改进(原版PPT很丑)。

最后再次感谢大佬无私的分享,原文可以点击“阅读原文”进行跳转
备注:作者并未公开源码,如有公布,第一时间分享~

640?wx_fmt=gif

如果觉得对你所有帮助,欢迎分享让更多人受益,>_<

你可能感兴趣的:(雪浪制造AI挑战赛(计算辅助良品检测)--top1方案分享)