Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
文章目录
摘要
失败和异常监测能力是计算机视觉任务的基本要求,常规的作法是用模型生成的分割图和 ground truth作比较来判断模型的好坏。
作者这里并没有使用这个方法。
作者提出问题:既然合成图像可用来测试网络框架的好坏,那么由网络得到的分割图,分割效果越好的话,是否由分割结果生成的合成图像越接近输入图像?
该想法逻辑上是行得通的。
例如:如果人被误分割为杆,则根据分割结果生成的合成图像看起来不像人,并且合成图像和输入图像之间应该出现明显差异。
同样,当测试图像中出现异常(OOD)对象时,它将被分类为分割结果中的任何可能的分布内对象,然后再根据分割结果生成的合成图像中表现为分布内对象。
因此,可以通过找出输入图像和合成图像之间的差异来判断网络框架的好坏。
所以整个过程分为了两个阶段:
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 中,得到对应的分割图 y ^ = M ( x ) \hat{y}=M(x) y^=M(x),将分割图输入到生成器G中,得到对应的合成图 x ^ = G ( y ^ ) \hat{x}=G(\hat{y})