大家好,这是我今天要讲的论文,它是2021年发表在ICCV上的一篇文章,这篇文章的主要工作是探究了Mask分支不同的网络结构以及不同的训练方式对以Mask RCNN为例的网络的Mask分支泛化性的影响,同时这篇论文没有较多的数学公式,因此理解起来比较简单。

Mask RCNN

我们需要先回顾一下MASK RCNN的工作流程,因为这篇论文的工作与此息息相关。

下面我将从MASK RCNN的测试,训练两个阶段来说一下。

  • 测试

先看上面这个分支:

对于一张输入图片,我们先使用一个Backbone+FPN提取出这张图片的特征图,然后通过RPN去生成一些Proposals。RPN是一个神经网络,能够在特征图上提取出一些候选框。

然后再通过RolAlign。RolAlign将每个proposal对应的特征图采样成固定的大小,我们可以看后面的预测部分,类别预测,bonding box偏置预测(全连接),要求输入是固定的size,但proposal的尺寸都是不一样的,因此需要将他们变换成统一的大小。之后我们便可以通过这个特征图去预测出类别和bounding box偏置。

而对于Mask的预测,则需要Fast RCNN predictor分支预测出的bounding box和分类的传入,然后同样是在特征图上进行投影,通过RolAlign采样成固定的大小,然后预测出类别相关的MASK备注:此处也正是因为这一步不是并行的,所以Mask RCNN的实时性不是很好,后面有人提出过新的模型比如 Yolact,去实现一个并行的预测,但这不是今天要讨论的内容。

  • 训练

那么模型是怎么训练的呢?同样,RPN生成了很多的候选框,这些候选框和 ground truth bounding box会存在一个重叠,这个重叠程度的指标叫做Iou,我们假设有一个proposa与某一个ground truth bounding box重叠程度比较高。

那么我们就可以默认这个proposal对应的ground truth是与它重叠的bounding box及其对应的类别Mask。之后第一个分支的训练就比较好说了,预测出的bounding box 和类别与ground truth求一个loss。而对于Mask分支的训练,同理,对于每一个proposal,找到对应的Mask Ground truth,就是重叠部分对应的那些,然后据此模型获得训练。

训练跟测试的区别就是Mask Head传入的proposal来自哪里?测试是来自Fast R-CNN preditor,而训练则是来自RPN,也就是这个候选框生成网络。

Problem Definition

回顾了MASK RCNN的,我们看一下这篇论文试图解决一个什么问题:

假设我们的数据集中有两种数据,一种是和a,b一样的,具有ground truth category,bounding box,mask,,另一种是c,只有ground truth category,bounding box,没有 Mask。解释一下为什么会出现这种情况,是因为Mask的标注很昂贵,但是bounding box的标注相对便宜。我们将这两种数据送入一个Mask RCNN进行训练,能否使得网络求解出C类数据的Mask(泛化性)。我们可以浅看一下下面这张图,它展示了Mask RCNN的Mask-head结构对泛化性的影响。

Key idea

然后就是本文的核心了。作者提出了两种如何去解决Mask head泛化性问题的途径:

  • Train Mask head only with only ground truth box

    Croped GT box and proposals GT only

回忆起之前的Mask分支的训练方式,Mask head的训练数据来自大量的 noisy proposals and cropped GT bounding box,论文指出这种训练方式会损坏Mask head的泛化性。而只使用GT box的训练方式意思是:只使用GT box 在特征图上投影,然后通过ROlAlign采样成固定大小的 Feature map,然后预测出特征图,在结合GT box 对应的 GT Mask求loss进行训练。

我们可以看一下论文给出的实验数据,第一列是不同的方式训练出的Mask RCNN,第二列是不同的backbone,第三列的第二个子列是AB类上的表现,相差不大,第三列的第二个子列是c类数据上的表现,相差很大,GT only提升了8个百分点。

  • Mask head architecture become deeper

回到图1,作者修改了Mask branch部分的深度,来证明网络深度对模型结果的影响。这里值得注意的是,如果我们的数据集只有AB类数据,并且不追求在新的类别上的Mask的泛化性,则不需要较深的Mask head的网络结构。

Only Mask Head

作者训练了一个类别无关的Mask 提取器,证明Mask branch的深度对泛化性的影响。自然是较深的网络泛化性好。

Code

链接:https://google.github.io/deepmac/#code

原图
MASK

Summary

Refer

论文链接:https://openaccess.thecvf.com/content/ICCV2021/html/Birodkar_The_Surprising_Impact_of_Mask-Head_Architecture_on_Novel_Class_Segmentation_ICCV_2021_paper.html

欢迎留言讨论

The surprising impact of mask-head architecture on novel class segmentation精讲的更多相关文章

  1. 论文阅读笔记十八:ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation(CVPR2016)

    论文源址:https://arxiv.org/abs/1606.02147 tensorflow github: https://github.com/kwotsin/TensorFlow-ENet ...

  2. Paper | UNet++: A Nested U-Net Architecture for Medical Image Segmentation

    目录 1. 故事 2. UNet++ 3. 实验 3.1 设置 作者的解读,讲得非常好非常推荐:https://zhuanlan.zhihu.com/p/44958351 这篇文章提出的嵌套U-Net ...

  3. [Network Architecture]Mask R-CNN论文解析(转)

    前言 最近有一个idea需要去验证,比较忙,看完Mask R-CNN论文了,最近会去研究Mask R-CNN的代码,论文解析转载网上的两篇博客 技术挖掘者 remanented 文章1 论文题目:Ma ...

  4. Flask architecture

    论文The Flask Security Architecture: System Support for Diverse Security Policies 介绍了Flask architectur ...

  5. 『计算机视觉』Mask-RCNN_推断网络其六:Mask生成

    一.Mask生成概览 上一节的末尾,我们已经获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工 ...

  6. Instance Segmentation with Mask R-CNN and TensorFlow

    Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...

  7. RAC的QA

    RAC: Frequently Asked Questions [ID 220970.1]   修改时间 13-JAN-2011     类型 FAQ     状态 PUBLISHED   Appli ...

  8. 『计算机视觉』Mask-RCNN_从服装关键点检测看KeyPoints分支

    下图Github地址:Mask_RCNN       Mask_RCNN_KeyPoints『计算机视觉』Mask-RCNN_论文学习『计算机视觉』Mask-RCNN_项目文档翻译『计算机视觉』Mas ...

  9. Awesome Torch

    Awesome Torch This blog from: A curated list of awesome Torch tutorials, projects and communities. T ...

  10. 『计算机视觉』Mask-RCNN_推断网络其四:FPN和ROIAlign的耦合

    一.模块概述 上节的最后,我们进行了如下操作获取了有限的proposal, # [IMAGES_PER_GPU, num_rois, (y1, x1, y2, x2)] # IMAGES_PER_GP ...

随机推荐

  1. AI对开发过程的替代性

    在过去一年投入人工智能辅助开发之后,虽然大家说使用了人工智能之后工作效率显着提高,但我们日常使用的实际软件似乎并没有明显改善.所以问题出现在哪里? 使用场景 目前团队AI使用主要在以下方面: 代码补全 ...

  2. G1原理—1.G1回收器的分区机制

    大纲 1.G1垃圾回收器的分区(Region大小+G1分区+Region过大过小和计算) 2.Region大小的计算原理(先转字节然后确定2的n次幂再通过1左移n位) 3.新生代分区及自动扩展(新生代 ...

  3. Diary & Note - 两个惊喜

      我们有单位根反演: \[\sum_{k\mid n}[x^n]f(x)=\frac{1}{k}\sum_{i=0}^{k-1}f(\omega_k^i). \] 我们有 CRT: \[x\equi ...

  4. ThreadPoolExecutor详解及线程池优化

    前言ThreadPoolExecutor在concurrent包下,是我们最常用的类之一.无论是做大数据的,还是写业务开发,对其透彻的理解以及如何发挥更好的性能,成为了我们在更好的coding道路上必 ...

  5. 加速 AI 训推:Lepton AI 如何构建多租户、低延迟云存储平台

    Lepton AI 是一款面向开发者的 AI 平台,旨在提供易用.高效且可扩展的基础设施能力.该平台适用于各种训练.推理需求,GPU充足,在保证高性能的同时,能够灵活应对不断变化的工作负载.用户可以快 ...

  6. 网络通信协议:TCP(三次握手四次挥手)和UDP

    通信要素2:网络协议  网络通信协议计算机网络中实现通信必须有一些约定,即通信协议,对速率.传输代码.代码结构.传输控制步骤.出错控制等制定标准. 问题:网络协议太复杂计算机网络通信涉及内容很多, ...

  7. VulNyx - Ceres 靶机

    有80端口 访问看看 他这个挺奇葩的看了wp才知道 file.php的参数是file 他会自动给你加上php 也就是说file=secret.php读不到数据要file=secret才能读到数据 伪协 ...

  8. ARM单片机知识点

    1.STM32编译信息 代码占用FLASH 大小为:Code + RO-data, 7420字节(5054+2366),所用的RAM 大小为:RW-data + ZI-data, 8576(372+8 ...

  9. CPU的指令周期

    本文分享自天翼云开发者社区<CPU的指令周期>,作者:冯****怡 指令周期(Instruction Cycle) CPU中会有 存器.指令寄存器.控制器等多类单元.指令集,就是CPU中用 ...

  10. linux监控系统行为

    1.验证电脑是否存在,一般都有 which script /usr/bin/script 2.配置profile文件,在末尾添加如下内容: vim /etc/profile ============= ...