ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全景分割论文阅读:Real-Time Panoptic Segmentation from Dense Detections(CVPR2020)

2021-01-20 10:57:59  阅读:337  来源: 互联网

标签:Real Segmentation Dense mask 语义 分割 bbox 全景 分支


标题:基于密集检测的实时全景分割
作者:Arjun Bhargava Allan Raventos Vitor Guizilini Chao Fang Jerome Lynch Adrien Gaidon
机构:Toyota Research Institute; University of Michigan, Ann Arbor
论文地址:https://arxiv.org/abs/1912.01202
项目地址:https://github.com/TRI-ML/realtime_panoptic

摘要

全景分割是一个复杂的场景理解任务,因为既需要及时的实例分割和语义分割结果,又需要高分辨率。目前的顶尖的方式都不能实时运行,并且简化这些网络的结构从而提高效率的方式会降低精度。
在本文中,我们提出了一种新的单次全景分割网络,该网络利用密集检测和全局自我注意力机制实时运行,并且性能接近最新技术。 我们引入了一种新颖的无参数掩码构造方法(是否与UPSNet head类似??),该方法通过有效地重用来自对象检测和语义分割子任务的信息,大大降低了计算复杂性。 生成的网络具有简单的数据流,无需重新采样功能图,从而实现了显着的硬件加速。 我们在Cityscapes和COCO基准上进行的实验表明,相对于我们的网络而言,相对性能下降3%时,在1024×2048分辨率下,以30 FPS的速度工作,当前的最新技术可将推理速度提高多达440%
在这里插入图片描述

介绍

  • 回顾全景分割任务定义及实例和语义分割两个子任务,提到之前的方式都只关注精度。
  • 为了解决实时性问题,本文在现存的架构中发现了两个可以改进的点:
    第一个发现:最准确的实例分割方法遵循“先检测再分割”的理念(现在不是了哈哈),但是在“检测”阶段会丢弃大量信息。 比如,Proposal bbox会经过NMS等滤波过程,最后筛选出最优的结果。这种选择策略会丢弃由网络生成的排名较低的提议,即使它们可能与label有很大的重叠。 相反,我们建议重用NMS丢弃的密集边界提案以直接恢复实例蒙版,即无需重新采样特征或对后处理进行聚类
    第二个发现:其次,我们观察到语义分割捕获了与检测相同的大部分信息(比如类别预测),尤其是在现有的全景分割框架中。因此,在语义分割和检测流之间共享计算可以显着降低总体复杂度。

主要贡献有三点:
(i)通过无参数全局自注意力机制重用丢弃的对象检测输出,引入了一种新的全景分割方法,该方法扩展了密集对象检测和语义分段。
(ii)我们提出了用于实时全景分割的单发框架,该框架可实现与图1所示的当前技术水平相当的性能,但推理速度最高可提高4倍;
(iii)我们自然地扩展了我们提出的方法,该方法可以在弱监督的情况下工作。

相关工作

  • Instance Segmentation
  • Panoptic Segmentation

Panoptic from Dense Detections

Problem Formulation

对于整体全景分割预测

P ( x , y ) = ( c , k ) , c ∈ 1 , . . . , N , k ∈ N P(x,y)=(c,k),c ∈{1, ...,N},k ∈ N P(x,y)=(c,k),c∈1,...,N,k∈N

其中 P ( x , y ) P(x,y) P(x,y)表示每个像素点 ( x , y ) (x,y) (x,y)的预测结果,c是语义类别ID,k是实例ID(所有stuff类为0),N是包含填充( N s t u f f N_{stuff} Nstuff​)和事物( N t h i n g s N_{things} Nthings​)类的类别总数。

对于语义分割分支

对每个像素都去预测它的语义类别概率 P ˆ s e m ( x , y , c ) = S ( x , y ) [ c ] , S ( x , y ) ∈ R N Pˆ_{sem}(x, y, c)= S(x, y)[c], S(x, y) ∈ R^N Pˆsem​(x,y,c)=S(x,y)[c],S(x,y)∈RN
(那么S就是每个像素点的N个通道值)

对于密集bbox预测分支
对每个像素都预测至少一个bbox:
B ( x , y ) = B , B = ( b , c ) , b = ( x 1 , x 2 , y 1 , y 2 ) ∈ R 4 , c ∈ 1 , . . . , N t h i n g s B(x, y)= B, B =(b,c), b =(x_1,x_2,y_1,y_2) ∈ R^4,c ∈{1, ...,N_{things}} B(x,y)=B,B=(b,c),b=(x1​,x2​,y1​,y2​)∈R4,c∈1,...,Nthings​
其中 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​)和 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​)是像素 ( x , y ) (x,y) (x,y)所属的边界框B的左上角和右下角的坐标; c是对应边界框的预测类别ID。
而对于语义分割和bbox检测分支(实例分支)来说,都可以通过全卷积网络直接学习和预测。

Parameter-Free Mask Construction

这个模块是用来生成Instance mask的!注意,上面bbox分支只是获得了给每个像素点分配的预测bbox和类别。

有了预测的S和B,文章介绍了一种利用全局自注意机制的无参数实例掩码生成算法

方法流程
我们首先NMS从B获得了一组简化的Bbox Proposal。

B q u e r y = B j , B j = ( b j , c j ) B_{query} = {Bj}, Bj =(bj,cj) Bquery​=Bj,Bj=(bj,cj)

然后对于每个query bbox B j {Bj} Bj,构建一个全局mask概率图:

M ( x , y , j ) = ˆ P l o c ( x , y , j ) ⋅ ˆ P s e m ( x , y , c j ) M(x, y, j)= ˆP_{loc}(x, y, j) · ˆP_{sem}(x, y, c_j) M(x,y,j)=ˆPloc​(x,y,j)⋅ˆPsem​(x,y,cj​)

这里呢, ˆ P l o c ( x , y , j ) ˆP_{loc}(x, y, j) ˆPloc​(x,y,j)表示像素在第j个bbox内的估计概率。其计算的公式:

P ˆ l o c ( x , y , j ) = I o U ( B ( x , y ) , B j ) Pˆloc(x, y, j)=IoU(B(x, y), B_j) Pˆloc(x,y,j)=IoU(B(x,y),Bj​)

B ( x , y ) B(x, y) B(x,y)是全部的Boxes集合, B j B_j Bj​上面提到的NMS处理后的少量精确bbox。最后设置一个门限值滤掉一些global mask probability map。

有了语义结果和生成的实例mask结果,为了得到最后的全景分割结果,文章采用了Panoptic Segmentation那篇论文的策略。

网络

方法流程图
在这里插入图片描述
可以看到整个方法的流程还是很清楚的,输入一张图片,分为两个分支:Semantic Segmentation(S)和Dense Bounding Boxes(B)。然后对得到的密集Proposal Bboxes (the global set of boxes B)进行非极大值抑制(NMS)等滤波操作得到最后的Bounding Box精确框。然后将得到的精确框( B q u e r y B_{query} Bquery​)与 the global set of boxes B做IOU计算,引入Self-attention,得到初步的instance mask结果。然后再与semantic Segmentation结果做一个优化,得到最后的instance mask。经过最后简单merge步骤,得到Panoptic Segmentation。

merge步骤:Then, we combine those segments with semantic segmentation results by resolving any overlap between thing and stuff classes in favor of the thing class (i.e., a pixel with a thing and stuff label is assigned the thing label and its instance id).

网络结构图
在这里插入图片描述
可以看到,文章将特征提取块后面的整个一部分称为Panoptic Head(有点怪,明明里面还是像之前的UPSNet一样,两个分支。只是这里复了semantic 分支的特征来对boundingbox做分类/或者说就是将一个类似于maskRCNN的网络里面的两个分支做了改动,复用了semantic分支的特征来为boundingbox分类。而且前面不是说的是:无参的Panoptic head吗。所以文章前面说的Panoptic head只是最后merge部分的算法操作。)

具体是怎么做的呢:对于每个FPN level输出 F i F_i Fi​,如图所示有两个分支,一个location和一个semantic。每个分支都有一个tower,每个tower包含4个卷积block(Conv+GroupNorm+Relu)。这里的tower对整个FPN是共享参数的。
然后location分支直接做中心点预测和bounding box offsets,从而来做bbox的回归。语义分支则输出语义分割预测结果,同时bounding box的类别预测也直接从语义分支获取。最后将每个FPN level F i F_i Fi​经过两个分支的结果上采样并Concatenate。得到最终的Global semantic输出和名为Global Levelness的输出(没看懂这个Levelness是用来干嘛的…前面好像也没提到),经过上文提到的instance mask生成和最后的merge算法,就得到了最后的结果。

损失函数

一个bounding box regression损失(融合了IOU损失)
一个中心点预测损失(使用BCE损失)
一个语义分割损失
一个boc分类损失
一个levelness损失(levelness:每个位置(x,y)的边界框所属的FPN级别(Nl =每个位置的FPN级别数量+1 logits,其中0保留给背景像素),levelness告诉我们在全局密集边界框预测B的全局集合中应包括哪个 ˆ b x y ( i ) ˆb^{(i)}_{xy} ˆbxy(i)​) ???没看懂用来干嘛的
一个instance mask construction损失
具体看论文了。

结果

文章在Cityscopes和COCO上做了实验。
在这里插入图片描述
在这里插入图片描述

从结果上看,不算好…速度也并没有写的那么好。和之前的方法比确实快了那么一点点。文章说的30FPS是经过TensorRT编译之后的结果,精度上还会比上面表格里的值下降一些。

总结

这篇论文这样看完以后,发现论文的结果其实并不是那么好。所谓的实时其实也是经过TensorRT等附加加速工具实现,本身网络结构设计的速度和其他的网络相差不大。并且在指标上并没有较大提升。而且不知道是自己没看懂还是文章没写清楚,特别是那个Levelness,文章说加入后提升了1个PQ点,但是不知道具体是怎么用的。并且文章的方法对于全景分割来说,没有太大创新点,融合策略都是直接使用的之前最早提出全景分割论文的那个方法,算是比较粗糙的融合了。
唯一的亮点感觉就是特征复用了,从而实现提速???。
感觉还有很多地方需要解释,文章的烧灼实验根本就没写,也不知道各个部分的贡献有多大。比如特征复用对速度的提速有多大,对精度的影响是怎样的?特别是对于从dense bbox生成instance mask那部分,不是应该对生成的mask质量做一个评价???根本不知道这样生成的mask质量怎么样啊。

标签:Real,Segmentation,Dense,mask,语义,分割,bbox,全景,分支
来源: https://blog.csdn.net/weixin_43572595/article/details/112801028

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有