热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【阅读笔记】《MaskScoringRCNN》(MaskRCNN)

本文记录了博主阅读论文《MaskScoringR-CNN》的笔记,代码。更新于2019.04.19。文章目录AbstractIntroductionRelatedWo

本文记录了博主阅读论文《Mask Scoring R-CNN》的笔记,代码。更新于2019.04.19。

文章目录

  • Abstract
  • Introduction
  • Related Work
    • Instance Segmentation
    • Detection Score Correction
  • Method
    • Motivation
    • Mask scoring in Mask R-CNN
  • Experiments
    • Implementation Details
    • Quantitative Results
    • Ablation Study
    • Discussion
  • Conclusion


Abstract

用于实例分割。

Introduction

主要贡献:

  • 文中提出的Mask Scoring R-CNN是首个解决scoring instance segmentation hypothesis问题的架构,提供了实例分割提升精度的新方向。考虑到instance mask的完整性,score of instance mask在高分类score而mask不好的情况下可以被惩罚。
  • MaskIoU head简单有效。在COCO数据库下,使用MS R-CNN可以提升AP约1.5%。

Related Work

Instance Segmentation

在这里插入图片描述
在这里插入图片描述

Detection Score Correction

在这里插入图片描述
在这里插入图片描述

Method

Motivation

在Mask R-CNN中,score of a detection(也就是实例分割)是由分类score中最大值决定的。但是由于背景混乱、遮挡等问题,很有可能分类score很高但是mask效果很差,如下图所示:
在这里插入图片描述
下图比较中使用的是Mask R-CNN with ResNet-18 FPN,COCO 2017 验证集。比较显示,classification score和MaskIoU在Mask R-CNN中没有多少相关性。
在这里插入图片描述

Mask scoring in Mask R-CNN

Mask Scoring R-CNN在概念上还是相对简单的:即带有MaskIoU Head的Mask R-CNN,其输入为实例特征和predicted mask,随后估计输入mask和真值mask之间的IoU,如下图所示。
在这里插入图片描述
Mask R-CNN: 先简单回顾一下Mask R-CNN。在Faster R-CNN之后,Mask R-CNN包括两个阶段。第一阶段是Region Proposal Network(RPN),其提供无类别的candidate object bounding boxes;第二阶段称为R-CNN阶段,其通过RoIAlign提取每个proposal的特征,并进行proposal分类、bounding box回归和mask估计。

Mask scoring: 定义smask\text s_{\text{mask}}smask为score of the predicted mask,其概念与predicted mask和对应的ground truth mask之间的像素级IoU等同,前文称作MaskIoU。因为一个mask只能属于一个类别,因此smask\text s_{\text{mask}}smask应该对于真值类别只包含正数,其他类别全是0。这就要求mask score应该在这两项任务中都表现良好:分类到正确类别,将proposal的MaskIoU回归到前景目标类别。

只用一个目标函数来训练两个任务是很难的,为了简化,论文中将mask score learning task分解成mask classification和IoU regression,用smask=scls⋅siou\text s_{\text {mask}}=\text s_{\text {cls}}\cdot\text s_{\text{iou}}smask=sclssiou代表所有目标类别。scls\text s_{\text {cls}}scls专注解决proposal属于哪个类别,siou\text s_{\text{iou}}siou解决MaskIoU的回归。

对于scls\text s_{\text {cls}}scls,在R-CNN阶段已经解决了分类问题,因此可以直接用对应的classification score。回归siou\text s_{\text{iou}}siou是这篇论文的目标。

MaskIoU head: MaskIoU head旨在回归predicted mask和其ground truth mask之间的IoU,其输入是RoIAlign层的级联特征和predicted mask。在级联的时候,用的是尺寸为2步长为2的max pooling使得predicted mask与RoIAlign特征尺寸相同。回归时,只处理真值类别(或测试时处理估计类别)而非全部类别。MaskIoU head包括4层卷积层和3层全连接层,其中卷积层遵从Mask head,尺寸为3,通道数为256;全连接层遵循RCNN head,前两层神经元个数为1024,最后一层为类别数。

训练: 训练MaskIoU head时,用RPN proposals作为训练样本。训练样本要求proposal box和对应的ground truth box之间有大于0.5的IoU(跟训练Mask R-CNN的Mask head时相同)。为了给每个样本生成regression target,首先获取目标类别的predicted mask,再用阈值0.5将其二值化。

随后,用binary mask和对应的ground truth计算MaskIoU作为MaskIoU target。回归MaskIoU用的是l2\mathscr{l}_2l2损失,损失权重为1。提出的MaskIoU head整合在Mask R-CNN中,整个网络端到端训练。

推断(inference): 在推理阶段,只应用MaskIoU head校正R-CNN生成的classification score。具体来讲,假设Mask R-CNN的R-CNN阶段输出N个bounding box,选中其中应用SoftNMS之后的前k(k=100)个scoring box。之后,这k个box被送入Mask head用于生成multi-class mask。这是标准的Mask R-CNN推理过程。论文中也遵循这个过程,并送入k个target mask用于估计MaskIoU。估计得到的MaskIoU乘上classification score,得到矫正后的mask score作为最终的mask confidence。

Experiments

所有实验都在COCO数据集上完成,有80个目标类别。用115k张训练,5k张验证,20k张测试。度量:
在这里插入图片描述

Implementation Details

ResNet-18 FPN&#xff08;用于对比&#xff09;&#xff1a;输入尺寸600x&#xff08;<1000&#xff09;
ResNEt-50/101&#xff1a;输入尺寸800x1333

所有算法训练18个epoch&#xff0c;14个epoch和17个epoch后学习率下降率为0.1。

Quantitative Results

在这里插入图片描述

Ablation Study

所有剥离实验用的都是ResNet-18 FPN结构。

The design choices of MaskIoU head input&#xff1a; 首先研究了设计的选择&#xff0c;即从mask head和RoI特征到predicted mask score map&#xff08;28x28xC&#xff09;的融合。下图是几种选择&#xff1a;
在这里插入图片描述
解释如下&#xff1a;

  1. Target mask concatenates RoI feature&#xff1a;选择目标类别的score map&#xff0c;进行max pool之后与RoI特征级联&#xff1b;
  2. Target mas multiplies RoI feature&#xff1a;选择目标类别的score map&#xff0c;进行max pool之后与RoI特征相乘&#xff1b;
  3. All masks concatenates RoI feature&#xff1a;所有C个类别的mask score map都进行max pool&#xff0c;之后与RoI特征级联&#xff1b;
  4. Target mask concatenates High-resolution RoI feature&#xff1a;选择目标类别的score map再与28x28的RoI特征级联。

下表为结果&#xff1a;
在这里插入图片描述
The choices of the training target&#xff1a;
在这里插入图片描述
下表为结果&#xff1a;
在这里插入图片描述

如何选取训练样本&#xff1a;
MaskIoU不超过0.5。给定阈值τ\tauτ&#xff0c;有如下结果&#xff1a;
在这里插入图片描述

Discussion

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Conclusion

在这里插入图片描述
更多内容&#xff0c;欢迎加入星球讨论。
在这里插入图片描述


推荐阅读
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 标题: ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
author-avatar
hushuoni_133
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有