Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
文章目录
摘要
失败和异常监测能力是计算机视觉任务的基本要求,常规的作法是用模型生成的分割图和 ground truth作比较来判断模型的好坏。
作者这里并没有使用这个方法。
作者提出问题:既然合成图像可用来测试网络框架的好坏,那么由网络得到的分割图,分割效果越好的话,是否由分割结果生成的合成图像越接近输入图像?
该想法逻辑上是行得通的。
所以整个过程分为了两个阶段:
step1:分割结果用来重构输入图像
step2:计算合成图像和初始图像之间的差异。
图1用来举例:(i)失败检测和(ii)异常检测
(i)上面是一个 Image-level 的IoU 分数,下面是 Pixel-level 的错误映射图。
(ii)对于异常物体(直升机),得到它的分割图
主要贡献
- 第一个系统地研究用于语义分割的失败检测和异常检测
- 提出一个统一的框架,受益于 semantic-to-image 的 cGan 网络来解决这两个任务
- 该框架在三个数据集上获得当下最优的失败检测和异常检测结果
核心模块
因为需要做 semantic-to-image 的合成,所以该网络的核心模块是 cGAN。
主要流程
图2说明了该网络的主要流程
Methodology
Training
Eq.1 是GAN 网络的 min-max 公式,先 max D,固定生成器G,让判别器G最大限度的区分合成图和真实图;在 min G ,固定判别器D,让生成器G尽可能的缩小合成图和真实图之间的差异。
Eq.2 是 Eq.1 的具体表达式
Testing
训练完成后,固定生成器G,图像 x 输入到模型 M 中,得到对应的分割图 ,将分割图输入到生成器G中,得到对应的合成图
接下来将合成图输入到比较模块中,得到合成图和真实图之间的差异
该方法的一个分析
Experiments
表1和图5是一组实验结果
表2和图6是一组实验结果
表3和图7是一组实验结果
为什么这个方法表现效果要好呢?
现有的方法主要集中在利用自估计统计改进故障检测。然而,深层网络倾向于产生高置信度的预测,因此自估计的统计数据是不可信的。利用额外数据或交替训练策略的方法可以缓解这个问题。我们提出从另一个角度来解决这一问题——用生成模型分析深度判别模型的性能,这是对条件数据分布先验P(x | y)进行逆向建模的过程。
个人总结
作者创造性逆向考虑评判标准,比较合成图像和真实图像之间的差异来评判模型的好坏,而且在数据集上获得不错的的表现结果。
但是有个疑问?
原先直接比较分割图和真值标签之间的差异,而现在先得生成分割图,再用分割图合成图像,比较合成图和真实图之间的差异,这种比较多了一个阶段,会不会对任务的速度上造成一定的影响?而且实验结果里也没有相关的数据。所以该性能的提升可能带来速度的下降,这种速度和准确性有没有一个好的折中有带考虑。
最大的收获就是这种逆向思维,要多思考,把它运用到任务中。