Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
Spatial Embeddings
- 摘要(Abstract)
- 逻辑链路
- 网络
代码地址:SpatialEmbeddings
论文地址:Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth
摘要(Abstract)
本文实现了在高准确度下的实时实例分割
批判:
- Proposal-based的方法具有高准确度但速度慢,在固定和低分辨率(Mask R-CNN的14×14)下生成mask。
- Proposal-free的方法速度快但精度低.
创新点:
- 提出了一种新的聚类损失函数,用于无 proposal 实例分割。该损失函数拉进属于同一实例的空间嵌入像素。
- 共同学习实例特定的聚类带宽,最大化生成实例 mask 的 IoU。
逻辑链路
首先给大家介绍几张自己画的丑图:
xix_ixi | CkC_kCk | o^i\hat{o}_io^i |
---|
xix_ixi表示的是每个像素的对应坐标位置,那么要如何区分实例呢?其实很简单就是对应相同时里,获取同样的值,这个值很显然可以是实例中心坐标CkC_kCk,那么其实就是对于每个实例的像素点学习一个距离中心的偏移量,也就得到了o^i\hat{o}_io^i。
先前的方法通过回归方法直接学习oio_ioi,Lregr=∑in∥oi−o^i∥\mathcal{L}_{regr} = \sum_{i}^{n} \parallel o_i -\hat{o}_i\parallelLregr=∑in∥oi−o^i∥。然而这在inference的时候会有两个问题。一个是必须先确定实例中心点,二是对于每个像素需要知道属于哪个实例。之前的方法一般是通过基于密度的聚类方法获得实例的中心点,然后按照距离中心最小原则来分配像素。由于此后处理步骤没有集成在损失函数中,因此无法对网络进行端到端的优化,从而导致效果不佳。
对于以上问题,其实CkC_kCk已经得到了解决方案,就是每个实例用相同的中心点位置信息来表示.那么预测的目标oio_ioi就通过嵌入位置信息xix_ixi得到了空间嵌入ei=xi+oie_i = x_i + o_iei=xi+oi.作者采用铰链loss迫使同实例像素去贴近中心点的值的某个固定邻域δ\deltaδ内,为什么要这样设置呢?因为所有像素值只要贴近中心点都是可以被接受的,比如图二中的(3,5),选择周围的(3,6),(3,4),(2,5),(4,5)都是可以被接受的,不必要限制中心到像素级.因此,铰链损失(hinge loss)如下:
Lhinge=∑k=1K∑ei∈Skmax(∥ei−Ck∥−δ,0)\mathcal{L}_{hinge} = \sum_{k=1}^K\sum_{e_i\in S_k}\max(\Vert {e_i - C_k}\Vert -\delta, 0) Lhinge=k=1∑Kei∈Sk∑max(∥ei−Ck∥−δ,0)
但是,由于δ\deltaδ使用同一的值,因此只能取决于最小的实例中心,这对大物体十分不太友好,因为大物体会产生大量偏离中心邻域的像素点,从而导致loss增大.最直观的想法就是对于每个实例产生一个特定的δ\deltaδ值.既然一是需要满足δ\deltaδ随着实例越大而越大,而是需要越偏离中心越loss越大. 那么很直观的想法就是生成一个以实例中心为原点的高斯概率图,概率值越高表示像素越靠近中心.
ϕk=exp(−∥ei−Ck∥22σk2)\phi_k=\exp\left(-\frac{\Vert e_i-C_k\Vert ^2}{2\sigma_k^2}\right) ϕk=exp(−2σk2∥ei−Ck∥2)
假设认为概率ϕk(ei)>0.5\phi_k(e_i)>0.5ϕk(ei)>0.5时,xix_ixi位置的像素将会被分配给实例kkk.那么就可以计算出每个实例的margin:
margin=−2σk2ln0.5margin=\sqrt{-2\sigma^2_k\ln 0.5} margin=−2σk2ln0.5
此时sigma(σ\sigmaσ)值越大,这个margin也就越大.这也要求网络对于每个实例学习一个适合的sigma值,很自然的,根据实例像素的数量可以大概推测sigma值的大小,因此,此处定义
σk=1∣Sk∣∑σi∈Skσi\sigma_k = \frac{1}{\vert S_k\vert}\sum_{\sigma_i\in S_k}\sigma_i σk=∣Sk∣1σi∈Sk∑σi
作者选择使用Lovasz-hinge损失来优化实例图和GT。由于这个损失函数是Jaccard损失的(片状线性)凸代替,它直接优化了每个实例的IoU。因此不需要考虑前景和背景之间的类不平衡。
值得注意的是,作者并不直接监督偏移量oio_ioi和σ\sigmaσ,而通过Lovasz-hinge loss和高斯函数的梯度后向传播最大化实例的IoU来优化.
为了进一步优化网络,作者还提出了椭圆margin,就是对x,y方向维度预测不同的σ\sigmaσ值,使得高斯函数呈现椭圆状:
ϕk(ei)=exp(−∥eix−Ckx∥2σkx2−∥eiy−Cky∥2σky2)\phi_k(e_i)=\exp\left(-\frac{\Vert e_{ix}-C_{kx}\Vert}{2\sigma_{kx}^2}-\frac{\Vert e_{iy}-C_{ky}\Vert}{2\sigma_{ky}^2}\right) ϕk(ei)=exp(−2σkx2∥eix−Ckx∥−2σky2∥eiy−Cky∥)
此外还有就是让网络自己学习实例的中心,而不是先验的像素坐标中心.
ϕk=exp(−∥ei−1∣Sk∣∑ei∈Skei∥2σk2)\phi_k=\exp\left(-\frac{\Vert e_i-\frac{1}{\vert S_k\vert}\sum_{e_i\in S_k}e_i\Vert}{2\sigma_k^2}\right) ϕk=exp(−2σk2∥ei−∣Sk∣1∑ei∈Skei∥)
最后一点,在inference时,需要围绕每个实例中心进行聚类。因此需要一个种子图来确定实例中心,那我们可以直接选择ϕk\phi_kϕk的最高值作为实例的中心点.所以,用回归损失函数来训练种子图。背景像素回归到零,前景像素回归到高斯的输出。作者为每个语义类训练一个种子图:
Lseed=1N∑iN1{si∈Sk}∥si−ϕk(ei)∥2+1{si∈bg}∥si−0∥2\mathcal{L}_{seed} = \frac{1}{N}\sum_i^N\mathbb{1}_{\{s_i\in S_k\}}\Vert s_i - \phi _k (e_i)\Vert ^2 + \mathbb{1}_{\{s_i\in bg\}}\Vert s_i - 0\Vert ^2 Lseed=N1i∑N1{si∈Sk}∥si−ϕk(ei)∥2+1{si∈bg}∥si−0∥2
具体而言,在推理过程中,对种子值最高的嵌入物进行采样,并将该位置作为实例中心Ck^\hat{C_k}Ck^ 。在同一位置,还取了sigma值,σ^k\hat{\sigma}_kσ^k 。通过使用这个中心和伴随的sigma值,将像素嵌入聚类到实例中:
ei∈Sk⇔exp(−∥ei−Ck∥22σ^k2)>0.5e_i \in S_k \Leftrightarrow \exp \left(-\frac{\Vert e_i-C_k\Vert ^2}{2\hat{\sigma}_k^2} \right) > 0.5 ei∈Sk⇔exp(−2σ^k2∥ei−Ck∥2)>0.5
接下来,mask out 种子图中的所有聚类像素,并继续采样,直到所有的种子都被mask。最后对所有类重复这个过程。
为了确保在采样期间σ^k≈σk=1∣Sk∣∑σi∈Skσi\hat{\sigma}_k\approx\sigma_k = \frac{1}{\vert S_k\vert}\sum_{\sigma_i\in S_k}\sigma_iσ^k≈σk=∣Sk∣1∑σi∈Skσi,作者添加了一个平滑项:
Lsmooth=1∣Sk∣∑σi∈Sk∥σi−σk∥2\mathcal{L}_{smooth} = \frac{1}{\vert S_k\vert}\sum_{\sigma_i\in S_k}\Vert\sigma_i-\sigma_k\Vert ^2 Lsmooth=∣Sk∣1σi∈Sk∑∥σi−σk∥2
网络
总结一下,整体的框架如上图所示,其实是一个很简单的语义分割 Encoder-Decoder 结构。输入为一张 3×H×W3\times H\times W3×H×W图像,输出包含三个部分的,a)σa)\ \sigmaa)σ图(1×H×W1\times H\times W1×H×W) b)b)b) 像素偏移向量(2×H×W2\times H\times W2×H×W) c)c)c) 类别特定的种子图 (C×H×WC\times H\times WC×H×W)
网络的核心是为了学习像素的偏移,即oio_ioi,这个偏移量是通过最大化IoU得Lovasz-hinge来优化的.但在inference过程中仍无法确定实例中心,因此网络通过每一类学习一个种子图,来确定中心点和σ\sigmaσ值, 为了平滑σ\sigmaσ值和实例大小的关系,网络预测σ\sigmaσ图.最后在inference的时候,结合种子图和sigma图的值得到高斯分布配合像素嵌入得到实例分割结果.
具体的细节可以参考原文,持续更新中
Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】相关推荐
- Brain tumor segmentation using deep learning +HybridResUnet脑胶质瘤分割BraTs +论文解读
Brain tumor segmentation using deep learning 下载地址 摘要 Brain tumor is one of the deadliest forms of ca ...
- 【论文阅读/翻译笔记】Deep Snake for Real-Time Instance Segmentation
原论文标题:Deep Snake for Real-Time Instance Segmentation 原论文链接:https://arxiv.org/abs/2001.01629 翻译:张欢荣 用 ...
- Deep Snake for Real-Time Instance Segmentation:基于Deep Snake的实例实时分割
本文针对自己所看的 Deep Snake 做一个总结和存档,也方便其他同学学习 -- 阿波,2020.4.23 论文原文:Deep Snake for Real-Time Instance Segme ...
- Affinity Derivation and Graph Merge for Instance Segmentation阅读笔记
论文链接:https://arxiv.org/abs/1811.10870 用于实例分割的亲和派生和图合并方法 一.简介 文章提出了一种基于像素亲和信息的实例分割机制,使用了两个相似的网络结构,一个网 ...
- CVPR 2020——OccuSeg: Occupancy-aware 3D Instance Segmentation
OccuSeg: Occupancy-aware 3D Instance Segmentation Abstract (一)Introduction (二)Related Work (三)Method ...
- OccuSeg: Occupancy-aware 3D Instance Segmentation
图 1. 给定输入的彩色点云,对每个体素的占用大小进行回归,从而预测其所属实例占用的体素数量.自适应聚类方案同时考虑占用信息和嵌入距离,进一步应用于3D实例分割. Abstract 如今,3D实例分割 ...
- (NeurIPS 2019) Learning Object Bounding Boxes for 3D Instance Segmentation on Point Clouds
Abstract 我们提出了一种新颖的.概念上简单的通用框架,用于在3D点云上进行实例分割.我们的方法称为3D-BoNet,遵循每点多层感知器(MLP)的简单设计理念.该框架直接回归点云中所有实例的3 ...
- 零样本分割系列论文(2)Open-Vocabulary Instance Segmentation via Robust Cross-Modal Pseudo-Labeling
我最近刚刚入门zero-shot segmentation,准备以此作为我的博士研究方向,这是我入门这个方向读的第二篇论文,这篇论文我读了5遍以上,文章篇幅有限,所以很多细节我在读论文的时候发现不了, ...
- 【文献翻译CVPR2022】SoftGroup for 3D Instance Segmentation on Point Clouds
点云三维实例分割的软分组 目录 点云三维实例分割的软分组 摘要 1 简介 2 相关工作 3 方法 3.1 逐点预测网络 3.2 软分组 3.3 自上而下的精细化 3.4 多任务学习 4 实验 4.1 ...
- Cell R-CNN V3: A Novel Panoptic Paradigm for Instance Segmentation in Biomedical Images
CVPR 2020 2.15 摘要 实例分割在医学图像分析任务中占有重要地位,但是由于存在对象外观的可变性.大量重叠对象及对象边界模糊等问题,此任务仍然具有挑战性. 深度学习:proposal-fre ...
最新文章
- const在指针中的用法
- Android -- 自定义StepView实现个人信息验证进度条
- mybatis获取oracle xmltype_Mybatis【入门】
- java treeset比较,java中TreeSet的两种排序比较的方式
- leetcode--Rotate List
- SpringBoot 实现接口参数加密解密功能
- Linux -- sudoers (简单:转)
- yolo-v5连接手机摄像头实时检测的步骤
- 联想Z5 Pro划时代旗舰发布 屏占比95.06%售价1998元起
- mybatis 关于出现Parameter array not found. Available parameters are [collection, list]问题的解决方案
- 【Shader进阶】Shader的Lod
- 【笔记】操作系统(六)——进程同步
- org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: Exception writing document id xxxx
- 【微信小程序】获取用户信息
- 17.sql server数据库使用规则、二八原则、数据库查询集群--数据库读写分离多种实现、数据库配置读写分离(by-朝夕)
- 【20210727】图说全球网站数量及服务器市场份额
- 电子电路学习笔记(5)——三极管
- 将SVG图像插入到Word中 - Tools
- Fabrice Bellard其人
- 函授计算机科学与技术就业方向,成人高等函授教 计算机科学与技术专业.doc