【论文精读】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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序云开发教程——墨刀原型工具入门(Axure导入)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

计算机网络实验一 网线制作

实验目的与要求: 实验目的 了解以太网网线(双绞线)和制作方法 实验内容 了解网线和水晶头 学习网线制作方法 实验环境和要求 网线 水晶头 压线钳 剥线钳 网线测试器 方法、步骤: 步骤一 准备工具和材料 步骤二 剥掉双绞线的外…

【排序】详解归并排序

一、思想 归并排序的核心思想是分治法,即将大问题分解成小问题来解决,然后再将解决后的小问题的结果合并以解决原来的大问题。具体包括以下几个步骤: 分解(Divide):将原始数组不断地二分成更小的子数组&a…

使用Redis入门Golang

Golang,也被称为Go,近年来由于其简单性、效率和并发支持而获得了显著的关注。另一方面,Redis是一个强大的内存数据存储,擅长于缓存、会话存储和实时分析。将这两种技术结合起来,可以为各种用例提供可扩展和高效的解决方…

通过Apple Configurator 2导出iOS ipa包

通过Apple Configurator 2导出iOS ipa包 安装Apple Configurator 2 从Mac AppStore安装Apple Configurator 2 下载ipa 准备工作: 1、 电脑已经安装了Apple Configurator 2 2、 手机已经安装了目标软件 3、 Apple 账号已经下载过目标软件 打开后连接设备&#xf…

人脸高清算法GFPGAN之TensorRT推理

1. 综述 最近由于做数字人项目,采用的是wav2lip GFPGAN进行人脸面部高清,但GFPGAN模型本身比较大,所以想着使用TensorRT来代替原始的pth推理看看能否提升运行速度,于是便开始了这趟windows10之下进行GFPGAN的trt推理的折腾之旅。…

漫画手绘视频教程分享

下载地址: 漫画手绘教程: https://url83.ctfile.com/d/45573183-60305653-039aed?p7526 (访问密码: 7526)

网络编程的学习

思维导图 多路复用代码练习 select完成TCP并发服务器 #include<myhead.h> #define SER_IP "192.168.125.73" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv[]) {//1、创建用于监听的套接字int sfd -1;s…

DolphinScheduler——介绍及架构设计

目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议&#xff08;AHPCAI 2024&#xff09; 2024 International Conference on Algorithms, High Performance Computing and Artificial Intelligence 2024算法、高性能计算与人工智能国际学术会议&#xff08;AH…

软考中级-软件设计师备考的一些信息

备考资源补充 去年分享了如何备考软考中级-软件设计师及分析题的解题技巧&#xff1a;软考中级–软件设计师毫无保留的备考分享 文章中包含备考思路、备考资源和**解题技巧&#xff0c;**需要的请从上面的链接自行获取。 但有很多小伙伴说&#xff0c;之前分享的备考刷的视频…

AWS 认证报名考试流程

AWS认证的考试包括&#xff0c;可以申请线上或者线下考试。 考试类型 线上&#xff1a; 优点&#xff1a;方便快捷无需通勤&#xff0c;随时约随时考&#xff0c;基本上每天都可以 缺点&#xff1a;对环境要求较高&#xff0c;屋子里只能有自己&#xff0c;而且不能有其他声音…

Python+更改镜像源下载库+PyCharm+汉化+第一个项目配置

文章目录 一、Python二、更改镜像源下载库三、PyCharm四、汉化五、第一个项目配置 2024年3月5日 操作环境&#xff1a; Win11-23H2 Python-3.12.2 PyCharm-2023.3.4 一、Python https://www.python.org/ 点击Download&#xff0c;查看对应的版本&#xff08; prerelease…

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

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

如何管理系统中的敏感数据?

如何管理系统中的敏感数据&#xff1f; 本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 如何在系统中管理敏感数据&#xff1f;下图列出了一系列指导原则。 什么是敏感数据&#xff1f; 个人身份信息 (PII)、健康信息、知识产权、财务…

算法分析与设计

1.1.1什么是算法 算法是求解问题的一系列步骤&#xff0c;用来将输入数据转换成输出结果&#xff0c;如果每一个算法对其每一个输入实列都能输出正确的结果并停止&#xff0c;则称它是正确的。一个正确的算法解决了给定的求解问题&#xff0c;不正确的算法对于某些输入来说根本…

[LeetCode][151]【学习日记】反转字符串中的单词

题目 151. 反转字符串中的单词 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串s…

鸿蒙全栈开发必学!码牛课堂《HarmonyOS NEXT星河版零基础入门到实战教程》,学到就是赚到!

众所周知&#xff0c;码牛发布的免费教程不仅质量高&#xff0c;而且更新快&#xff0c;帮助无数大学生成功踏入IT行业&#xff0c;被同学们亲切的称为“IT启蒙导师”。 今年被称为鸿蒙元年&#xff0c;各行业急缺鸿蒙相关人才&#xff0c;从招聘情况来看&#xff0c;鸿蒙人才…

小米澎湃和华为原生鸿蒙,那个更有发展前景?

小米的澎湃系统暂时不了解&#xff0c;但华为的鸿蒙系统值得一说。 就目前鸿蒙而言&#xff1b;24年初鸿蒙星河版面向开发者开放申请。其底座全线自研&#xff0c;去掉了传统的 Linux 内核以及 AOSP 安卓开放源代码项目等代码&#xff0c;仅支持鸿蒙内核和鸿蒙系统的应用。星河…

Linux中安装docker出现的报错解决

第一个报错&#xff1a;Error: Failed to download metadata for repo docker-ce-stable: Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried 1.进入/etc/yum.repos.d路径下&#xff0c;找到docker-ce.repo文件&#xff0c;把对应 $r…