UPSNet: A Unified Panoptic Segmentation Network

UPSNet CVPR2019

论文链接: https://arxiv.org/abs/1901.03784

一、 Problem Statement

目前很多网络都是利用实例分割和语义分割,进行后处理后得到全景分割的效果,因此作者提出一个统一的网络解决全景分割问题。

Motivation: Since both tasks aim at understanding the visual scene at the pixel level, a shared model or representation could arguably be beneficial. 既然两个任务都是在像素级别上理解场景,那一个共有的模型或者表征会有益。

二、 Direction

  • 基于semantic segmentation head 和 instance segmentation head,设计一个Parameter-free panoptic head。
  • 多预测一个unknown class,有助于解决语义分割和实例分割的冲突。

三、 Method

先来看以下整体的网络结构:

  • Backbone: ResNet + FPN

着重讲一下prediction heads.

1. Prediction Heads

  • Instance segmentation head
    基于Mask R-CNN的设计,包含bounding box regression, classification 和segmentation mask。Instance head的目标是用于产生实例的表征,对识别thing的类别更好。

  • Semantic segmentation head
    基于deformanble convolution的semantic segmentation head。输入是FPN的multi-scale特征,也就是P2,P3,P4,P5P2, P3, P4, P5P2,P3,P4,P5,每一层都含有256通道数。这些特征图首先都会分别输入到deformable convolution netowrk,然后concatenate它们,并使用1x1卷积和softmax进行预测语义类别。

    为了更突出前景目标,作者使用了RoI loss,提升了全景的性能,同时没有降低语义分割的性能。在训练期间,在1x1卷积后面,使用实例的ground-truth bounding box裁剪logits map,然后将其调整为28×28大小。然后,RoI损失是在28×28面片上计算的交叉熵,这相当于对实例中不正确分类的像素进行更多惩罚。

  • Panoptic segmentation head

    对于任何一张图片,我们在训练的时候,根据ground-truth中instance的个数决定instance的数量NinstN_{inst}Ninst​,在推理的时候,我们依靠mask pruning步骤决定NinstN_{inst}Ninst​。NstuffN_{stuff}Nstuff​是固定的,因为stuff 类别的数量对于不同照片都是固定的,而NinstN_{inst}Ninst​不是固定的,因为每个图片中每个实例的数量是不固定的。panoptic segmentation head的目的首先是生成一个logit tensor ZZZ,大小是(Nstuff+Nthing)×H×W(N_{stuff} + N_{thing}) \times H \times W(Nstuff​+Nthing​)×H×W。然后决定每个像素的类别和instance ID。

    我们首先把XstuffX_{stuff}Xstuff​赋值给ZZZ的NstuffN_{stuff}Nstuff​通道,提供分类stuffs的逻辑。对于任何实例iii,我们有来自于instance segmentation的mask logits YiY_iYi​,大小为28x28。我们同时拥有其bounding box BiB_iBi​ 和 class ID CiC_iCi​。在训练的时候,Bi,CiB_i,C_iBi​,Ci​作为ground-truth 而在推理的时候,由Mask R-CNN提供。从semantic中,我们可以获得第i−thi-thi−th个实例的另外一个表征XmaskiX_{mask_i}Xmaski​​,通过bounding boxBiB_iBi​对XthingX_{thing}Xthing​通道提取对应CiC_iCi​的值。XmaskiX_{mask_i}Xmaski​​ 的大小是HxW,在bounding boxBiB_iBi​外面的值都是0. 我们之后將YiY_iYi​通过bilinear interpolation,插值到与XmaskiX_{mask_i}Xmaski​​同样大小,然后对其它不在box的区域进行zero-padding。最后i−thi-thi−th的实例表征为:
    ZNstuff+i=Xmaski+YmaskZ_{N_{stuff} + i} = X_{mask_i}+ Y_{mask} ZNstuff​+i​=Xmaski​​+Ymask​
    一旦我们对所有实例的表征,填充到ZZZ中,我们就是用softmax function,在通道的维度上进行预测每个像素的类别。

    特别地, 如果最大的值,落在了NstuffN_{stuff}Nstuff​的通道上,那么它就属于stuff classes中的一个。否则,最大值的索引会告诉我们它的实例ID。

    在训练的时候,我们生成ground truth的instance ID 根据ground truth boxes的顺序。

    panoptic segmentation head最后会与一个标准的Pixel-wise cross entropy loss进行关联。

    在推理的时候,一旦我们预测出来instance ID,我们仍然需要决定每个实例的class ID。既可以使用Mask R-CNN里面预测出来的CinstC_{inst}Cinst​,或者semantic head中的CsemC_{sem}Csem​。 本文用的是一个heuristic rules。 具体来说,对于任意一个实例,我们知道哪个像素属于它,比如,那些在ZZZ tensor上通道维度中的argmax位置,对应于它的实例ID。 在这些像素上,我们首先检查CinstC_{inst}Cinst​和CsemC_{sem}Csem​是不是匹配的。如果是,那就把class ID赋为CinstC_{inst}Cinst​。如果不是,我们计算CsemC_{sem}Csem​的mode,并赋给C^sem\hat{C}_{sem}C^sem​。如果mode of frequency大于0.5,且C^sem\hat{C}_{sem}C^sem​属于stuff,则把预测的class ID设置为C^sem\hat{C}_{sem}C^sem​。否则,把class ID设置为CinstC_{inst}Cinst​。总之,当匹配不上的时候,我们只有在semantic head倾向于是stuff的时候,主要相信semantic head的结果。

  • Unknown prediction:
    作者引入了一个新的机制,允许UPSNet將一个像素分类为unknown class。

    panoptic quality metric定义如下:
    PQ=∑(p,g)∈TPIoU(p,g)∣TP∣∣TP∣∣TP∣+12∣FP∣+12∣FN∣PQ = \frac{\sum_{(p,g) \in TP}IoU(p,g)}{|TP|} \frac{|TP|}{|TP| + \frac{1}{2}|FP| + \frac{1}{2} |FN|} PQ=∣TP∣∑(p,g)∈TP​IoU(p,g)​∣TP∣+21​∣FP∣+21​∣FN∣∣TP∣​
    前一项是recognition quality(RQ), 后面一项是semantic quality(SQ)。假如增大FN或者FP,那PQ都会下降。因此,如果错误的预测是无法避免的,预测这个像素作为unknown类别,会对FN 增加1, 而对其他类的FP不会造成影响。

    为了解决这个问题,我们计算unknown class的logits,
    Zunknown=max(xthing)−max(xmask)Z_{unknown} = max(x_{thing}) - max(x_{mask}) Zunknown​=max(xthing​)−max(xmask​)
    其中,xmaskx_{mask}xmask​是xmaskix_{mask_i}xmaski​​的在channel维度上的拼接,大小为:Ninst×H×WN_{inst} \times H \times WNinst​×H×W。对于任何一个像素,如果XthingX_{thing}Xthing​的最大值比XmaskX_{mask}Xmask​的最大值大,那么很可能我们漏掉了某个实例(FNFNFN)。为了生成unknown class的ground turth,我们随机采用30%ground truth mask 然后把他们在训练的时候设置为unknown。在评价矩阵中,任何属于unknown的像素都被忽略。

2. Loss function

UPSNet有8个loss functions:

  • Semantic segmentation head

    • whole image loss
    • RoI based pixel-wise classification loss
  • Panoptic segmentation head
    • whole image based pixel-wise classification loss
    • RPN (box classification, box regression)
  • Instance segmentation head
    • box classification
    • box regression
    • mask segmentation

性能如下:

四、 Conclusion

提出了一个统一的panoptic segmentation head,实现端到端的训练。

Reference

UPSNet 论文笔记相关推荐

  1. UPSNet论文笔记

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-115.html 论文:Yuwen Xiong, Renjie ...

  2. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

  3. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  4. 最新图神经网络论文笔记汇总(附pdf下载)

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...

  5. [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)

    Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...

  6. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  7. 光流 速度_[论文笔记] FlowNet 光流估计

    [论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...

  8. 论文笔记 《Maxout Networks》 《Network In Network》

    原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...

  9. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization

    论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts_U ...

最新文章

  1. CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
  2. C++转Python这三年,我都经历了什么?
  3. 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
  4. 安全专家呼吁希拉里要求重新计票
  5. 面经——嵌入式软件工程师ARM体系与架构相关
  6. 微软邮件服务器名称,邮箱服务器角色概述
  7. android gridview添加标题,android gridview布局添加多個title
  8. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
  9. verilog系统任务之$random
  10. 读书笔记-整理的艺术
  11. java中math中的指数是,java指数运算math
  12. Oracle Linux网卡参数默认设置导致ORA-603
  13. USB音频芯片/TYPE-C音视频处理芯片方案选型表
  14. 关于拉姆达,委托,匿名函数
  15. golang中的字符串拼接
  16. 苹果plus HTML高度,苹果6S/6S Plus怎么查看海拔高度?
  17. 拓展全球领域iebook超级精灵与国际巨头合作走向新市场
  18. 如何查看手机的CPU架构
  19. python指定路径斜杠与反斜杠的问题
  20. 一小时赚200,月入3万!“职业陪护”挣钱太野了

热门文章

  1. vue移动端和pc适配,搭建网站布局
  2. Word2016论文引用
  3. 如何对台式计算机 笔记本进行日常维护,笔记本电脑日常怎么保养?这些方法别错过了...
  4. 停滞在一个圈子,决定人生的高低![深度文章]
  5. 皮尔森类似度(Pearson Similiarity)计算举例与数学特性和存在问题
  6. checkra1n u盘越狱 linux,苹果实用技巧:Windows通过使用Linux U盘进行checkra1n越狱教程...
  7. 外键约束的作用以及如何创建外键约束
  8. Unit nginx.service entered failed state(nginx启动失败)
  9. 【生成PDF】Java如何根据前台Echarts图表生成PDF,并下载
  10. 转:德鲁克:管理的本质是激发善意和潜能