当前位置: 首页 > news >正文

实例分割算法BlendMask

实例分割算法BlendMask

论文地址:https://arxiv.org/abs/2001.00309

github代码:https://github.com/aim-uofa/AdelaiDet

我的个人空间:我的个人空间

密集实例分割

​ 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法:

Top-down方法

​ top-down方法主要表现为先检测后分割,先通过一些方法获得box区域,然后对区域内的像素进行mask提取,比如著名的Mask-RCNN就是top-down方法。

​ 这种模型一般有以下问题:

  1. 特征和mask之间的局部一致性会丢失
  2. 冗余的特征提取,不同的bbox会重新提取一次mask
  3. 由于使用了缩小的特征图卷积,位置信息会损失

Bottom-up方法

​ bottom-up方法将整个图进行逐像素的预测(per-pixel prediction),然后按照聚类等方法,对每个像素做embedding,最后group出不同的instance。虽然保留个更好的低层特征,但是效果一般略差于top-down方法。

​ 这种模型一般存在以下问题:

  1. 严重依赖逐像素预测的质量,容易导致非最优的分割
  2. 由于mask在低维度提取,对于复杂场景的分割能力有限
  3. 需要复杂的后处理方法

混合方法

​ BlendMask主要结合了top-down与botton-up两种思路,利用t-d方法生成实例级别的高维信息(如bbox),利用b-u方法生成per-pixel的预测进行融合。基于FCOS,融合的方法借鉴FCIS(裁剪)与YOLACT(权重加法)的思想,提出了blender模块,更好的将实例级别的全局信息与提供细节的底层特征融合。

总体思路

BlendMask整体架构

整体架构如上图所示,包含一个detector模块与BlendMask模块。detector模块直接采用的FCOS,BlendMask模块分为三部分:

  • Bottom Module:对底层特征进行处理,生成的score map称为Bases
  • Top Layer:串联在检测器的box head上,生成Base对应的top level attention
  • Blender:将Bases与attention融合

Bottom Module

​ 采用Deelpabv3+的decoder,包含两个输入,一个低层特征一个高层特征,对高层特征进行上采用后与低层特征融合输出,
DeepLabv3+结构

bottom输出的feature特征为:(N * K * H/s * W/s),N为channel,K为bases的数量,(H,W)为输入的size,s为scroe的步长。

Top Layer

​ 在检测的特征金字塔的每一层后都加了一层卷积,用来预测top-level attentions(A),输出的特征为:(N * (K*M*M)) * H_i * W_i),M*M为attention的分辨率,即对应的base的每个像素点的权重值,包含的粒度更细。

Blender

​ Blender的输入为bottom的输出B、top-level的输出attentions(A)和bbox§,该部分的融合如下:

  1. 使用RoiPooler来裁取每个bbox对应的区域,并resize成固定的RxR大小的特征图。训练时直接使用ground truth bbox作为propasals,而在推理时直接用FCOS的结果RoIPool

  2. attention的大小M是比R小的,因此需要插值,这里采用的双线性插值,从MxM变为RxR上采样/插值

  3. 接着插值完的attention进行softmax,产生一组score mapscore map

  4. 对每个r_d和对应的s_d进行逐像素的相加,最后将K个结果相加得到m_d在这里插入图片描述

​ 可视化的blender过程:
在这里插入图片描述

http://www.lryc.cn/news/62628.html

相关文章:

  • 多线程、智能指针以及工厂模式
  • 初探 VS Code + Webview
  • Codeforces Round 864 (Div. 2)(A~D)
  • 第3章-运行时数据区
  • delta.io 参数 spark.databricks.delta.replaceWhere.constraintCheck.enabled
  • Redis知识点
  • 经典数据结构之2-3树
  • Numpy从入门到精通——节省内存|通用函数
  • Docker-compose 启动 lnmp 开发环境
  • 《android源码阅读四》Android系统源码整编、单编并运行到虚拟机
  • 深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练
  • 【笔试】备战秋招,每日一题|20230415携程研发岗笔试
  • 【unity专题篇】—GUI(IMGUI)思维导图详解
  • 【C++ Metaprogramming】0. 在C++中实现类似C#的泛型类
  • TDA4VM/VH 芯片 NAVSS0
  • 基于springboot的前后端分离的案列(一)
  • Docker网络模式详解
  • PXE高效批量网络装机
  • YOLOv5+双目实现三维跟踪(python)
  • ESP8266使用SDK软硬件定时执行函数
  • ThreadPoolExecutor源码阅读流程图
  • 如何通过筛选高质量爬虫IP提升爬虫效率?
  • C#中定义数组--字符串及数组操作
  • 嵌入式就业怎么样?
  • 用户订阅付费如何拆解分析?看这篇就够了
  • 智能合约中如何调用其他智能合约
  • python的多任务处理
  • Vue收集表单数据学习笔记
  • Linux搭建GitLab私有仓库,并内网穿透实现公网访问
  • SpringBoot项目防重复提交注解开发