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
    +关注

    关注

    28

    文章

    5099

    浏览量

    134468
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

    97147

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SM4算法实现分享(一)算法原理

    SM4分组加密算法采用的是非线性迭代结构,以字为单位进行加密、解密运算,每次迭代称为一轮变换,每轮变换包括S盒变换、非线性变换、线性变换、合成变换。加解密算法与密钥扩展都是采用32轮非线性迭代结构
    发表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(
    发表于 10-30 06:54

    国密系列算法简介及SM4算法原理介绍

    所示: 非对称加密算法:SM2算法可用于电子认证服务;SM9算法可用于各种互联网新兴应用。 对称加密算法:SM1算法未公布,以IP核的形式
    发表于 10-24 08:25

    加密算法的应用

    ,加密和解密速度相对较慢,适用于数据量较小的场景,所以常用来传输对称加密的密钥。常见的非对称加密算法包括RSA、ECC等。 4. 加密算法的应用场景 加密技术的应用场景非常广
    发表于 10-24 08:03

    模板驱动 无需训练数据 SmartDP解决小样本AI算法模型开发难题

    算法作为软实力,其水平直接影响着目标检测识别的能力。两年前,慧视光电推出了零基础的基于yolo系列算法架构的AI算法开发平台SpeedDP,此平台能够通过数据驱动模型训练,实现
    的头像 发表于 09-09 17:57 1167次阅读
    模板驱动  无需<b class='flag-5'>训练</b>数据  SmartDP解决小样本AI<b class='flag-5'>算法</b>模型开发难题

    PPEC电源DIY套件:图形化算法编程,解锁电力电子底层算法实践

    : 无需深入复杂的代码编写,通过图形化界面的模块拖拽、参数设置和连线操作来实现自定义控制算法,实现对开关电源的精准控制和优化。 ▌动态调试优化: 算法调整后立即生效,实时观测输出纹波、动态响应
    发表于 08-14 11:30

    信号发生器如何与波束赋形算法配合优化?

    相邻的连续波(CW)干扰,功率比目标信号高10-20dB,验证算法的频域滤波和空间隔离能力。 智能干扰:生成方向性干扰(如通过波束赋形将干扰能量集中到目标用户方向),测试算法的动态波束调整速度(如毫秒
    发表于 08-08 14:41

    RK3576 yolo11-seg训练部署教程

    1.yolov11-seg简介yolov11-seg是YOLO(YouOnlyLookOnce)系列的最新成员,专为实时实例分割任务设计。它在保持YOLO家族高效推理速度的同时,通过创
    的头像 发表于 07-25 15:21 1244次阅读
    RK3576 yolo11-seg<b class='flag-5'>训练</b>部署教程

    k210在线训练算法是yolo5吗?

    k210在线训练算法是yolo5吗
    发表于 06-16 08:25

    单片机项目实例:XPT2046触摸屏芯片驱动与校准算法

    单片机项目实例:XPT2046触摸屏芯片驱动与校准算法,推荐下载!
    发表于 06-09 22:24

    RK3576 yolov11-seg训练部署教程

    yolov11-seg 是YOLO(You Only Look Once)系列的最新成员,专为实时实例分割任务设计。它在保持YOLO家族高效推理速度的同时,通过创新的网络结构和
    的头像 发表于 04-16 09:43 1887次阅读
    RK3576 yolov11-seg<b class='flag-5'>训练</b>部署教程

    无法转换TF OD API掩码RPGA模型怎么办?

    无法转换重新训练的 TF OD API 掩码 RPGA 模型,该模型使用以下命令在 GPU 上工作: mo > --saved_model_dir
    发表于 03-06 06:44

    执行“mask_rcnn_demo.exe”时,无法找到带有名称的Blob:DetectionOutput是怎么回事?

    引用 将 ONNX* Mask R-CNN 模型转换为 OpenVINO™文档的中间表示。 已下载并转换 mask_rcnn_R_50_FPN_1x 模型到 IR 执行命令
    发表于 03-05 07:10

    华为云 Flexus X 实例部署安装 Jupyter Notebook,学习 AI,机器学习算法

    前言 由于本人最近在学习一些机器算法,AI 算法的知识,需要搭建一个学习环境,所以就在最近购买的华为云 Flexus X 实例上安装了学习环境,Jupyter Notebook。没想到效果格外
    的头像 发表于 01-02 13:43 866次阅读
    华为云 Flexus X <b class='flag-5'>实例</b>部署安装 Jupyter Notebook,学习 AI,机器学习<b class='flag-5'>算法</b>

    GPU是如何训练AI大模型的

    在AI模型的训练过程中,大量的计算工作集中在矩阵乘法、向量加法和激活函数等运算上。这些运算正是GPU所擅长的。接下来,AI部落小编带您了解GPU是如何训练AI大模型的。
    的头像 发表于 12-19 17:54 1327次阅读