UPSNet 论文笔记
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)∈TPIoU(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 论文笔记相关推荐
- UPSNet论文笔记
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-115.html 论文:Yuwen Xiong, Renjie ...
- ORB-SLAM3 论文笔记
ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...
- 最新图神经网络论文笔记汇总(附pdf下载)
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...
- [论文笔记] 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 ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- 光流 速度_[论文笔记] FlowNet 光流估计
[论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...
- 论文笔记 《Maxout Networks》 《Network In Network》
原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...
- 论文笔记: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 ...
最新文章
- CUDA error: device-side assert triggered Assertion t 」= 0 t n classes failed
- C++转Python这三年,我都经历了什么?
- 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
- 安全专家呼吁希拉里要求重新计票
- 面经——嵌入式软件工程师ARM体系与架构相关
- 微软邮件服务器名称,邮箱服务器角色概述
- android gridview添加标题,android gridview布局添加多個title
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
- verilog系统任务之$random
- 读书笔记-整理的艺术
- java中math中的指数是,java指数运算math
- Oracle Linux网卡参数默认设置导致ORA-603
- USB音频芯片/TYPE-C音视频处理芯片方案选型表
- 关于拉姆达,委托,匿名函数
- golang中的字符串拼接
- 苹果plus HTML高度,苹果6S/6S Plus怎么查看海拔高度?
- 拓展全球领域iebook超级精灵与国际巨头合作走向新市场
- 如何查看手机的CPU架构
- python指定路径斜杠与反斜杠的问题
- 一小时赚200,月入3万!“职业陪护”挣钱太野了
热门文章
- vue移动端和pc适配,搭建网站布局
- Word2016论文引用
- 如何对台式计算机 笔记本进行日常维护,笔记本电脑日常怎么保养?这些方法别错过了...
- 停滞在一个圈子,决定人生的高低![深度文章]
- 皮尔森类似度(Pearson Similiarity)计算举例与数学特性和存在问题
- checkra1n u盘越狱 linux,苹果实用技巧:Windows通过使用Linux U盘进行checkra1n越狱教程...
- 外键约束的作用以及如何创建外键约束
- Unit nginx.service entered failed state(nginx启动失败)
- 【生成PDF】Java如何根据前台Echarts图表生成PDF,并下载
- 转:德鲁克:管理的本质是激发善意和潜能