论文阅读: Cascade R-CNN

Introduction

Cascade R-CNN的本质是 “ Cascade roi-wise subnet ” 。

传统的Faster R-CNN结构如下:

在train阶段,其最终的输出结果是通过如下一个简单的IoU阈值判断来决定哪些proposal作为output:

对IoU阈值设置的探索

由于早前VOC只以 mAP50mAP50mAP_{50} 作为唯一的性能衡量标准,为了overfit该数据集,算法的IoU阈值在train阶段和inference阶段常被简单地设定为 0.5,而这会导致train阶段对bbox的质量要求过低。

inference阶段,如果IoU阈值设为0.5,最终输出可能如下的左图所示,带有不少错分为object的bbox;如果我们把IoU阈值调高到0.7,如下右图所示,就可以把一堆IoU介于0.5~0.7之间的bbox给过滤掉:

那我们直接在train阶段就把IoU阈值改为0.7,test阶段依然为0.5,不就好了吗?

不行。

原因:

  • 如下图,IoU=0.7训练出来的detector[红线],在IoU=0.5的输入上定位效果甚至不如IoU=0.5训练出来的detector[蓝线]
  • 其原因有二:
    • train阶段IoU设为0.7会导致positive bbox的数量骤降,导致最终训出的模型overfit。
    • inference阶段,RPN丢给roi-wise subnet的大多是low-quality proposal。单个regressor再强也只能稍微regress一点点location,那么最终的output还是得GG。

那我们train阶段为0.5,只在test阶段把IoU阈值改为0.7呢?

不行。

原因:

  • train阶段inference阶段IoU阈值 设置得不一样,反而会影响性能。

那就同时把train阶段和test阶段都改为0.7呢?

还是不行。

原因:

  • 自从更大更全的COCO数据集提出来后,评价标准变得“多IoU阈值化”了。在原先的mAP50mAP50mAP_{50}基础上,又增加了mAP75mAP75mAP_{75}等等一系列指标。也就是说,不管你怎么改,都会导致某些IoU阈值标准是你在train的阶段无法顾及到的。

对regressor数量的探索

作者发现,假设待输入regressor的bbox为Input,回归后的输出bbox为Output,则Output的IoU质量普遍优于Input:

等于证明了:

经过location regression的bbox明显更high-quality。

故而,多次叠加roi-wise subnet,就等于多regress几次bbox,自然可以获得更high-quality的output bbox,从而刷高COCO测评性能。

那么直接简单地在roi-wise subnet后面再叠加roi-wise subnet可以么?

不行。

原因:

  • 因为如果这么做的话,对bbox的回归公式就变成了如下所示:
  • 此时对应的网络结构就会不能很好地挖掘多级roi-wise subnet的作用:

Innovation

作者的Idea,是设计cascade的bbox cls/reg机制:

总共有三个roi-wise subnet相cascade (级联) ,每个roi-wise subnet采用不同的IoU阈值。依次为0.5、0.6、0.7。

对应的网络结构如下:

该设计有如下四大优势:

  • 实现起来简单;
  • 可以end-to-end训练;
  • 适用于任何two-stage的检测算法;
  • 普遍都能涨点2~4。

Result

经过试验,发现cascade roi-wise subnet可以逐步过滤非object的bbox,并提升object的bbox质量:

经过三个级联的roi-wise subnet,可以明显看出最后一个roi-wise subnet输入的待处理bbox(如下最右边的子图)质量明显高了很多:

经过实验,发现取三个roi-wise subnet级联的效果最好:

Thinking

  • 如文中引用文献的情况所示,Cascade R-CNN的灵感很大程度上来自作者的细心观察和face-detection惯用的cascade boostrapping (级联引导) 做法的启发。
  • Faster R-CNN将Detection从4-stage简化到了2-stage,而Cascade R-CNN又将2– stage发展回了4-stage。其实这是一种“螺旋式地上升”吧。
  • Cascade R-CNN的根本动机就是: 通过在每个stage调整bbox来获得越来越high-quality的bbox,从而将COCO的一系列metric一锅端。

Note

  • 如果第一个RoI-wise subnet的输入是300个bbox(有positive也有negative),那么第三个RoI-wise subnet输入的是依然是这300个bbox;
  • 所有proposal(除了那些完全不cover ground truth的)在每一轮regression中都可以提升location质量,更加逼近ground truth。所以最后这些proposal的质量明显越来越高了:

[1] Cascade R-CNN: Delving into High Quality Object Detection

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

独家 |《TensorFlow实战》作者黄文坚:四大经典CNN网络技术原理

AI科技评论按:2月28日下午3点,《TensorFlow实战》作者黄文坚做客【硬创公开课】,为我们讲解了关于四大经典CNN网络:AlexNet、VGGNet、...

5119
来自专栏大数据挖掘DT机器学习

文本挖掘:语义分析的一些方法

语义分析,本文指运用各种机器学习方法,挖掘与学习文本、图片等的深层次概念。 1 文本基本处理 在讲文本语义分析之前,我们先说下文本基本处理,因为它构成了语义分析...

6206
来自专栏大数据挖掘DT机器学习

深度学习大神都推荐入门必须读完这9篇论文

Introduction 卷积神经网络CNN,虽然它听起来就像是生物学、数学和计算机的奇怪混杂产物,但在近些年的机器视觉领域,它是最具影响力...

5245
来自专栏CDA数据分析师

入门 | 10个例子带你了解机器学习中的线性代数

它是机器学习的重要基础,从描述算法操作的符号到代码中算法的实现,都属于该学科的研究范围。

1001
来自专栏智能算法

亚像素边缘的直线及圆弧的基元分割

从20世纪70年代起就有不少专家提出了一些有效的亚像素边缘定位的方法,如插值法、灰度矩法和一些组合的算法等。本文在前辈的基础上描述一种图像亚像素边缘检测方法,...

3056
来自专栏专知

【深度学习RNN/LSTM中文讲义】循环神经网络详解,复旦邱锡鹏老师《神经网络与深度学习》报告分享03(附pdf下载)

【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

2.5K8
来自专栏人工智能LeadAI

《机器学习基石》课程学习总结(三)

前面两篇文章要点回顾: 第一篇:机器学习的主要任务是用算法A,利用数据集D从假设集H中挑出一个函数g,使得E_in(g)最小。 第二篇:可以证明,当假设集H...

4085
来自专栏AI科技评论

图片里的人在干嘛?让深度学习来告诉你 |谷歌CVPR2016论文详解

明确对象描述的生成与解读 摘要 本文提出了一个可以生成针对图片中特定目标或区域明确描述(指代表达)的方法,这个方法也能理解或解释这一指代表达,进而推断出正确的被...

3066
来自专栏机器学习算法工程师

面对各种数据怎么处理 : 特征工程之特征表达

地址:https://www.cnblogs.com/pinard/p/9032759.html

1323
来自专栏AI科技大本营的专栏

入门 | 零基础入门深度学习——线性单元和梯度下降

为了帮助编程爱好者,从零开始入门,AI100特别精选了韩炳涛所著《零基础入门深度学习》系列文章,以下Enjoy! 作者 | 韩炳涛 无论即将到来的是大数据时代还...

4278

扫码关注云+社区

领取腾讯云代金券