0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法 | 超Mask RCNN速度4倍,仅在单个GPU训练的实时实例分割算法

WpOh_rgznai100 来源:YXQ 2019-06-11 10:34 次阅读

在论文《YOLACT:Real-time Instance Segmentation》中,作者提出了一种简洁的实时实例分割全卷积模型,仅使用单个 Titan Xp,以 33 fps 在MS COCO 上实现了 29.8 的 mAP,速度明显优于以往已有的算法。而且,这个结果是就在一个 GPU 上训练取得的!

引言

一开始,作者提出了一个疑问:创建实时实例分割算法需要什么?

在过去的几年中,在实例分割方向取得了很大进展,部分原因是借鉴了物体检测领域相关的技术。比如像 mask RCNN 和 FCIS 这样的实例分割方法,是直接建立在像Faster R-CNN 和 R-FCN 这样的物体检测方法之上。然而,这些方法主要关注图像性能,而较少出现 SSD,YOLO 这类关注实时性的实例分割算法。因此,本文的工作主要是来填补这一空白。SSD 这类方法是将 Two-Stage 简单移除成为 One-Stage 方法,然后通过其它方式来弥补性能的损失。而这类方法在实例分割领域扩充起来却并不容易,由于 Two-Stage 的方法高度依赖于特征定位来产生 mask,而这类方法不可逆。而 One-Stage 的方法,如 FCIS,由于后期需要大量的处理,因此也达不到实时。

YOLACT 介绍

基于此,作者在这项研究中提出一种放弃特征定位的方法——YOLACT(You Only Look At CoefficienTs)来解决实时性问题。

YOLACT 将实例分割分解为两个并行任务:(1)在整副图像上生成非局部原型 mask 的字典;(2)为每个实例预测一组线性组合系数。 从这两部分内容生成全图像实例分割的想法简单:对于每个实例,使用预测的系数线性组合原型,然后用预测边界框来 crop。作者通过这种方式来让网络学会如何定位实例mask本身,这些在视觉上,空间上和语义上相似的实例,在原型中却不同。

作者发现,由于这个过程不依赖于 repooling,因此此方法可以产生高质量和高动态稳定性的 masks。尽管本文使用了全卷积网络实现,但模板 mask 可以自己在具有平移变换情况下对实例进行定位。最后,作者还提出了 Fast NMS,这比标准 NMS 的快12ms,并且性能损失很小。

这种方法有是三个优点:第一,速度非常快。第二,由于没使用类似“repool”的方法,mask的质量非常高。第三,这个想法可以泛化。生成原型和mask系数的想法可以添加到现有的目标检测的算法里面。

算法

算法介绍

为了提高实例分割的速度,作者提出了一种快速、单阶段的实例分割模型——YOLACT。主要思想是将 Mask 分支添加到单阶段目标检测框架中。因此,研究人员将实例分割任务分解为两个更简单的并行任务,将其组合以形成最终的 Mask。YOLACT 的网络结构图如下图所示。

作者将实例分割的复杂任务分解为两个更简单的并行任务,这些任务可以组合以形成最终的 mask。 第一个分支使用 FCN 生成一组图像大小的“原型掩码”(prototype masks),它们不依赖于任何一个实例。第二个是给目标检测分支添加额外的 head ,用于预测每个 anchor 的“掩码系数”(mask coefficients)的向量,其中 anchor 是在编码原型空间中的实例表示。最后,对经过NMS后的每个实例,本文通过线性组合这两个分支来为该实例构造mask。

YOLACT 将问题分解为两个并行的部分,利用 fc 层(擅长产生语义向量)和 conv 层(擅长产生空间相干掩模)来分别产生“掩模系数”和“原型掩模” 。因为原型和掩模系数可以独立地计算,所以 backbone 检测器的计算开销主要来自合成(assembly)步骤,其可以实现为单个矩阵乘法。通过这种方式,论文中的方法可以在特征空间中保持空间一致性,同时仍然是 One-Stage 和快速的。

原型生成

原型生成分支是预测整个图像的一组K个原型 mask。采用 FCN 来实现protonet ,其最后一层有 k 个 channels(每个原型一个)并将其附加到 backbone 特征层。

掩码系数(mask coefficients)

在实验中,YOLACT 为每个Anchor预测(4+C+k)个值,额外 k 个值即为 mask系数。另外,为了能够通过线性组合得到 mask,很重要的一步是从最终的mask 中减去原型 mask。换言之,mask 系数必须有正有负。所以,在 mask系数预测时使用了 tanh 函数进行非线性激活,因为 tanh 函数的值域是(-1,1)。

合成Mask

为了生成实例掩模,通过基本的矩阵乘法配合 sigmoid 函数来处理两分支的输出,从而合成 mask。

其中,P 是 h×w×k 的原型 mask 集合;C 是 n×k 的系数集合,代表有 n 个通过 NMS 和阈值过滤的实例,每个实例对应有 k 个 mask 系数。

Loss 设计:Loss 由分类损失、边界框回归损失和 mask 损失三部分组成。其中分类损失和边界框回归损失同 SSD,mask 损失为预测 mask 和 ground truth mask 的逐像素二进制交叉熵。

Mask 裁剪:为了改善小目标的分割效果,在推理时会首先根据检测框进行裁剪,再阈值化。而在训练时,会使用 ground truth 框来进行裁剪,并通过除以对应 ground truth框面积来平衡 loss 尺度。

Emergent Behavior

在实例分割任务中,通常需要添加转移方差。在 YOLACT 中唯一添加转移方差的地方是使用预测框裁剪 feature map 时。但这只是为了改善对小目标的分割效果,作者发现对大中型目标,不裁剪效果就很好了。

Backbone 检测器

因为预测一组原型 mask 和 mask 系数是一个相对比较困难的任务,需要更丰富更高级的特征,所以在网络设计上,作者希望兼顾速度和特征丰富度。因此,YOLACT 的主干检测器设计遵循了 RetinaNet 的思想,同时更注重速度。 YOLACT 使用 ResNet-101 结合 FPN 作为默认主干网络,默认输入图像尺寸为550×550,如上图所示。使用平滑-L1 loss 训练 bounding box 参数,并且采用和 SSD 相同的 bounding box 参数编码方式。 使用 softmax 交叉熵训练分类部分,共(C+1)个类别。同时,使用 OHEM 方式选取训练样本,正负样本比例设为 1:3. 值得注意的是,没有像 RetinaNet 一样采用 focal loss。

快速 NMS(fast NMS)

a.对每一类的得分前 n 名的框互相计算 IOU,得到 C*n*n 的矩阵X(对角矩阵),对每个类别的框进行降序排列。

b.其次,通过检查是否有任何得分较高的框与其 IOU 大于某个阈值,从而找到要删除的框,通过将 X 的下三角和对角区域设置为 0 实现。这可以在一个批量上三角中实现,之后保留列方向上的最大值,来计算每个检测器的最大 IOU 矩阵 K。

c.最后,利用阈值 t(K

论文实验

作者在 MS COCO 的 test-dev 数据集上对 YOLACT 和目前最好的方法进行了性能对比。本文的关注点在于速度的提升,且所有实验都是在 Titan Xp 上进行的,故一些结果和原文中的结果可能略有不同。

实验来验证本文模型在不同大小输入图像情况下的性能。除了基本的 550×550 模型,还有输入为 400×400 和 700×700 的模型,相应地也调整了 anchor 的尺寸(sx=s550/550*x s)。降低图像大小会导致性能的大幅度下降,这说明越大的图像进行实例分割的性能越好,但提升图像尺寸带来性能提升的同时会降低运行速度。

当然作者还做了关于 Mask 质量与视频动态稳定性相关的对比实验,并详细分析了优劣缘由。详见论文。

总结

YOLACT 网络的优势:快速,高质量的 mask,优良的动态稳定性。

YOLACT 网络的劣势:性能略低于目前最好的实例分割方法,很多由检测引起的错误,分类错误和边界框的位移等。

此外,作者最后还提到了该方法的一些典型错误:

1)定位误差:当场景中一个点上出现多个目标时,网络可能无法在自己的模板中定位到每个对象,此时将会输出一些和前景 mask 相似的物体,而不是在这个集合中实例分割出一些目标。

2)特征泄露(Leakage):网络对预测的集成 mask 进行了裁剪,但并未对输出的结果进行去噪。这样一来,当b-box 准确的时候,没有什么影响,但是当 b-box 不准确的时候,噪声将会被带入实例 mask,造成一些“泄露”。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4402

    浏览量

    126562
  • 算法
    +关注

    关注

    23

    文章

    4447

    浏览量

    90718

原文标题:超Mask RCNN速度4倍,仅在单个GPU训练的实时实例分割算法 | 技术头条

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机视觉领域的十大核心技术算法

    图像分割算法是计算机视觉领域的基础算法之一,它的主要任务是将图像分割成不同的区域或对象。常见的图像分割
    发表于 02-25 09:38 226次阅读

    MATLAB程序算法实例

    什么是算法算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
    的头像 发表于 12-29 09:33 226次阅读
    MATLAB程序<b class='flag-5'>算法</b><b class='flag-5'>实例</b>

    PID算法详解及实例分析

    PID算法详解及实例分析#include using namespace std;struct _pid{   float SetSpeed; //定义设定值   float ActualSpeed
    发表于 11-09 16:33 0次下载

    中心点画圆和Bresenham画圆,哪种算法速度更快?

    中心点画圆和Bresenham画圆,哪种算法速度更快?
    发表于 10-28 08:04

    基于NeRF的实时激光雷达SLAM算法

    LONER是一个纯LiDAR算法,也没有使用IMU。雷达扫描首先降采样(将为5 Hz),然后用ICP跟踪,并从场景几何中分割出天空。对于建图线程,是使用当前关键帧和随机选择的过去关键帧来更新,并维护一个滑窗来优化。
    发表于 10-25 10:48 1209次阅读
    基于NeRF的<b class='flag-5'>实时</b>激光雷达SLAM<b class='flag-5'>算法</b>

    GPU在雷达信号处理算法中的优势

    雷达信号处理算法对计算机架构提出了很高的实时性要求。好在这些算法具有数据并行性,可以在大规模并行架构(如图形处理单元(GPU))上获得出色的性能。
    的头像 发表于 10-17 10:07 506次阅读
    <b class='flag-5'>GPU</b>在雷达信号处理<b class='flag-5'>算法</b>中的优势

    都2023年了,Faster-RCNN还能用吗?

    在多数深度学习开发者的印象中Faster-RCNNMask-RCNN作为早期的RCNN系列网络现在应该是日薄西山,再也没有什么值得留恋的地方,但是你却会发现Pytorch无论哪个版本的torchvision都一直在支持Fast
    的头像 发表于 10-11 16:44 373次阅读
    都2023年了,Faster-<b class='flag-5'>RCNN</b>还能用吗?

    python卷积神经网络cnn的训练算法

    python卷积神经网络cnn的训练算法  卷积神经网络(Convolutional Neural Network,CNN)一直是深度学习领域重要的应用之一,被广泛应用于图像、视频、语音等领域
    的头像 发表于 08-21 16:41 991次阅读

    图像分割算法原理及工作流程

    基于深度学习的图像分割算法属于图像处理领域最高层次的图像理解范畴。所谓图像分割就是把图像分割成具有相似的颜色或纹理特性的若干子区域,并使它们对应不同的物体或物体的不同部分的技术。这些子
    的头像 发表于 08-18 15:48 947次阅读
    图像<b class='flag-5'>分割</b><b class='flag-5'>算法</b>原理及工作流程

    遗传算法的基本原理 基于遗传算法的图像分割

      摘要:遗传算法是对生物进化论中自然选择和遗传学机理中生物进化过程的模拟来计算最优解的方法。遗传算法具有众多的优点,如鲁棒性、并行性、自适应性和快速收敛,可以应用在图像处理技术领域中图像分割技术
    发表于 07-18 16:04 1次下载

    类GPT模型训练提速26.5%,清华朱军等人用INT4算法加速神经网络训练

    使用 INT4 算法实现所有矩阵乘法的 Transformer 训练方法。 模型训练得快不快,这与激活值、权重、梯度等因素的要求紧密相关。 神经网络训练需要一定计算量,使用低精度
    的头像 发表于 07-02 20:35 433次阅读
    类GPT模型<b class='flag-5'>训练</b>提速26.5%,清华朱军等人用INT4<b class='flag-5'>算法</b>加速神经网络<b class='flag-5'>训练</b>

    中科院提出FastSAM快速分割一切模型!比Meta原版提速50倍!

    通过将分割⼀切任务重新划分为全实例分割和提⽰指导选择两个⼦任务,⽤带实例分割分⽀的常规 CNN 检测器以⾼出50倍的运⾏
    的头像 发表于 06-28 14:33 1186次阅读
    中科院提出FastSAM快速<b class='flag-5'>分割</b>一切模型!比Meta原版提速50倍!

    如何学习基于Tansformer的目标检测算法

    视觉感知算法的核心在于精准实时地感知周围环境,以便下游更好地进行决策规划,而 目标检测任务 就是视觉感知的 基础 。不仅在自动驾驶领域,在机器人导航、工业检测、视频监控等领域,目标检测都有着广泛应用
    的头像 发表于 06-25 10:37 388次阅读
    如何学习基于Tansformer的目标检测<b class='flag-5'>算法</b>

    AI算法说-图像分割

    语义分割是区分同类物体的分割任务,实例分割是区分不同实例分割任务,而全景
    的头像 发表于 05-17 14:44 858次阅读
    AI<b class='flag-5'>算法</b>说-图像<b class='flag-5'>分割</b>

    TensorRT 8.6 C++开发环境配置与YOLOv8实例分割推理演示

    对YOLOv8实例分割TensorRT 推理代码已经完成C++类封装,三行代码即可实现YOLOv8对象检测与实例分割模型推理,不需要改任何代码即可支持自定义数据
    的头像 发表于 04-25 10:49 3633次阅读
    TensorRT 8.6 C++开发环境配置与YOLOv8<b class='flag-5'>实例</b><b class='flag-5'>分割</b>推理演示