点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

目录

一、前言

二、方法

1、问题表述:

2、语义类别(Semantic Category)

3、实例掩码(Instance Mask)

4、构建实例分割

三、网络结构

1、Vanilla SOLO(对应的mask预测分支输出通道为S^2)

2、Decoupled SOLO

四、SOLO 训练

1、 Label Assignment

2、损失函数

五、推理

六、实验结果

参考

01 前言

与其他许多密集预测任务(语义分割)相比,任意数量的实例使得实例分割更具挑战性。为了预测每个实例的 Mask,主流方法要么遵循“Mask R-CNN”使用的“先检测后分割(detect-then-segment)”策略,要么先预测类别 masks并对每个像素点都赋予一个 embedding 向量,将不同实例的像素点拉开,相同实例的像素点拉近。然后使用聚合后处理方法,将实例区分开来。

SOLO引入“实例类别(instance categories)”的概念,根据实例的位置和大小为实例中的每个像素分配类别,从而将实例 mask 分割很好地转换为可分类的类别问题。现在,实例分割被分解为两个分类任务。此方法具有强大的性能,可达到Mask R-CNN同等的准确性,并且在准确性方面优于最近的singleshot实例分割算法。

02 方法

1、问题表述:

给定任意一张图像,实例分割系统需要判断是否存在语义对象的实例;如果存在,则系统返回相应实例的分割掩码。SOLO框架的核心思想是将实例分割重新定义为两个子问题:类别预测和实例掩码生成。具体来说,就是将输入图像划分成一个统一的网格,即S×S。如果一个对象的中心落在一个网格单元中,该网格单元就要负责:1)预测语义类别;2)分割该对象实例。

2、语义类别(Semantic Category)

对于每个网格,SOLO预测C个维度的输出,以表示语义类别的概率,其中C是类别的个数。这些概率取决于网格单元。如果将输入图像划分成S×S的网格,则输出空间将为S×S×C,如下图(上分支)所示。这样设计基于的一个假定是,S×S网格的每个网格单元必须属于一个单独的实例,因此只属于一个语义类别。在推理过程中,C维度的输出向量表示每个对象实例的类别概率。

3、实例掩码(Instance Mask)

在语义类别预测的同时,每个positive网格也会输出相应的实例掩码,给定一个输入图片I,将它划分为个网格,总则共最多有个预测掩码。在输出的3D特征图中,在通道维度上直接对这些掩码进行编码。因此输出的实例掩码的维度就是,第k个通道负责在第(i,j)个网格中分割实例,其中(i,j都是从0开始),因此,在语义类别和掩码之间就构建起了一一对应的关系(如上图Figure 2下分支所示)。

预测实例掩码的直接方法是采用全卷积神经网络,如FCN。然而,传统的卷积运算在空间上具有一定的不变性。空间不变性能提高鲁棒性,因此在图像分类等任务中需要空间不变性。但是这里相反,我们需要一个空间变化的模型,更精确地说,位置敏感的模型,因为我们的分割掩码依赖于网格单元,必须由不同的特征通道分隔开。

我们的解决方案非常简单:受"CoordConv" 算子启发,在网络的初始阶段,直接将标准化后的像素坐标馈送进网络。具体地说,创建了一个与输入具有相同空间大小的张量,该张量包含像素坐标信息,且规范化为[-1,1]。然后,该张量与输入特征concat之后传递到下一层。将输入的坐标信息给到卷积操作,就将空间位置特征添加到传统的FCN模型中。CoordConv也许并不是唯一的选择,比如,半卷积算子也可以,使用CoordConv是因为它简单且易于实现。如果原始特征张量的大小为H×W×D,则新张量的大小为H×W×(D+2),其中最后两个通道为x-y像素坐标。

补充CoordConv如下(https://zhuanlan.zhihu.com/p/39919038): 
卷积是等变的,也就是说当每个过滤器应用到输入上时,它不知道每个过滤器在哪。我们可以帮助卷积,让它知道过滤器的位置。这一过程需要在输入上添加两个通道实现,一个在i坐标,另一个在j坐标。我们将这个图层成为CoordConv,如下图所示: 

4、构建实例分割

在SOLO中,类别预测和对应的掩码与网格是关联的,即,因此,可以直接得到每个网格的最终实例分割结果,通过将所有网格的分割结果叠加汇总,并且采用非极大值抑制(NMS)方法得到图像最终的实例分割结果。而不再需要其他后处理操作。

02 网络结构

使用特征金字塔结构(FPN),每个层级上通道数为256,这些特征图作为每个预测head的输入。不同的层级上head的权重共享。网格数在不同层级的金字塔上可能不同。

1、Vanilla SOLO(对应的mask预测分支输出通道为)

在每个FPN特征层,附加两个同级子网络,作为预测head,一个用于实例类别预测(top),另一个用于实例掩码分割(bottom)。在掩码分支中,我们将x、y坐标和原始特征拼接起来以编码空间信息。head分支如下图所示: 

如上图,以256个通道为例。箭头表示卷积或插值。所有卷积大小都是3×3,“Align”表示自适应池化、插值或区域网格插值。在推断过程中,掩码分支输出将进一步上采样到原始图像大小。

2、Decoupled SOLO

可以看到,如果S=20,这样SOLO head的Mask预测分支就会输出400个通道的特征图,其实绝大多数场景中图片都不会有很多实例,因此,作者提出了更有效率的变种Decoupled SOLO,如下:

 
原始的输出张量被替换为两个输出张量,和 的element-wise相乘:

 
其中分别表示X的第j个通道图,和Y的第i个通道图。

这两种方式性能相近,Decoupled SOLO降低了输出的维度和所需的GPU内存。

03 SOLO训练

1、 Label Assignment

对于类别预测分支,需要给出SxS个网格的对象类别概率,如果网格(i;j)与某 ground truth 掩码的中心区域重叠大于某阈值,则被视为正样本,否则是负样本。给定ground truth 掩码的质心(cx,cy)、宽度w和高度h,中心区域由恒定比例因子控制。这里设置=0.2。每个ground truth掩码平均有3个正样本,每个正样本,都有一个二值的掩码。由于有个网格,我们为每个图像设置了个输出掩码,上下两个分支对应关系为k=i⋅S+j。

除了实例类别的标签外,还需要为每个正样本设置了一个二值分割掩码。由于个网格对于个输出掩码。对于每个正样本,标注目标相应的二元掩码。

2、损失函数

定义损失函数如下: 
 
其中,Lcate是针对类别分类的Focal Loss, Lmask是掩码预测的损失函数,Lmask具体如下: 
 
索引(顺序为从上到下、从左到右): 
 Npos为正样本数,p*,m*分别为类别真值和掩码真值。1是指示函数,如果,则为1,否则为0。

在实现中,比较了的不同实现:BCE(二元交叉熵损失),Focal Loss 和 Dice Loss。最终选择Dice Loss,因为它在训练中比较稳定且有效。损失函数公式中的λ设为3。Dice Loss 定义如下:

这里的D为 dice 系数,定义如下: 
 分别是预测掩码和真实掩码在(x,y)位置的像素值。

04 推理

SOLO的推理非常直接,给定一张输入图片,通过骨干网和FPN得到网格(i,j)位置的类别得分和相对于的掩码mk(其中,k=i·S+j)。首先使用0.1的置信阈值过滤掉低置信度的预测,然后选择得分最高的500个掩码并将其输入NMS操作,为了将预测的掩码转换为二元掩码,作者使用了阈值0.5,对预测掩码进行二值化。保留其中前100个实例掩码用于评估。

05 实验结果

COCO测试集中的实例分割掩码AP,SOLO的精度超越了Mask R-CNN,相较思路类似的PolarMask也有较大的优势,如下图所示: 

参考

  1. 《SOLO: Segmenting Objects by Locations》

  2. Uber提出CoordConv:解决普通CNN坐标变换问题

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

SOLO:一次性预测语义类别和实例掩码相关推荐

  1. 速度提升一倍,无需实例掩码预测即可实现全景分割

    点击我爱计算机视觉标星,更快获取CVML新技术 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载. 选自arXiv 作者:Daan de Geus等 机器之心编译 参 ...

  2. 详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割

    https://www.tinymind.cn/articles/120 [ 导读]目前,计算机视觉是深度学习领域最热门的研究领域之一.计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形.算 ...

  3. 一文详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割

    [ 导读]目前,计算机视觉是深度学习领域最热门的研究领域之一.计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形.算法.理论.系统.体系结构),数学(信息检索.机器学习),工程学(机器人.语 ...

  4. 语义分割和实例分割_一文读懂语义分割与实例分割

    以人工智能为导向的现代计算机视觉技术,在过去的十年中发生了巨大的变化.今天,它被广泛用于图像分类.人脸识别.物体检测.视频分析以及机器人及自动驾驶汽车中的图像处理等领域.图像分割技术是目前预测图像领域 ...

  5. 深度学习 --- CNN的变体在图像分类、图像检测、目标跟踪、语义分割和实例分割的简介(附论文链接)

    以上就是卷积神经网络的最基础的知识了,下面我们一起来看看CNN都是用在何处并且如何使用,以及使用原理,本人还没深入研究他们,等把基础知识总结完以后开始深入研究这几个方面,然后整理在写成博客,最近的安排 ...

  6. 干货丨计算机视觉必读:图像分类、定位、检测,语义分割和实例分割方法梳理(经典长文,值得收藏)

    文章来源:新智元 作者:张皓 [导读]本文作者来自南京大学计算机系机器学习与数据挖掘所(LAMDA),本文直观系统地梳理了深度学习在计算机视觉领域四大基本任务中的应用,包括图像分类.定位.检测.语义分 ...

  7. CondLaneNet | 使用动态卷积核预测每个车道线实例

    题目:CondLaneNet:a Top-to-down Lane Detection Framework Based on Conditional Convolution 论文:https://ar ...

  8. 计算机视觉六大技术:图像分类、目标检测、目标跟踪、语义分割、实例分割、影像重建..

    计算机视觉是使用计算机及相关设备对生物视觉的一种模拟.它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样. 计算机视觉既是工程领域,也是科学 ...

  9. 计算机视觉:图像分类、物体检测、图像语义分割、实例分割和全景分割

    计算机视觉 图像分类 Image Classification 物体检测 Object Detection/ Object Localization 语义分割 Semantic Segmentatio ...

最新文章

  1. **Git本地仓库图解
  2. QQ群管理员无法进行成员管理问题的解决
  3. Linux系统Logrotate服务介绍
  4. tcpdump抓包ftp协议_tcpdump抓包并保存成cap文件
  5. Harbor 使用 Helm 一键安装
  6. small - HTML元素
  7. 自有数据集上,如何用keras最简单训练YOLOv3目标检测
  8. 这样一群人 致踏上CCIE之路的兄弟们!
  9. meaven插件通过绑定生命周期_容器镜像服务联手 IDE 插件,实现一键部署、持续集成与交付...
  10. python chardet模块_使用Python chardet模块解决中文乱码问题
  11. 遗传算法--适应度尺度变换
  12. html js 图片左右切换代码,Js图片切换特效中的左右箭头功能实现代码
  13. 萧红二不二?人是在最日常的生活中流逝的……你窗边革命洪流过去的时候,可能你正在剥一颗鸡蛋
  14. 软考中级考试信息系统管理工程师怎么样??
  15. 网站关键词排行优化技巧
  16. 昨天面试题目--软件--SQL--后感
  17. Python实现的无法拒绝的情人节表白代码,python情人节表白代码
  18. 基于Python+MySQL的书店销售管理管理子系统设计
  19. html语言加图片,html代码——给图片加边框代码
  20. AIDL中的in、out、inout的区别

热门文章

  1. 你的神经网络不起作用的37个理由
  2. 30分钟看懂XGBoost的基本原理
  3. 一个可以卷起来的蓝牙键盘,简直是办公码字神器!
  4. 《极限挑战》罗志祥遭套路“破产”,我们却看到了更大的危机
  5. Mybatis-Plus 支持分库分表了?-官方神器发布!
  6. 为什么像王者荣耀这样的游戏 Server 不愿意使用微服务?
  7. 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?
  8. 真能一快遮百丑?为什么要弃坑 FastJson
  9. 这谁顶得住?mybatis十八连环问!
  10. MAT入门到精通(二)