ECCV 2020 | 语义分割的落地应用:故障检测与异常检测

2020 年 7 月 16 日 CVer

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文转载自:阿柴和她的CV学习日记 

注:论文已上传,文末附下载方式


论文名:Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation

论文地址:https://arxiv.org/abs/2003.08440

代码地址:未开源

语义分割在自动驾驶、医学影像分割等方面有着广泛的应用。在这些领域,语义分割结果的准确性是非常重要的,比如医学影像的分割结果如果出错,那么将直接影响之后对于病情的判断。但是我们也知道,在实际应用中,对于输入到训练好的语义分割模型中的图像,实际上是没有groud truth的。那么,我们该如何知道对于这一输入图像:1)分割结果到底是好是坏?(故障检测);2)如果输入图像图像中出现了给定类别之外的异常类别,我们又如何能够直接感应到?(异常检测)

一、简介

先形象化的理解一下故障检测与异常检测这两个概念:

图一:故障检测(左)、异常检测(右)示例

故障检测(Failure Detection)

在本文中,故障检测有两个目标:1)给出预测的分割结果与“真值”的在当前图像上存在的类别的交并比(这个真值是不存在的。你可能会想不存在怎么比较?不是开玩笑吗?别急后面的方法部分会告诉你如何比较),如图一(左)右上部分;2)定位到预测错误的区域,如图一(左)右下部分。还是没有真值,那么又是如何完成错误的定位的呢?

异常检测/分割(Anomaly Segmentation)

一场检测简单点来说就是,我们现实生活中的目标的类别是要远远多于我们训练好的语义分割模型所定义的类比的(比如PASCAL VOC2012的类别就只有21类)。那么万一在实际应用过程中输入图像出现了这些在训练阶段语义分割模型没有定义到的类别,我们该如何第一时间检测到这一类别,并在分割出属于该异常类别的目标在图中的位置呢(如图一(右))?

二、方法

现在我们明确一下我们的目标以及所拥有的已知条件:

目标:现实语义分割的落地场景中,输入到语义分割模型中的图像是没有真值的,但是我们又想知道分割结果的好坏,所以我们的目标是进行故障检测(Failure Detection)异常检测/分割(Anomaly Segmentation)

已知条件:1)输入图像x;2)训练好的语义分割模型M;3)输入图像的经过语义分割模型M后的预测结果y^.

下面我们来看一下作者是怎么应用上述已知条件来完成上述目标的。

首先,作者利用对抗生成网络GAN的原理(当然作者论文中用的是cGAN [1])使用预测图y^作为GAN的输入,输出了合成的原图x^.其大致过程如图二(上)所示。

有对GAN不熟悉的可以参考:

GAN学习指南:从原理入门到制作生成Demo

图二:cGAN合成原图的过程(上),以GT合成原图为例。完整的进行故障检测与异常检测的过程(下)

随后,作者设计了一个比较模块,来通过比较合成图x^与原图x之间的差别来完成故障检测与异常检测的目标。作者的假设是,如果x^类似于x, 那么y^就类似于y。然而,由于GAN中的生成器G的优化并不能保证合成图像x^风格与原始图像x相同,所以简单的相似性测量,如测量x和x^之间的L1距离是不准确的。所以作者针对故障检测与异常检测两个不同的任务设计了不同的比较模块F。比较模块的目标是输出C^:

对于不同的任务,C^的含义不同.

在故障检测中,C^代表的是C^iu与C^m的集合。C^iu和C^m就是前面在简介中所提到的预测的分割结果与“真值”的在当前图像上存在的类别的交并比与定位到预测错误区域的error map。他们的形状分别为长为L的一维向量宽高分别为w,h(即原图宽高)二维map

在异常检测中,C^代表的是对于异常目标的分割图,它的形状为宽高分别为w,h(即原图宽高)二维map。

我们来看看作者是如何具体设计比较模块的:

故障检测:

图三:故障检测的比较模块,利用孪生网络。

作者利用孪生网络(siamese network)来比较合成图像与原始图像的差别。孪生网络,简单点来说就是网络结构一样,参数共享的两个网络。这里的网络使用的是ResNet-18。输入如图所示。主要过程通过图相信大家都能看懂,这里主要讲一下这个网络在训练阶段是通过什么来监督的:

我们知道在训练阶段我们的输入图像是有真值的。所以我们可以去计算预测图与真值的每个类别iou,即Ciu:

其中,l代表的是其中的第l类。右上角的i代表第i个像素。那么我们就可以以Ciu为监督信息,以L1 loss为损失函数去监督网络训练。这样,训练好的网络可以去预测C^iu。

而对于error map 的预测的话,同样由于训练过程中有着真值y。所以可以计算出真正的error map,即Cm:

以此为监督信息,并使用二元交叉熵损失函数去监督网络训练。这样,训练好的网络可以去预测C^m。

以上两个损失函数可以写为:

异常检测:

与故障检测一样,首先在训练图像上训练一个cGAN生成器G,它使用分割对象标签来合成图像。给定一个语义分割模型M,我们得到其预测yˆ = M (x)和获取的合成图像xˆ = G(yˆ)。由于yˆ中只包含了给定的类别,所以xˆ也只包含了给定的类别。因此xˆ与x会差别很大。所以将x与xˆ再次输入M中时,M最后一层所提取的特征也会有很大的差别。作者用余弦距离作为指标来定义x与xˆ在M最后一层特征上的差异:

这个公式中f代表着M最后一层的特征图。i代表特征图中的第i个像素。

这样就直接得到了我们之前在简介中图一所看到的异常分割的分割结果。

三、实验

Cityscapes:

表1:在Cityscapes数据集上的实验。我们在FCN-8和Deeplab-v2的分割结果中进行失败检测。“Ours separate”和““Ours joint”意味着分别训练我们网络中的图像级和像素级故障检测头。
图一:Cityscapes数据集上的可视化

表二:StreetHazards数据集的异常分割结果
图二:Visualizations on the StreetHazards dataset.

参考文献:

[1]Mirza, M., Osindero, S.: Conditional generative adversarial nets. arXiv preprint arXiv:1411.1784 (2014)

下载


在CVer公众号后台回复0716,即可下载本论文


重磅!CVer-图像分割交流群成立


扫码添加CVer助手,可申请加入CVer-图像分割 微信交流群,目前已满1500+人,旨在交流语义分割、实例分割、全景分割和医学图像分割等方向。


同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如图像分割+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加微信群


▲长按关注CVer公众号

点赞和在看!让更多CVer看见

登录查看更多
3

相关内容

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。异常也被称为离群值、新奇、噪声、偏差和例外。 特别是在检测滥用与网络入侵时,有趣性对象往往不是罕见对象,但却是超出预料的突发活动。这种模式不遵循通常统计定义中把异常点看作是罕见对象,于是许多异常检测方法(特别是无监督的方法)将对此类数据失效,除非进行了合适的聚集。相反,聚类分析算法可能可以检测出这些模式形成的微聚类。 有三大类异常检测方法。[1] 在假设数据集中大多数实例都是正常的前提下,无监督异常检测方法能通过寻找与其他数据最不匹配的实例来检测出未标记测试数据的异常。监督式异常检测方法需要一个已经被标记“正常”与“异常”的数据集,并涉及到训练分类器(与许多其他的统计分类问题的关键区别是异常检测的内在不均衡性)。半监督式异常检测方法根据一个给定的正常训练数据集创建一个表示正常行为的模型,然后检测由学习模型生成的测试实例的可能性。
专知会员服务
13+阅读 · 2020年9月19日
3D目标检测进展综述
专知会员服务
193+阅读 · 2020年4月24日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
44+阅读 · 2020年4月17日
生成式对抗网络GAN异常检测
专知会员服务
117+阅读 · 2019年10月13日
ICCV 2019 | 精确的端到端的弱监督目标检测网络
AI科技评论
11+阅读 · 2019年12月9日
最新Anchor-Free目标检测模型—FoveaBox
PaperWeekly
6+阅读 · 2019年4月29日
ECCV 2018 | ALFNet:向高效行人检测迈进(附代码)
极市平台
12+阅读 · 2018年9月14日
时序异常检测算法概览
论智
29+阅读 · 2018年8月30日
边缘计算应用:传感数据异常实时检测算法
计算机研究与发展
11+阅读 · 2018年4月10日
深度学习目标检测概览
AI研习社
46+阅读 · 2017年10月13日
干货|用机器学习检测异常点击流
全球人工智能
6+阅读 · 2017年7月30日
Arxiv
5+阅读 · 2018年4月17日
Arxiv
7+阅读 · 2018年4月11日
Arxiv
11+阅读 · 2018年4月8日
Arxiv
3+阅读 · 2018年3月5日
Arxiv
5+阅读 · 2016年12月29日
VIP会员
相关资讯
ICCV 2019 | 精确的端到端的弱监督目标检测网络
AI科技评论
11+阅读 · 2019年12月9日
最新Anchor-Free目标检测模型—FoveaBox
PaperWeekly
6+阅读 · 2019年4月29日
ECCV 2018 | ALFNet:向高效行人检测迈进(附代码)
极市平台
12+阅读 · 2018年9月14日
时序异常检测算法概览
论智
29+阅读 · 2018年8月30日
边缘计算应用:传感数据异常实时检测算法
计算机研究与发展
11+阅读 · 2018年4月10日
深度学习目标检测概览
AI研习社
46+阅读 · 2017年10月13日
干货|用机器学习检测异常点击流
全球人工智能
6+阅读 · 2017年7月30日
Top
微信扫码咨询专知VIP会员