当前位置:网站首页>Fully Convolutional Networks for Surface Defect Inspection in IndustrialEnvironment-论文阅读笔记
Fully Convolutional Networks for Surface Defect Inspection in IndustrialEnvironment-论文阅读笔记
2022-07-19 09:34:00 【wyypersist】
Fully Convolutional Networks for Surface Defect Inspection in IndustrialEnvironment
工业环境中用于表面缺陷检测的全卷积网络
//2022.7.18上午11:43开始阅读笔记
论文速览
文章提出了一个两阶段均使用FCN网络的像素级缺陷检测框架。
在第一阶段,采用基于RPN网络中使用的ZFNet并进行了修改,将其中的FC层等修改为CONV卷积层,使之成为FCN全卷积网络对图像中的特征进行像素级的划分。
作者仅在第一阶段输出的RoI区域中进行采样生成的patches训练样本,这大大加快了检测速度。同时,在第二个FCN阶段,文中采用跨层特征融合的方式计算了两个不同index位置特征层对应的loss损失(使用的是logistic损失函数,在计算loss时使用了手动标记的对应patche标签map进行比较)。之后,在检测过程中,同样采用跨层融合的特征进行检测,并分别计算不同层特征的得分map,之后对同一个特征层的得分map,使用vote投票策略进行决策,得到所属类别选择,然后对来自两个不同特征层的两个得分map也进行投票决定最终该patche的类别分数。
最后,由最终的分数得到对应的patche分类类别。
论文地址
论文贡献
本文提出了一个两阶段的检测框架用于检测金属表面缺陷,本文的方法将分割阶段和分类阶段进行分开,并进行了新的组合,这两个阶段使用了全新的FCN全卷积神经网络。
在分割阶段,作者使用FCN对图像进行空间密集型像素级的预测,以粗略地对缺陷区域进行判定,其中得到的缺陷建议区域是第二阶段的输入。
同时,作者还采用了从图像中裁剪的补丁快进行训练。这种训练方法在数据集缺乏时具有相当大的作用。
最后,论文作者使用DAGM数据集进行验证和测试所提出的方法性能。
论文内容
1.介绍
图1为工业环境中存在的不同缺陷。
传统的方法中最关键的部分是特征提取,有很多种方法,但是这些方法只在特定的数据集中有效果,如果数据集发生改变,很有可能需要重新更改算法。
本文的目标是设计一个通用的检测方法,且不需要先验知识就可以进行特征提取和之后处理部分的目标检测框架。
CNN具有高度的非线性特征提取能力,同时,在工业领域很多缺陷都是非线性的。
2.相关工作(略)
3.两阶段FCN网络架构
FCN允许任意大小不同的图像输入到网络中。
文中提出的假设:假设缺陷区域的局部信息或补丁足够丰富,足以表示缺陷的存在,并且检查过程与整个缺陷区域的几何形状关系不大。
图2所示为数据集的示意图。
3.1 第1阶段——缺陷区域的粗分割
该阶段的目标是提取缺陷感兴趣区域,预测的RoI将作为第二阶段进行分类预测的输入。由于工业数据集中包含缺陷的数据集很少,所以使用常用的FCN网络将会导致过拟合现象的出现。因此,需要重新设置FCN网络的架构。
数据集扩展
文中选择了DAGM数据集作为开发和验证的数据集。
前6个数据集作为开发数据集,被用于设计算法。
每个数据集由150个灰度图像,且每张图像以8位PNG格式保存。
为了扩充训练数据集,我们采用了裁剪的方法将图像进行裁剪。
在测试阶段使用整张图像进行输入。
FCN架构
文中解释了感受野大小对模型检测性能的影响。
我们假设一个网络,第i层(第一层)的核大小为Ki,si是第一层的步长,si是第i层之前的stride。我们将Ri表示为位于第i层(称为第i层)的每个神经元的感受野。然后,Ri和Si的递推关系可以计算如下:
对FCN网络的修改细节:
从递归公式可以得出结论,感受野受Ki、si和网络第一层深度的影响。我们选择[14]中为RPN训练的ZFNet模型作为我们的基本架构。我们只使用前4层作为特征提取层,并在特征层的末尾附加一个分数层,我们将所有卷积层的步长从si更改为1(si是ZF中第一层的原始步长)。RPN中使用的重叠池控制模型容量并增加感受野大小,从而产生粗糙、高度语义的特征表示。虽然这种通用架构对于提取对象级信息是有效且必要的,但它会产生对像素级变化不变的低分辨率特征。这有利于分类和识别对象实例,但对像素标记任务提出了挑战。因此,我们将重叠池更改为非重叠池,因为前者导致以下层中的Ri(感受野)更大。为了保持用于分类的特征图的分辨率,我们在分数层之前插入了一个反卷积层[15]。我们使用logistic回归作为分割的损失函数。关于网络结构的更多细节如图3所示。
重点:文中的FCN网络使用的骨干网络是RPN网络中使用的ZFNet骨干网络。
3.2 第2阶段-分割细化实例敏感Patches
在文中,使用缺陷占总面积在n%以上的patches作为缺陷样本,其中n可以根据不同的精度要求进行更改,在文中的实验中,设计了n=40,其他不满足阈值的样本设定为正类样本。
文中仅在第一阶段输出的RoI区域中进行采样生成patches训练样本,大大加快了检测速度。同时,在第二个FCN阶段,文中采用跨层特征融合的方式计算了两个不同index位置的特征层的loss函数。之后,在检测过程中,同样采用跨层融合的特征进行检测,并计算其中的得分map,之后对同一个得分map来说,使用vote投票策略进行类别的选择,然后对来自两个不同特征层的两个得分map也进行投票决定所属的类别,之后输出最后的得分。
第一阶段和第二阶段的融合
图4中展示了两个阶段的融合过程。
损失函数的选择
第二阶段的FCN结构。我们在FCN中设计了一个多损耗函数来跨层融合信息,以实现跳跃连接,从而提高检测精度。所有损失函数均为logistic回归。由于我们仍然在检测任务中使用FCN,我们使用与输出层具有相同分辨率的标签图标记面片,其值对于缺陷面片均为-0,对于非缺陷面片均为1(如图5所示)。
在检查过程中,与[17]类似,我们对单个softmax层的分数图进行投票,然后对不同softmax层的结果进行平均。该方法可以被视为两种合并方案:
在一个贴片下平均一定大小感受野的结果。
平均一个贴片下不同大小感受野的结果。
文中在训练阶段还采用了正负挖掘技术。
图6显示了检测过程。
4.实验过程
4.1 实验框架
文中使用原始RPN网络中的骨干网络ZFNet权重初始化FCN网络对应的层权重层,并对修改的层采用随机初始化的方法进行赋初始值。
4.2 性能评判标准(略)
文中使用的性能评估标准和文章Long, J., Shelhamer, E., & Darrell, T.: Fully convolutional networks for semantic segmentation. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 3431-3440 (2015).保持一致。
同时,文中还使用了手动标记的bbox进行评测模型的性能。
4.3 实验结果
图7中展示了文中提出的方法在DAGM数据集上的表现。
表1展示了文中方法与其他一些经典方法的性能比较。
4.4 第1阶段感受野的实验
由于训练数据和测试/验证数据不一样,FCN的最后一层设置的感受野不应该很大,在图2中我们通过将conv1和conv2的步幅从1更改为2,从而改变了FCN网络中的感受野。
测试结果如下(图8)。显然,在这种训练和测试策略中,网络的接受域最好不要太大。
在另一篇基于CNN的表面缺陷检测论文中,我们利用基于滑动窗口的方案来定位缺陷位置。虽然检测率高于本文中的方法,但它使用块来表示缺陷的位置,无法达到像素级分割精度。
5.总结
文中提到:可以使用更加细化先进的分割算法以在第一阶段提取RoI区域中获得更精准的感兴趣缺陷区域,从而获得更高的缺陷检测性能。
//本文仅作为日后复习之用,并无他用。
边栏推荐
- Live short video source code - the development sequence of live short video source code is five steps
- 从工程师到技术leader思维升级
- Several small open source projects of mine over the years
- 巴比特 | 元宇宙每日必读:虚拟人热度减退,有的“出道即巅峰”,围观人群都散了?...
- Scratch judge leap year electronic society graphical programming scratch grade examination level 4 true question and answer analysis June 2022
- 一汽红旗“王炸”上市,安全、舒适一个不落
- Docker installs common software redis
- 供应链攻击日益严重,微软开源 SBOM 生成工具 Salus
- .NET 7 新增速率限制 (Rate Limiting) 功能,轻松限制请求数量
- [dataset production] annotation tool
猜你喜欢
Supply chain attacks are becoming increasingly serious. Microsoft's open source SBOM generation tool Salus
Find - b+ tree
IDEA解决配置文件属性提示消失
Stm32+bh1750 photosensitive sensor obtains light intensity
Docker安装常用软件-Redis
聊一聊 C# 后台GC 到底是怎么回事?
Several small open source projects of mine over the years
Develop those things: how to solve the memory leak in the conversion between go and C type?
从工程师到技术leader思维升级
Nacos配置管理——配置热更新
随机推荐
Docker安装常用软件-Mysql
Panda3D绘制立方体
Druid configuration and monitoring
How to carry out "small step reconstruction"?
Is it really possible to make reports with zero coding?
如何进行「小步重构」?
RK3399平台开发系列讲解(进程间通信)14.10、如何查看进程调度的信息
[papers] famous conferences and periodicals
Druid 配置和监控
Kmeans handwriting implementation and sklearn interface
QGIS开发插件的文件路径
Driud 配置问题
Is it safe to open an account in Shanghai Securities?
I'd like to ask you something. I'm in Zhuhai now. Where is a better place to open an account? Is it safe to open a stock account by mobile phone?
Configuration et surveillance des fluides
Three application functions of digital sand table popular science
Isn't it too much to play Gobang in idea?
The new blue ocean "hard sunscreen" can't cover the 100 billion market
关于部署ogg 微服务的一些疑问
Unity实战问题-WebGL问题集锦-下篇