• 【实例分割】YOLACT++:Better Real-time Instance Segmentation论文详解


    目录

    🏆论文下载:paper

    🏆代码下载 :code

    🏆YOLACT论文解析:YOLACT

    🍉🍉1.YOLACT++与YOLACT区别

    🌷🌷2.摘要

    🍋🍋3.创新点

    3.1可变形卷积

    3.2快速的mask重新计算网络结构

    3.3优化预测头

    🍇🍇4.结果对比

    4.1YOLACT与YOLACT++识别效果对比

    4.2YOLACT与YOLACT++精度对比 

    ​编辑

    4.3YOLACT++识别效率对比​编辑

    🍓🍓5.YOLACT++ configs代码


    🏆论文下载:paper

    🏆代码下载 :code

    🏆YOLACT论文解析:YOLACT


    🍉🍉1.YOLACT++与YOLACT区别

    首先来看下YOLACT++区别于YOLACT的地方是什么?

    1. 在backbonde网络中加入可变形卷积(deformable convolutions);

    2. 使用更好的anchor尺度和比例对prediction head进行优化;

    3. 加入新的mask re-scoring支路。

            看下原版的YOLACT的网络结构:

    🌷🌷2.摘要

            我们为实时(> 30 fps)实例分割提供了一个简单的全卷积模型,该模型在单个Titan Xp上评估的MS COCO上取得了SOTA结果,这比以前的任何最新的方法都快得多。此外,我们仅在一个GPU上训练后即可获得此结果

            我们通过将实例分割分为两个并行的子任务来完成此任务:(1)生成一组原型(prototype) masks,以及(2)预测每个实例的mask 系数。然后,我们通过将原型与模板系数线性组合来生成实例 masks。我们发现,由于此过程不依赖于 repooling,因此此方法可产生非常高质量的masks。

            此外,我们分析了 prototype 的 emergent 行为,并显示了它们是完全卷积的。我们还提出了快速NMS,这是对标准NMS的12毫秒快速替代,仅会有点影响性能。最后,通过将可变形(deformable)卷积合并到骨干网络中,使用更好的 anchor 尺度和长宽比优化预测head,并添加新颖的快速 masks 重新评分分支,我们的YOLACT ++模型可以在MS COCO上以33.5 FPS的实现34.1 mAP

    🍋🍋3.创新点

    3.1可变形卷积

            通过给骨干网络加入可变形卷积,具体实现方式是在resnet的C3-C5过程中,将原始3*3卷积替换成3*3可变形卷积。结果导致mAP提高了1.8,速度慢了8ms。作者认为性能提升的原因有以下几点:

    • 通过和目标实例进行对准,使得网络可以处理不同尺度、旋转角度和比例的实例;

    • YOLACT本身没有再采样策略,因而一个更好、更灵活的采样策略更重要。

    同时作者发现,在引入可变形卷积时需要选择合适的插入位置才能取得性能的提升。

    PS:在 COCO 上,34.1 mAP,速度高达 33.5 FPS! 

    3.2快速的mask重新计算网络结构

            Mask 评分分支由6个具有ReLU非线性的卷积层和1个全局池化层组成。由于没有特征级联,也没有fc层,因此速度开销仅为〜1 ms。

            这种结构受到 Mask Scoring R-CNN 的启发,发现模型的分类置信度和预测掩模质量存在差异(即更高质量的掩模分割不一定具有更高的类别置信度)。 因此,为了更好地关联掩模质量的班级信心,掩模评分 R-CNN像Mask R-CNN 添加了一个新模块,用于学习回归预测掩模与其掩模与真实值的IoU。

            根据掩模 IoU 重新计算预测掩模具体来说,我们的快速掩模重新评分网络是每个卷积层具有 ReLU 非线性的 6 层 FCN,以及最终的全局池化层。 它以 YOLACT 的裁剪掩膜作为输入预测(阈值化之前)并输出每个对象类别的掩模 IoU。我们通过分类头预测的类别的预测掩码 IoU 与相应的分类置信度之间的乘积来重新评分每个掩码。

    3.3优化预测头

            YOLACT是基于anchor-base检测器的,因此选择正确的anchor超参数是很重要的,作者尝试了两种策略:

    1. 保持anchor尺度不变,增加比例数量:[1,1/2,2]到[1,1/2,2,1/3,3]
    2. 保持比例不变,将每个FPN等级的尺度数量增加3倍

            以上两种方法均可以增加anchor数量。

    🍇🍇4.结果对比

    4.1YOLACT与YOLACT++识别效果对比

    4.2YOLACT与YOLACT++精度对比 

    4.3YOLACT++识别效率对比

    🍓🍓5.YOLACT++ configs代码

    1. # ----------------------- YOLACT++ CONFIGS ----------------------- #
    2. yolact_plus_base_config = yolact_base_config.copy({
    3. 'name': 'yolact_plus_base',
    4. 'backbone': resnet101_dcn_inter3_backbone.copy({
    5. 'selected_layers': list(range(1, 4)),
    6. 'pred_aspect_ratios': [ [[1, 1/2, 2]] ]*5,
    7. 'pred_scales': [[i * 2 ** (j / 3.0) for j in range(3)] for i in [24, 48, 96, 192, 384]],
    8. 'use_pixel_scales': True,
    9. 'preapply_sqrt': False,
    10. 'use_square_anchors': False,
    11. }),
    12. 'use_maskiou': True,
    13. 'maskiou_net': [(8, 3, {'stride': 2}), (16, 3, {'stride': 2}), (32, 3, {'stride': 2}), (64, 3, {'stride': 2}), (128, 3, {'stride': 2}), (80, 1, {})],
    14. 'maskiou_alpha': 25,
    15. 'rescore_bbox': False,
    16. 'rescore_mask': True,
    17. 'remove_small_gt_mask': 5*5,
    18. })
    19. yolact_plus_resnet50_config = yolact_plus_base_config.copy({
    20. 'name': 'yolact_plus_resnet50',
    21. 'backbone': resnet50_dcnv2_backbone.copy({
    22. 'selected_layers': list(range(1, 4)),
    23. 'pred_aspect_ratios': [ [[1, 1/2, 2]] ]*5,
    24. 'pred_scales': [[i * 2 ** (j / 3.0) for j in range(3)] for i in [24, 48, 96, 192, 384]],
    25. 'use_pixel_scales': True,
    26. 'preapply_sqrt': False,
    27. 'use_square_anchors': False,
    28. }),
    29. })

    整理不易,欢迎一键三连!!!


    送你们一条美丽的--分割线--

    🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

  • 相关阅读:
    重点区域人员徘徊识别监测系统
    使用 SwiftUI 的 Eager Grids
    Spring学习笔记——3
    银行互联网类业务基于分布式存储的架构设计与实施运维分享
    Python文件夹遍历
    直播回顾 | 【原引擎】解密云原生安全:如何应对新型BOT攻击?
    转转品牌升级,不只换了个LOGO
    程序环境与预处理笔记
    【二叉树】数中的特殊结构->堆
    Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例
  • 原文地址:https://blog.csdn.net/qq_38308388/article/details/132907211