前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读: Cascade R-CNN

论文阅读: Cascade R-CNN

作者头像
JNingWei
发布2018-09-27 11:32:09
9530
发布2018-09-27 11:32:09
举报
文章被收录于专栏:JNing的专栏JNing的专栏

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
    • 对IoU阈值设置的探索
      • 对regressor数量的探索
      • Innovation
      • Result
      • Thinking
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档