Spatial Embeddings

  • 摘要(Abstract)
  • 逻辑链路
    • 网络

代码地址:SpatialEmbeddings
论文地址:Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth

摘要(Abstract)

本文实现了在高准确度下的实时实例分割
批判

  1. Proposal-based的方法具有高准确度但速度慢,在固定和低分辨率(Mask R-CNN的14×14)下生成mask。
  2. Proposal-free的方法速度快但精度低.

创新点

  1. 提出了一种新的聚类损失函数,用于无 proposal 实例分割。该损失函数拉进属于同一实例的空间嵌入像素。
  2. 共同学习实例特定的聚类带宽,最大化生成实例 mask 的 IoU。

逻辑链路

首先给大家介绍几张自己画的丑图:

xix_ixi CkC_kCk o^i\hat{o}_io^i

xix_ixi表示的是每个像素的对应坐标位置,那么要如何区分实例呢?其实很简单就是对应相同时里,获取同样的值,这个值很显然可以是实例中心坐标CkC_kCk,那么其实就是对于每个实例的像素点学习一个距离中心的偏移量,也就得到了o^i\hat{o}_io^i
先前的方法通过回归方法直接学习oio_ioiLregr=∑in∥oi−o^i∥\mathcal{L}_{regr} = \sum_{i}^{n} \parallel o_i -\hat{o}_i\parallelLregr=inoio^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=1KeiSkmax(eiCkδ,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σk2eiCk2)
假设认为概率ϕk(ei)>0.5\phi_k(e_i)>0.5ϕk(ei)>0.5时,xix_ixi位置的像素将会被分配给实例kkk.那么就可以计算出每个实例的margin:
margin=−2σk2ln⁡0.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=Sk1σiSkσ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σkx2eixCkx2σky2eiyCky)
此外还有就是让网络自己学习实例的中心,而不是先验的像素坐标中心.
ϕ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σk2eiSk1eiSkei)
最后一点,在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=N1iN1{siSk}siϕk(ei)2+1{sibg}si02
具体而言,在推理过程中,对种子值最高的嵌入物进行采样,并将该位置作为实例中心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 eiSkexp(2σ^k2eiCk2)>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=Sk1σiSkσ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=Sk1σiSkσiσk2

网络

总结一下,整体的框架如上图所示,其实是一个很简单的语义分割 Encoder-Decoder 结构。输入为一张 3×H×W3\times H\times W3×H×W图像,输出包含三个部分的,a)σa)\ \sigmaa)σ图(1×H×W1\times H\times W1×H×Wb)b)b) 像素偏移向量(2×H×W2\times H\times W2×H×Wc)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【论文解读】相关推荐

  1. Brain tumor segmentation using deep learning +HybridResUnet脑胶质瘤分割BraTs +论文解读

    Brain tumor segmentation using deep learning 下载地址 摘要 Brain tumor is one of the deadliest forms of ca ...

  2. 【论文阅读/翻译笔记】Deep Snake for Real-Time Instance Segmentation

    原论文标题:Deep Snake for Real-Time Instance Segmentation 原论文链接:https://arxiv.org/abs/2001.01629 翻译:张欢荣 用 ...

  3. Deep Snake for Real-Time Instance Segmentation:基于Deep Snake的实例实时分割

    本文针对自己所看的 Deep Snake 做一个总结和存档,也方便其他同学学习 -- 阿波,2020.4.23 论文原文:Deep Snake for Real-Time Instance Segme ...

  4. Affinity Derivation and Graph Merge for Instance Segmentation阅读笔记

    论文链接:https://arxiv.org/abs/1811.10870 用于实例分割的亲和派生和图合并方法 一.简介 文章提出了一种基于像素亲和信息的实例分割机制,使用了两个相似的网络结构,一个网 ...

  5. CVPR 2020——OccuSeg: Occupancy-aware 3D Instance Segmentation

    OccuSeg: Occupancy-aware 3D Instance Segmentation Abstract (一)Introduction (二)Related Work (三)Method ...

  6. OccuSeg: Occupancy-aware 3D Instance Segmentation

    图 1. 给定输入的彩色点云,对每个体素的占用大小进行回归,从而预测其所属实例占用的体素数量.自适应聚类方案同时考虑占用信息和嵌入距离,进一步应用于3D实例分割. Abstract 如今,3D实例分割 ...

  7. (NeurIPS 2019) Learning Object Bounding Boxes for 3D Instance Segmentation on Point Clouds

    Abstract 我们提出了一种新颖的.概念上简单的通用框架,用于在3D点云上进行实例分割.我们的方法称为3D-BoNet,遵循每点多层感知器(MLP)的简单设计理念.该框架直接回归点云中所有实例的3 ...

  8. 零样本分割系列论文(2)Open-Vocabulary Instance Segmentation via Robust Cross-Modal Pseudo-Labeling

    我最近刚刚入门zero-shot segmentation,准备以此作为我的博士研究方向,这是我入门这个方向读的第二篇论文,这篇论文我读了5遍以上,文章篇幅有限,所以很多细节我在读论文的时候发现不了, ...

  9. 【文献翻译CVPR2022】SoftGroup for 3D Instance Segmentation on Point Clouds

    点云三维实例分割的软分组 目录 点云三维实例分割的软分组 摘要 1 简介 2 相关工作 3 方法 3.1 逐点预测网络 3.2 软分组 3.3 自上而下的精细化 3.4 多任务学习 4 实验 4.1 ...

  10. Cell R-CNN V3: A Novel Panoptic Paradigm for Instance Segmentation in Biomedical Images

    CVPR 2020 2.15 摘要 实例分割在医学图像分析任务中占有重要地位,但是由于存在对象外观的可变性.大量重叠对象及对象边界模糊等问题,此任务仍然具有挑战性. 深度学习:proposal-fre ...

最新文章

  1. const在指针中的用法
  2. Android -- 自定义StepView实现个人信息验证进度条
  3. mybatis获取oracle xmltype_Mybatis【入门】
  4. java treeset比较,java中TreeSet的两种排序比较的方式
  5. leetcode--Rotate List
  6. SpringBoot 实现接口参数加密解密功能
  7. Linux -- sudoers (简单:转)
  8. yolo-v5连接手机摄像头实时检测的步骤
  9. 联想Z5 Pro划时代旗舰发布 屏占比95.06%售价1998元起
  10. mybatis 关于出现Parameter array not found. Available parameters are [collection, list]问题的解决方案
  11. 【Shader进阶】Shader的Lod
  12. 【笔记】操作系统(六)——进程同步
  13. org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: Exception writing document id xxxx
  14. 【微信小程序】获取用户信息
  15. 17.sql server数据库使用规则、二八原则、数据库查询集群--数据库读写分离多种实现、数据库配置读写分离(by-朝夕)
  16. 【20210727】图说全球网站数量及服务器市场份额
  17. 电子电路学习笔记(5)——三极管
  18. 将SVG图像插入到Word中 - Tools
  19. Fabrice Bellard其人
  20. 函授计算机科学与技术就业方向,成人高等函授教 计算机科学与技术专业.doc

热门文章

  1. 灵感来了挡也挡不住,基于Redis解决业务场景中延迟队列
  2. #7220. 「微课 3.6.2 例 1」亚瑟王
  3. python绘制饼图explode_python使用Matplotlib绘制饼图
  4. B Spline(B样条曲线)
  5. 数模转换DAC-TLC5615的说明
  6. 阿里云免费服务器,学生可以申请免费6个月!
  7. 技术答疑 什么是音高、音色、音调?
  8. win7下 文件名太长无法删除,无法更名问题
  9. 信息学奥赛一本通:1041:奇偶数判断
  10. xcode 常见错误