大家好,这是我今天要讲的论文,它是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. OpenMMLab AI实战营 第一课笔记

    OpenMMLab AI实战营 第一课笔记 OpenMMLab AI实战营第一节课由子豪兄讲解,课程主要内容主要围绕计算机视觉和OpenMMLab开源算法体系以及机器学习和神经网络简介进行展开.这里要 ...

  2. WxPython跨平台开发框架之模块字段权限的管理

    在我的很多Winform开发项目中,统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(工具栏.按钮.菜单权限),另外还可以进行字段级别的字段权限控制,字段权限是我们在一些对权限要求比较严 ...

  3. Docker npm install:npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY 。。reason: unable to get local issuer certificate 解决办法

    这个是需要证书导致无法连接,临时解决办法是设置 npm set strict-ssl=false 在 Dockerfile文件里的  RUN npm install 之前添加 RUN npm set ...

  4. http 协议请求响应模型

    http 协议请求响应模型(一次请求生命周期或简单的软件分层) 场景: 登录 1.客户端发起请求到api接口层 1.1用户在客户端填写用户名和密码,点击登录,发送请求. 2.api接收到客户端发起的用 ...

  5. Docker基础命令(安装和创建管理容器)

     docker ps -a 查看容器 docker inspect c008 使用 inspect 命令查看镜像详细信息,包括制作者.适应架构.各层的数字摘要等.

  6. 两种方式让你用Python轻松在RDKX5上部署推理

    作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 宿主机环境:WSL2-Ubuntu22.04+Cuda12.6.D-Robotics-OE 1.2.8.Ubun ...

  7. ADALM-Pluto修改芯片类型为AD9364模式

    ADALM-Pluto 使用芯片AD9363(325 MHz - 3.8 GHz),但可切换至 AD9364(70 MHz - 6 GHz)模式,此篇随笔将采用串口调试的方式将 Pluto 设置为 A ...

  8. java中线程的创建方式-休眠-生命周期-工作方式

    进程 进程的定义:进程是操作系统分配资源的基本单位.每个进程都有自己独立的内存空间和系统资源. 进程的独立性:进程之间是相互独立的,一个进程的崩溃不会影响到其他进程. java中的体现:在Java中, ...

  9. 1.6~THUWC 的总结

    THUWC 虽然拿到了一等奖,但是其实不如预期的发挥. Day1 获得 260~300 分.快速地想出了 T1T2 然后在调试上花费了很多的时间,T3 没有想出来,T4 想出了 \(O(n\log^3 ...

  10. mac安装spark

    一.基础信息 spark版本:spark-3.1.3-bin-hadoop3.2 hadoop版本:hadoop-3.2.1 scala版本:scala-2.11.12  建议3.12版本 下载地址: ...