Faster R-CNN 从2015年底至今已经有接近两年了,但依旧还是Object Detection领域的主流框架之一,虽然推出了后续 R-FCN,Mask R-CNN 等改进框架,但基本结构变化不大。同时不乏有SSD,YOLO等骨骼清奇的新作,但精度上依然以Faster R-CNN为最好。对于一般的通用检测问题(例如行人检测,车辆检测,文字检测),只需在ImageNet pre-train model上进行若干次 fine-tune,就能得到非常好的效果。相比于刷pascal voc,Imagenet,coco 等benchmarks,大多数人感兴趣的可能是如何应用到自己的检测目标上。

PS: 一作任少卿大神人挺帅的,回答问题还很耐心。

Faster R-CNN 主要由三个部分组成:(1)基础特征提取网络(2)RPN (Region Proposal Network) (3)Fast-RCNN 。其中RPN和Fast-RCNN共享特征提取卷积层,思路上依旧延续提取proposal + 分类的思想。后人在此框架上,推出了一些更新,也主要是针对以上三点。

1. 更好的特征网络

(1)ResNet,PVANet

ResNet CVPR2016 oral

paper : https://arxiv.org/abs/1512.03385 code :https://github.com/KaimingHe/deep-residual-networks

ResNet 依然是现在最好的基础网络,ResNeXT可能性能上比他好一点,但不是很主流,通过将Faster-RCNN中的VGG16替换成ResNet可以提高performance,不仅是detection,在segmentation,video analysis,recognition等其他领域,使用更深的ResNet都可以得到稳定的提升。

PASCAL VOC  2007 上,通过将VGG-16替换成ResNet-101,mAP从73.2%提高到76.4%, PASACAL 2012 上从70.4%提高到73.8%

值得注意的是,ResNet版本的Faster-RCNN连接方法和Baseline 版本不太一致,具体见任少卿在PAMI 2015中提到 https://arxiv.org/abs/1504.06066。以ResNet-101为例,参考下图方式,其中res5c,atrous + fc4096 + fc4096 + fcn+1 的方式是和baseline版本一致的方式,而res4b22+res5a+res5b+rec5c+fcn+1 是最终采取的方式。这种连接方式使得ResNet-faster-rcnn成为全卷积结构,大大减少模型大小,同时在性能上有一定提升。

在速度方面,ResNet比VGG16更慢,同时需要训练的次数也更多,个人实验结果vgg16 baseline版本训练一轮耗时1.5s,ResNet版本一轮耗时2.0s,同时内存占用量也远远大于VGG16,大概四五倍,没有12G的GPU就不要想用了。

PVANet NIPS2016 workshop

paper:https://arxiv.org/abs/1608.08021  code:https://github.com/sanghoon/pva-faster-rcnn

PVANet是几个韩国人鼓捣出来的一个更深但快速的基础网络,在VOC2012上效果达到82.5%,接近Faster R-CNN  + ResNet-101 +++ 和 R-FCN的结果,但是速度上快非常多。实际验证结果,训练和测试速度都比baseline版本快一倍左右。不过,这个网络非常难训练,收敛困难,loss会比较大,选用的训练方法是plateau,在一些比较困难的任务上,大概得好几倍的迭代次数才能达到和VGG16性能相当程度。另外,82.5%这个性能也并非全部得益于PVANet,文章中把anchor数量增加到40多个,还做了一些小改动。个人认为,PVANet的速度广受认可,但性能顶多和VGG16相当,不如ResNet。

(2) Hierarchy Feature

代表作有HyperNet,同样的思想在SSD和FCN中也有用到,将多层次的卷积网络feature map接在一起

HpyerNet 

      paper : https://arxiv.org/pdf/1604.00600.pdf code:

以VGG-16为例,将conv1,conv3,conv5三层接在一起,形成一个Hyper Feature,以Hpyer Feature maps 代替原有的conv5_3,用于RPN和Fast-RCNN。该文章问题出发点针对小目标和定位精度,由于CNN的本身特点,随着层数加深,特征变得越来越抽象和语义,但分辨率却随之下降。Conv5_3 每一个像素点对应的stride = 16 pixel,如果能在conv3_3上做预测,一个像素点对应的stride = 4 pixel,相当于可以获得更好的精度,而conv5_3代表的语义信息对分类有帮助,结合下来,相当于一个定位精度和分类精度的折中。下图是以AlexNet为例,不同层接法在Pascal VOC 2007上的结果,可以看到,1+3+5会取得不错的效果。

2. 更精准更精细的RPN

(1)FPN

(2)more anchors

3. ROI分类方法

(1)PS-ROI-POOLING

R-FCN

(2)ROI-Align & multi-task benefits

Mask R-CNN :

(3)multi-layer roi-pooling

DeepText

Paper : https://arxiv.org/abs/1605.07314

一篇将Faster RCNN应用在文字检测的文章,里面的contribution比较琐碎,但有一点小改进经验证过相当有效,就是roi分别在conv4,conv5上做roi-pooling,合并后再进行分类。这样基本不增加计算量,又能利用更高分辨率的conv4。

4. sample and post-process

(1)Hard example mining

OHEM

      Paper:  Code:

(2)GAN

A-Fast-RCNN

Paper CVPR 2017 : https://arxiv.org/abs/1704.03414

这篇文章比较新颖,蹭上了GAN的热点,利用GAN在线产生一些遮挡形变的positive sample。与Fast-RCNN比较,在VOC2007上,mAP增加了2.3%,VOC2012上增加了2.6%。

(3)soft-NMS

Soft-NMS (Improving Object Detection With One Line of Code)

Paper: https://arxiv.org/pdf/1704.04503.pdf   code:https://github.com/bharatsingh430/soft-nms

该篇文章主要focus在后处理NMS上,不得不承认,对于很多问题,后处理的方法会对结果产生几个点的影响。虽然我自己试验过,在我的任务上,Soft-NMS得到的结果和NMS完全一致,该后处理方式可能不具备推广性,但是好在尝试起来非常容易,代价也很小,只需要替换一个函数就可以,所以大家不妨可以试验一下。

--------------------- 本文来自 zchang81 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zchang81/article/details/73176497?utm_source=copy

Faster R-CNN 深入理解 改进方法汇总相关推荐

  1. [目标检测] Faster R-CNN 深入理解 改进方法汇总

    Faster R-CNN 从2015年底至今已经有接近两年了,但依旧还是Object Detection领域的主流框架之一,虽然推出了后续 R-FCN,Mask R-CNN 等改进框架,但基本结构变化 ...

  2. Faster R CNN

    Faster R CNN 3 FASTER R-CNN 我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed r ...

  3. grDevices | R语言中的配色方法汇总(Ⅱ-2)

    上篇主要介绍了RGB模型和灰度模型两种配色方案,本篇来继续介绍HSV模型和HCL模型. 根据色彩理论,色彩具有三要素,即色相.饱和度和明度,HSV模型和HCL模型均是基于该理论的配色方案. 同上篇一样 ...

  4. grDevices | R语言中的配色方法汇总(Ⅱ-1)

    前篇介绍的RColorBrewer包是R常用的配色拓展包,而R系统自带的配色方案则由grDevices工具包提供. 由于grDevices工具包中的配色函数较多,我们分多篇推文进行介绍,本篇介绍的函数 ...

  5. RColorBrewer | R语言中的配色方法汇总(Ⅰ)

    1 RColorBrewer工具包 该包是R中常用的颜色选取工具包,它具有简单易用的特点,对于不具备太多色彩理论的读者来说也十分友好.虽然该包主要是为地图上色而设计,但也可以用于其他用途. libra ...

  6. cnn 回归 坐标 特征图_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

    RCNN 这个网络也是目标检测的鼻祖了.其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式.在RCNN中 ...

  7. faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

    RCNN 这个网络也是目标检测的鼻祖了.其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式.在RCNN中 ...

  8. Pandas 函数方法汇总一览查询(持续补充改进)

    Pandas 函数方法汇总一览查询(持续补充改进) 文章目录 Pandas 函数方法汇总一览查询(持续补充改进) 初衷 Pandas 最最常用函数罗列 Pandas 函数用法示例 初衷 NumPy.P ...

  9. OCR光学字符识别方法汇总

    编者荐语 OCR英文全称是Optical Character Recognition,中文叫做光学字符识别.它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受.人又 ...

最新文章

  1. Glide执行流程总结
  2. SAP WM 二步法确认TO单据
  3. python颜色识别原理_电脑控制手机 Python实现颜色识别功能
  4. 一天学完spark的Scala基础语法教程教程三、循环结构(idea版本)
  5. idea生成方法注释的正确方法
  6. file 选择的文件胖多有多大_如何删除 macOS 压缩包中的隐藏文件?
  7. arm for asterisk1.8
  8. linux源码文件名,Linux中文件名解析处理源码分析
  9. Mac与centos的ip配置
  10. tcp和udp协议的聊天 和udp协议的时间同步机制-----编码
  11. postman高级用法--断言(Response body:JSON value check)
  12. Python-print学习
  13. python报错:ValueError: invalid literal for int() with base 16: ‘ ‘
  14. ​​​​​​亲测有效|强制删除电脑上无法删除的文件和文件夹
  15. 多声道在系统和软件里的设置与应用(普通声卡和dante声卡)
  16. wps for linux显示系统缺失字体解决办法
  17. 翟东平微信公众号视频教程JAVA201810版3/3阶段-翟东平-专题视频课程
  18. CDA I级学习 - 漏斗模型
  19. mac下快速安装php的各个版本
  20. 【三维目标检测】Complex-Yolov4详解(二):模型结构

热门文章

  1. boost::safe_numerics::base_type相关的测试程序
  2. boost::python::converter::is_object_manager相关的测试程序
  3. boost::python::numpy::unary_ufunc相关的测试程序
  4. boost::mp11::mp_is_list相关用法的测试程序
  5. boost::math模块使用根查找的示例
  6. Boost概念的function_requires() 检查库在预期的情况下会捕获错误
  7. VTK:可视化算法之CarotidFlow
  8. VTK:Utilities之PCAStatistics
  9. VTK:Utilities之ShallowCopy
  10. 使用OpenCV创建视频