【项目.源码】深度学习视觉计算辅助良品检验,如何做布匹疵点识别?

项目基于阿里云天池平台,提供数千份精标注布样数据,以“视觉计算辅助良品检验”为主题,聚焦布匹疵点智能识别,开展大数据与人工智能技术在布匹疵点识别上的应用探索,助力工业制造良品提升。

数据集地址

https://tianchi.aliyun.com/competition/introduction.htm?spm=a2c22.11695015.1131732.1.4ea25275NNvZuf&raceId=231666

项目源码地址

关注微信公众号 datayx 然后回复 良品检测 即可获取。

YOLOhasst

YOLOhasst是一种'快速'的瑕疵检测方法,它使用了全局检测和局部检测两个模型进行融合,对于一张完整的布匹图像,'仅仅'需要检测166次就能得出结果。因此,我们给它取了个名字 You Only Look One hundred and sixty-six times....

由于硬件条件的限制(一块1080ti,11G),我们首先想到的方法就是对完整的大图进行切割,然后分别预测并在最终整合结果。这个方法再加上滑动检测、最大值抑制等一些小技巧,达到了0.932的成绩,一度排到了第一名。

切割方法:

训练阶段我们将整张大图切成6*8份,每份320*320的大小。我们选择瑕疵面积占完整瑕疵面积的比例大于0.09的小图作为瑕疵样本;完全没包含瑕疵的小图作为正常样本。

模型:

我们尝试了resnet50\VGG16\Inception-ResNet-v2等模型,经过实验效果相差不大,最终我们选择的是Inception-ResNet-v2的模型,并在最后加上了一层SPP层用来识别更细小的瑕疵。

滑动检测:

预测时我们并不是把全图切为6*8份进行预测,而是使用320*320的大小,160的步长进行滑动预测,总共需要预测11*15张小图;(成绩从0.9提升到0.92)

最大值抑制:

整合结果时我们没有直接使用最大概率值,而是取前三大的概率进行了平均。(成绩从0.92提升到0.932)

随后方法1的切割遇到了瓶颈,我们发现该方法容易将布匹边缘误检测为瑕疵,在尝试了不同的切割和模型后都无法突破0.932。这时候我们想到了YOLO论文中的第一句话‘Humans glance at an image and instantly know what objects are in the image, where they are, and how they interact’。然后我们开始很哲学地去思考,对于布匹瑕疵检测这个问题,如果是人眼来找瑕疵会怎么做。应该是有两步,一是一眼看过去有没有瑕疵,然后再一块块细看有没有小的瑕疵。实际上我们方法1的切割对应的就是第二步,而我们还缺了第一步,就是全局地去查看。于是,我们就使用了一个土办法,将全图resize成800*600(主要还是由于硬件限制)后单独训练了一个模型,再和方法一的模型进行融合。全图的模型单独的分数可以达到0.914。

使用步骤:

1.首先将初赛官方的测试图片解压放到data\official文件夹中。

2.将初赛的2次测试图片和公布的答案解压放在test\testa和test\testb文件夹中。

3.打开main.ipynb,依次运行每一个cell即可,程序会自动保存模型,最后会计算testa和testb中的auc

注意事项:

1.程序运行过程中会生成训练所需的cut和resize图片并保存在data目录下的对应文件夹中,若第一次运行后已生成图片,第二次运行可跳过cell2-4,直接从Train Model A开始;或者删除生成的中间文件夹,仅保留data\official文件夹,然后重头运行,避免重复保存中间图片。