论文阅读: Cascade R-CNN_cascade rcnn最后识别的结果是什么样子的-程序员宅基地

技术标签: 论文算法  

Introduction

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

传统的Faster R-CNN结构如下:
这里写图片描述

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

对IoU阈值设置的探索

由于早前VOC只以 mAP50 m A P 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阈值化”了。在原先的 mAP50 m A P 50 基础上,又增加了 mAP75 m A P 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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JNingWei/article/details/80622837

智能推荐

XMPP部分经验_xmpproommessagecoredatastorageobject-程序员宅基地

文章浏览阅读884次。1、首先是调用viewdidload方法视图加载完成里面的的方法2、先刷新然后从数据库里面获取所有的聊天记录(initBubbleDatas),这个方法写在刷新的方法里面,3、通过上面的方法将消息结构转换成聊天结构(structureBubbleDatasWithMessages),这个方法处理的对象是一个XML流,就是通过这个方法将里面的元素分类整理出来,比如消息类型(MJLMessag_xmpproommessagecoredatastorageobject

[ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction problem] [JZOJ100148] 胖头鱼与方程【数学】【牛顿恒等式】_甜甜的花环胖头鱼c++-程序员宅基地

文章浏览阅读606次。Description以下为魔改版题面n, m ≥ 1, n ≤ 6, n+m ≤ 10, |ai| ≤ 120保证|bi| < 10^12Solution首先,此题的关键是一个叫牛顿恒等式的东西。考虑多项式F(x)=anxn+an−1xn−1+⋯+a1x+a0F(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0F(x)=an​xn+an−1​x..._甜甜的花环胖头鱼c++

[转]软件安装管家软件安装目录-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏13次。软件导航电脑办公机械设计地理信息编程类数据统计室内/外设计影视动画网页设计电子绘图理科工具 平面设计建筑设计屏幕录像数据库虚拟机软件目录【电脑办公】电脑系统(U盘安装)PE系统WIN7..._软件安装管家 博客

什么是迁移学习?迁移学习的实现方法与工具分析_模型迁移和样本迁移区别-程序员宅基地

文章浏览阅读1.4w次,点赞12次,收藏75次。 深度学习主要强调的是特征,强化学习主要强调的是反馈,而迁移学习主要强调的是适应。之前介绍过人工智能之机器学习算法有前5大类内容,具体请参见相关文章。今天我们重点探讨一下第6类--迁移学习(Transfer Learning)。^_^传统的机器学习是种瓜得瓜,种豆得豆,而迁移学习可以举一反三,投桃报李。人工智能竞争,从算法模型的研发竞争,转向数据和数据质量的竞争,这些成功的模型和算法主..._模型迁移和样本迁移区别

和校验算法-程序员宅基地

文章浏览阅读8.7k次。public class Test { public static void main(String[] args) { //str为参与校验的字符串 //检验和的概念一般体现在8bit长度的字符数组 //下面使用的字符串全为ASCII码 Stri_和校验

[基于harbor部署私有仓库] 5 k8s使用harbor私有镜像仓库_安装kubsphere用什么镜像源-程序员宅基地

文章浏览阅读762次。上一篇,已经讲解了如何给harbor镜像仓库推送镜像。这一篇分享下,在k8s里头_安装kubsphere用什么镜像源

随便推点

华为交换机重置Console口密码_华为交换机默认密码 console密码-程序员宅基地

文章浏览阅读2.6w次,点赞7次,收藏111次。华为网络设备缺省用户名为admin,密码为[email protected]或者Huawei@123bootrom默认密码一般是[email protected]或者是[email protected]测试环境:Huawei S53201.重启交换机,出现了ctrl+B后,进入启动模式。2.选择7,进入清除console密码3.选择“1.Boot with default m..._华为交换机默认密码 console密码

三种遍历:for,for-Each,Iterator_for 循环高斯遍历-程序员宅基地

文章浏览阅读400次。for-Each循环: 增强的for循环,写起来比较简洁,其实跟普通的for循环性能上没啥区别所以到现在遍历的方式有三种: for :当需要数组的下标信息时用它 for-Each : Iterator // 对于一位数组的遍历 int[] array={1,2,3,4,5}; // for(对象的类型type element :array)_for 循环高斯遍历

ImportError: cannot import name ‘scale_coords‘ from ‘yolov5.utils.general‘YOLOV5训练出错_cannot import name 'scale_coords' from 'yolov5.uti-程序员宅基地

文章浏览阅读601次,点赞11次,收藏8次。替换成如下,并且把相应位置的scale_coords换成scale_boxes。由于V5的版本问题会出现以上错误,解决办法如下。或者你可以重新写一个scale_coords。同样由于版本问题,出错。_cannot import name 'scale_coords' from 'yolov5.utils.general

CEdit控件 详细介绍_em_limittext-程序员宅基地

文章浏览阅读2.3k次。CEdit类提供了Windows 编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows 编辑控件并将其与CEdit对象连接。构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。CEdit从CW_em_limittext

idea中使用thymeleaf标签时报错_idea thymeleaf th:poster标签报错-程序员宅基地

文章浏览阅读1.1k次。选择File->Settings->Editor->Inspections--thymeleaf将Expression variables validation改为warning_idea thymeleaf th:poster标签报错

在linux系统下使用madplay制作音乐播放器_apt-get install amediaplay-程序员宅基地

文章浏览阅读5.4k次,点赞5次,收藏45次。目的制作一个可以在Linux环境下运行的MP3播放器。要求实现的MP3主要功能包括:播放、暂停、继续、停止、循环播放、上一曲、下一曲、退出、歌曲显示等功能。本设计是基于madplay库实现的,程序运行时会显示一个字符界面,在该字符界面下输入相应的提示字符即可实现音乐的播放、暂停、继续、停止、上一曲、下一曲、歌词的显示等功能,也可以加入额外的一些功能。编写一个MakeFile文件,make命令来..._apt-get install amediaplay

推荐文章

热门文章

相关标签