【论文精读】Mask R-CNN

摘要

       基于Faster RCNN,做出如下改变:
image

  • 添加了用于预测每个感兴趣区域(RoI)上的分割掩码分支,与用于分类和边界框回归的分支并行。mask分支是一个应用于每个RoI的FCN,以像素到像素的方式预测分割掩码,只增加了很小的计算开销,实现了实时分割
  • Faster R-CNN不是为网络输入和输出之间的像素到像素对齐而设计的。在RoIPool为特征提取执行粗空间量化过程中,出现特征错位会四舍五入强迫RoI对齐图像特征,这会对后续分支产生计算误差。为解决RoIPool带来的错位,提出一种简单的、无量化的层RoIAlign,精确保留了特征的空间位置

框架

Faster R-CNN

       Faster R-CNN由两个阶段组成。第一阶段称为区域建议网络(RPN),提出候选目标边界框。 第二阶段为Fast R-CNN,使用RoIPool从每个候选框中提取特征,并执行分类和边界框回归。 两个阶段使用的特征可以共享,以更快地进行推理。
image

Mask R-CNN

       Mask R-CNN采用与Faster R-CNN相同的两阶段过程,第一阶段(RPN)相同。在第二阶段,与边界框分类和回归并行,Mask R-CNN为每个RoI输出二值掩码,具体为对每个RoI使用全卷积网络FCN预测 m × m m× m m×m掩码图。

       在训练期间,损失定义为 L = L c l s + L b o x + L m a s k L = L_{cls} + L_{box} + L_{mask} L=Lcls+Lbox+Lmask。其中分类损失 L c l s L_{cls} Lcls和边界框损失 L b o x L_{box} Lbox与Faster R-CNN定义相同。mask分支为每个RoI提供了 K m 2 Km^2 Km2维的输出,编码了分辨率为 m × m m × m m×m K K K个二值掩码图, K K K为分类类别数。对掩码图逐像素应用sigmoid,则 L m a s k L_{mask} Lmask定义为与ground-truth类 k k k相关联的RoI掩码图的平均二值交叉熵损失(其他掩码输出对损失没有贡献)。

RoI align

       Mask分支采用的像素到像素的方法要求RoI特征(图像特征+建议框)必须良好对齐,以精准地保持每个像素的明确空间对应关系。
image
       RoIPool(上图)用于从每个RoI中提取一个小的特征映射(例 2 × 2 2× 2 2×2)。首先将浮点RoI映射到输入特征,再将RoI四舍五入细分为具有整数长度的 2 × 2 2× 2 2×2个空间box,最后将每个box覆盖的特征值聚合得到特征映射(通常通过最大池化)。这种特征映射方法对大的特征区域是鲁棒的,但对预测像素精确的掩码有很大的负面影响。
image
       为解决上述问题,提出RoIAlign层,以消除 RoIPool的特征错位。如上图,首先将RoI细分为 2 × 2 2× 2 2×2个相同大小的空间box,对每个box使用双线性插值来计算每个RoI bin采样位置的输入特征的精确值,并聚合结果(使用最大值或平均值)。注意到,结果对精确的采样位置或采样多少点不敏感。

网络架构

       网络可分为:

  • 用于在整个图像上进行特征提取的卷积主干网络
  • 用于边界框识别(分类和回归)和掩码预测的网络头,分别应用于每个RoI
    image

       如上图,本文评估了深度为50或101层的ResNet和ResNeXt网络(左)及FPN网络(右)作为主干网络FCN作网络头的Mask RCNN。

实验

训练配置

       同Fast RCNN,如果一个RoI与ground-truth box的IoU为0.5,则认为它是正的,否则是负的。 L m a s k L_{mask} Lmask仅在正RoI上定义,mask目标是RoI对应的真实mask二值图。

       采用了以图像为中心的训练。图像的大小调整为800像素。每个GPU的mini batch有2个图像,每个图像采样N个建议区域,正负比为1:3。N对于C4骨干是64,对于FPN是512。在8个gpu上训练(mini batch为16),进行160k迭代,学习率为0.02,在120k迭代时降低了10。使用0.0001的权重衰减和0.9的动量。使用ResNeXt时,每个GPU下训练1张图像,初始学习率为0.01。

       RPN anchor采用5种尺度和3种长宽比。为了方便消融,RPN是单独训练的,除非指定,否则不与Mask R-CNN共享特征。RPN和Mask R-CNN具有相同的主干。

推理配置

       在测试时,使用C4骨干或FPN骨干得到建议框。在这些建议框上运行bbox预测分支,首先根据置信度进行非极大值抑制,然后将mask分支应用于得分最高的100个检测框。mask分支可以预测每个RoI的K个掩码,但只使用 k − t h k -th kth掩码,其中 k k k是classification分支预测的类别。然后将 m × m m×m m×m的浮点数掩码输出调整为RoI大小,并以0.5的阈值进行二值化得到mask图。

对比实验

image
       上图为Mask R-CNN在COCO测试集上的结果。这些结果基于ResNet-101,实现了35.7的mask AP。显示了mask、bbox、类别和置信度。
image
       上图在COCO数据集上,在使用同样的骨干网络下将Mask R-CNN与最先进的实例分割方法进行比较。该模型的所有实例分割都优于之前最先进的模型,如MNC、FCIS、FCIS++。
image
       上图可视化比较了Mask R-CNN和FCIS++,FCIS++在重叠实例上出现了伪影,Mask R-CNN没有这样的问题。
image
       上图将Mask R-CNN与最先进的COCO 目标检测算法进行比较。实验训练了完整的Mask R-CNN模型,在推理时只使用分类和框输出(忽略掩码输出)。观察到使用ResNet-101-FPN的Mask R-CNN优于之前所有最先进的模型的基本变体。使用ResNeXt-101-FPN,Mask R-CNN进一步提高了结果,比使用Inception-ResNet-v2-TDM模型高出3.0点AP。

       作为进一步的比较,训练了一个没有Mask分支的Mask R-CNN,在上图中用“Faster R-CNN,RoIAlign”表示。由于RoIAlign的存在,该模型比行二算法具有更好的性能。另一方面,比Mask RCNN低0.9分box AP。因此可知Mask R-CNN在box检测上的这种差距受益于多任务训练。

       最后,注意到Mask R-CNN在其掩码和box AP之间存在一个小差距37.1(mask)和39.8(box)之间的2.7点。这表明所提出方法在很大程度上缩小了目标检测和实例分割任务之间的差距。

消融实验

image
       上图为一系列消融实验结果。表a显示了各种骨干的Mask R-CNN。在更深层的网络(50 vs. 101)和先进的设计(FPN和ResNeXt)下,模型都有不同程度的改进。

       表b为多项式方法和独立掩码预测方法的比较。Mask R-CNN将mask和类预测解耦,因为box分支可以独立预测类标签,故mask分支可以为每个类生成一个掩码,从而使类之间没有竞争(通过每个像素 的sigmoid和二值损失)。将其与使用逐像素softmax和多项式loss(在FCN中常用)的预测方法进行比较,这种方案将掩码任务和类别预测任务耦合在一起,相比于解耦方案,这导致掩码5.5AP的损失。一旦实例被分类为一个整体(通过box分支),就无需关注类别,这使掩码模型更容易训练。

       表c本实验中,使用步长为16的ResNet-50-C4主干网络对比RoIAlign和RoIPool。观察到RoIAlign比RoIPool提高了AP约3个点。且观察到RoIAlign对max/average pool不敏感。 此外,还与RoIWarp进行了比较,RoIWarp同样会使得输入失去对齐,观察到RoIWarp的表现与RoIPool相当,但比RoIAlign差得多。验证了正确的对齐是关键。

       表d用步长为32的ResNet-50-C5骨干评估RoIAlign。观察到RoIAlign使掩膜AP提高了7.3点,掩膜AP75提高了10.5点。还注意到,在RoIAlign中,使用stride-32 C5特征(30.9 AP)比使用stride-16 C4特征(30.3 AP,表1c)更准确。RoIAlign在很大程度上解决了长期以来使用大步长特征进行检测和分割的挑战。

       表e中,使用ResNet-50-FPN骨干网络比较MLP和FCNs。使用FCNs可以在MLPs上获得2.1掩膜AP增益。

关键点检测

image
       上图可视化显示联合学习所有三个任务(box、mask、keypoint)可以使一个统一的系统同时有效地预测所有输出。
image
       上图实验评估了人体关键点AP,并在ResNet-50-FPN骨干上进行了实验。上图显示本文的结果(62.7 APkp)比使用多阶段处理管道的COCO 2016关键点检测冠军CMU-pose++高0.9分。
image
       上图显示将mask分支添加到仅支持box的版本(Faster RCNN)或仅支持keypoint的版本中,可以不断改进这些任务。然而,添加关键点分支略微减少了box/mask AP,这表明尽管关键点检测从多任务训练中受益,但它并没有反过来帮助其他任务。
image
       上图研究了RoIAlign对关键点检测的影响。尽管ResNet-50-FPN骨干具有很细的步长,但因为关键点检测对定位精度更敏感,所以RoIAlign仍然比RoIPool显示出显著的改进,并将APkp提高了4.4个点。这再次表明,对齐对于像素级定位(包括掩码和关键点)至关重要。

reference

Kaiming, H. , Georgia, G. , Piotr, D. , & Ross, G. . (2018). Mask R-CNN.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512932.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

List类

目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers list中还有一些操作,需要用到时大家可参阅list的文档说明。 1.2.6 list的迭代…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读!

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读 个人简介前言内容简介作者简介专家推荐读者对象购买链接直播预告参与方式 个人简介 🏘️🏘️个人主页:以山河作礼。 🎖️🎖️:…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的,只能使用命令行,有些时候需要用到桌面环境,而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境,它是指龙晰 Anolis 所搭载的中国自主桌面环境,用起来…

【SpringBoot教程 01】SpringBoot简介及工程搭建

前言:什么是SpringBoot? SpringBoot是一个开源的Java基础框架,它被设计来简化Spring应用的初始搭建以及开发过程。这个框架利用了“约定优于配置”的理念,提供了一系列大型项目中常用的默认配置,让开发者可以快速启动和…

向量数据库Chroma教程

引言 随着大模型的崛起,数据的海洋愈发浩渺无垠。受限于token的数量,无数的开发者们如同勇敢的航海家,开始在茫茫数据之海中探寻新的路径。他们选择了将浩如烟海的知识、新闻、文献、语料等,通过嵌入算法(embedding)的神秘力量,转化为向量数据,存储在神秘的Chroma向量…

1999-2022年30省平均受教育年限(含原始数据和具体计算过程+计算结果)

1999-2022年30省平均受教育年限(含原始数据和具体计算过程) 1、时间:1999-2022年 2、范围:30省(剔除西藏) 3、计算方式:平均受教育年限(未上学人数*0小学人数*6初中人数*9高中人数…

P5076 【深基16.例7】普通二叉树(简化版)题解

题目 您需要写一种数据结构,来维护一些数(都是绝对值以内的数)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数q不超过: 定义数x的排名为集合中小于x的数的个数1。查询数x的排名。注意x不一定…

GPT本地化研究(JAVA版本)

1.我觉得gpt3 600多G个人是不可能部署得成功的,回想我自己个人不可能每一方面知识都知道,我只是知道最多的是我自己擅长的,百事通需要靠大公司才能解决,我们只是要关注这个gpt是哪个领域的, 我想做的是工业—>自动化gpt(貌似这个方向日本很专业了*_*) 它山之石可以攻玉 2.gp…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个: FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图: 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下,它也是放…

118页Vue面试题总结,资深web前端开发

大厂面试真题整理 CSS: 1,盒模型 2,如何让一个盒子水平垂直居中? 3,css 优先级确定 4,解释下浮动和它的工作原理,清除浮动的方法? 5,CSS隐藏元素的几种方法 6&#xff0…

刷题笔记day27-回溯算法3

39. 组合总和 var path []int var tmp []int var result [][]int// 还是需要去重复,题目中要求的是至少一个数字备选的数量不同。 // 所以需要剪枝操作,右边的要比左边的> func combinationSum(candidates []int, target int) [][]int {// 组合问题pa…

49、WEB攻防——通用漏洞业务逻辑水平垂直越权访问控制脆弱验证

文章目录 前置知识点水平越权——YXCMS 前置知识点 逻辑越权原理: 水平越权:同级用户权限共享。用户信息获取时未对用户与ID比较判断直接查询等;垂直越权:低高级用户权限共享。数据库中用户类型编号接受篡改或高权限未作验证等。 …