接触到Cascade Rcnn 是因为学习别人的一个比赛时看到的,处于好奇,就很想知道这个Cascade Rcnn是一个啥。

论文地址:https://arxiv.org/abs/1712.00726

原理可以用论文中的这个图片来说明:

Figure 3. The architectures of different frameworks. “I” is input image, “conv” backbone convolutions, “pool” region-wise feature extraction, “H” network head, “B” bounding box, and “C” classification. “B0” is proposals in all architecutes.

图中:I 是输入的图像,conv是卷积(就是backbone),pool 可以理解为ROI Pooling,H 是检测头,就是进行预测(进行预测类别和位置),B 预测的坐标,C 是预测的类别,B0 就是RPN网络推荐的rois。

一般网络把检测头的结果作为最终结果,但是Cascade Rcnn 他有点区别,他有三个检测头,这三个检测头是串联在一起的,也就是说,后一个检测头的输入是前一个检测头的输出,是依赖关系。这种检测头依赖就称为:级联。每个检测头的区别是里面的IOU阈值设定,第一个检测头的阈值最低,最后一个最高。第一个检测头回归的位置其实不是很准,但是通过第二个检测头的修正,即regression,就比第一个要准,再经过第三个,就更准了。(为啥三个,作者是通过实验发现三个最好)

而且每个检测头所使用的正负样本量都一样,理论上说(论文中说的),IOU越大,正样本越少,第三个检测头的正样本量是少于第一个的。但是通过级联,这种问题不会产生,比如第一个检测头正样本量是100,那么,经过第一个检测头也regression到100个正样本量,而且regression的位置要比没有regression的位置要好,就是更接近Ground Truth,从而与Ground Truth的IOU阈值也大,这样把这regression后的100正样本量送入到第二个检测头,后面就是同理操作。

以下是操作流程:

1.输入图片经过backbone得到 feature map,这里记为 org f
2.把得到的 feature map 送入到两个分支,一个是输入到RPN网络,经过RPN网络的预测得到图中的B0,这个B0其实就是rois,就是在 feature map 上的一些特征的坐标。还有一个输入到图中的 Pool 网络
3.对得到的 B0 在 feature map 中进行提取相应位置的特征,然后送入到 Pool 中,进行ROI Pooling,这样就得到固定宽高的 局部 feature map (这个feature map是backbone输出的feature map上的局部部分),注意这里是指宽高,不是指channel。
4.把局部 feature map输入到 H1 中,进行分类和回归就得到C1和B1,注意,训练的时候是需要用到IOU的,H1的IOU假设为0.5。
5.接着根据B1的坐标,在 org f 上进行提取局部特征,然后把提取的局部特征输入到H2,同理,H2中的IOU是比H1中的IOU要大的,假设为0.6。这样通过H2得到C2和B2。
6.根据B2的坐标,在 org f上进行提取局部特征,提取到的特征输入到H3,H3中的IOU是最大的,假设为0.7,这样通过H3得到 C3和B3。
7.把C3和B3作为最终的结果。

理论上说,cascade rcnn 的原理还是很简单的,但是我很好奇它是怎么实现的,这个过程花费了我好久的时间,网上的一些开源代码都是基于torch1.0开发的,后来终于找到一个写的蛮好的开源代码:

https://github.com/misads/easy_detection.git

这个中cascade是基于Faster rcnn来实现的,这里面又用到了 FPN,当时看到这里很懵,FPN 与 Faster rcnn 怎么关联,与 Cascade rcnn 又怎么关联,后来终于自己理解了,可以通过下面一幅图来进行说明,如下图:

FPN的每一层结果都会给RPN,这里会涉及到一个方法 MultiScaleRoIAlign,就是把FPN的这些多尺度的feature map进行ROIAlign,这个方法讲解可以参考MultiScaleRoIAlign_shenjianhua005的专栏-CSDN博客,然后RPN会把结果给Cacade。

Cascade Rcnn参考:

1.这个视频把按照ascade的论文进行了讲解,讲解的还蛮好的,主要讲解的是框架

目标检测算法:Cascade RCNN | 视频讲解_哔哩哔哩_bilibili

2.这个是对应上面视频博主自己写的笔记:

目标检测算法:Cascade RCNN | 视频讲解 - 知乎

3.这个是视频博主认为写的比较好的一个cascade rcnn 讲解:

Cascade R-CNN 详细解读 - 知乎

4.保姆级 faster rcnn 源码逐行解读 (五)roi_head part1 - 知乎

5.捋一捋pytorch官方FasterRCNN代码 - 知乎

Cascade Rcnn 的简单理解相关推荐

  1. 深度学习之 Cascade R-CNN

    Zhaowei Cai, Nuno Vasconcelos. <Cascade R-CNN: Delving into High Quality Object Detection>. CV ...

  2. Cascade RCNN

    论文:Cascade R-CNN Delving into High Quality Object Detection 论文链接:https://arxiv.org/abs/1712.00726 代码 ...

  3. Cascade R-CNN解析

    目录 Introduction 相关研究进展 目标检测 Bounding Box 回归 Detection Quality Cascade R-CNN Cascaded Bounding Box 回归 ...

  4. 详解多级目标检测体系结构Cascade RCNN

    文章目录 0. 前言 0.1 简易版理解 1. 简单回顾R-CNN结构 1.1 RPN网络[4] 1.1.1. RPN的意义 1.1.2. RPN的运作机制 1.1.3 3. RPN的整个流程回顾 1 ...

  5. 【目标识别】Cascade RCNN论文解读

    摘要 在目标检测中,需要一个交并比(IOU)阈值来定义物体正负标签.使用低IOU阈值(例如0.5)训练的目标检测器通常会产生噪声检测.然而,随着IOU阈值的增加,检测性能趋于下降.影响这一结果的主要因 ...

  6. Cascade R-CNN: High Quality Object Detection and Instance Segmentation(级联R-CNN:高质量目标检测与实例分割)

    Cascade R-CNN: High Quality Object Detection and Instance Segmentation Zhaowei Cai, and Nuno Vasconc ...

  7. Cascade RCNN论文翻译

    翻译仅为学习,如有侵权请联系我删除. 翻译不当之处请多多指教. 摘要 在目标检测中,需要一个交并比(IOU)阈值来定义物体正负标签.使用低IOU阈值(例如0.5)训练的目标检测器通常会产生噪声检测.然 ...

  8. Cascade RCNN学习笔记

    Cascade RCNN Cascade R-CNN: High Quality Object Detection and Instance Segmentation(级联R-CNN) CVPR201 ...

  9. Cascade R-CNN升级!目标检测制霸COCO,实例分割超越Mask R-CNN

    点击我爱计算机视觉标星,更快获取CVML新技术 前天,arxiv上新出一篇论文<Cascade R-CNN: High Quality Object Detection and Instance ...

最新文章

  1. 使用 Smartmontools 检测硬盘坏道
  2. AI驱动洞察 智能数据营销时代迎来拐点
  3. 问题分析探讨 -- 大约有700W数据的表,把当天的10W数据select导入新表,整个原来的表就锁死...
  4. Pandas练习题-提高你的数据分析技能
  5. id int primary key auto_increment是什么意思
  6. leetcode 387. 字符串中的第一个唯一字符(hash)
  7. ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...
  8. Matconvnet 学习笔记
  9. Sysfs_linux设备底层模型
  10. html页面使用var变量,使用var定义变量和不使用var的本质区别
  11. 第四周作业 简单地邮件发送实现
  12. 重识 SQLite,简约不简单
  13. 关于使用Navicat
  14. java高级工程师 考试_JAVA高级工程师笔试题及答案
  15. AirDisk HDD
  16. 整理了一些大数据资料与电子书,免费分享给大家!!
  17. 一位,四位数码管引脚图
  18. Guava Joiner
  19. JS 三级联动之 省市县。
  20. 狂神Springboot笔记

热门文章

  1. 解决修改PyCharm源后添加源信任的问题
  2. SaveFileDialog控件
  3. org.springframework.context.support.AbstractApplicationContext refresh错误
  4. mingw报未定义引用gdi32中函数,undefined reference to `__imp_CreateCompatibleDC‘错误解决办法
  5. android浏览器测试,主流Android浏览器功能对比测试
  6. Java 2022年面试题及答案 100道(持续更新)
  7. golang实现httphttps代理服务器
  8. HCIA—免费ARP(豁免ARP)(讲解 + 验证)
  9. 10.2.青蛙跳台问题
  10. Springboot整合Netty注意事项