一、 RCNN系列的发展

1.1  R-CNN

根据以往进行目标检测的方法,在深度学习应用于目标检测时,同样首先尝试使用滑动窗口的想法,先对图片进行选取2000个候选区域,分别对这些区域进行提取特征以用来识别分割。

1.1.1   rcnn具体的步骤是:

步骤一:在imagenet分类比赛上寻找一个cnn模型,使用它用于分类的预训练权重参数;对于这个模型修改最后的分类层,分为21类,去掉最后一个全连接层,因为所用的测试集为20类,且还有一类背景类。

步骤二:根据选择性搜索来对输入的图像进行选取2000个候选区域框;

然后修改候选区域框的大小,以适应cnn的输入,然后用cnn来提取出每个候选区域的feature map。

步骤三:训练svm分类器,这个svm分类器是对于特定的某一类进行区分,是专门用来对特定敏感区域进行分类,每一个类别对应于一个SVM分类器

步骤四:使用回归器精细修正每个候选框的位置,对于每一个类,需要训练一个回归模型去判定这个框框的是否完美。

对应步骤的图片结构如下图1:

这里有几点需要补充的是:

1.      采用预训练和fine-tune来解决了标签数据不多的问题,在imagenet上训练过大规模图片集合的网络已经对图片的基本信息都有了很明确的收集,采用预训练模型后再在voc训练集上进行fine-tune会达到很好的效果。

2.      选择候选区域的几种方法:这里采用的是slective search

3.      训练过程:

在得到候选区域后,首先将候选区域跟gt(真实标注的框)来进行比较,如果iou>0.5(iou是图像分割里面对于判定两个不同区域的相似度所采用的一个标准)把这个候选区域置为正样本,否则就是负样本。Iou的取值相当重要,会对结果影响较大。

训练时候采用SGD方法来调整框的位置。

1.1.2  RCNN的缺点:

1.      训练过程太慢,需要对每一个候选区域都输入到cnn中再进行提取特征,极大的浪费了时间和精力。

2.      步骤相对较多,需要fine-tune预训练模型、训练SVM分类器、回归器进行精细的调整。

3.      占用空间大,提取出的特征以及分类器都需要占用额外的空间

4.      没有对资源进行重复利用,在使用SVM分类和对框进行回归操作的时候cnn模型的参数并没有同步修改。

1.2  Fast rcnn

针对RCNN的需要对每一个候选区域进行cnn操作这一繁琐操作进行改进,从而的到了fast-rcnn算法,

1.2.1  fast-rcnn的步骤如下:

步骤一:同样是寻找一个在imagenet上训练过的预训练cnn模型

步骤二:与rcnn一样,通过selective search在图片中提取2000个候选区域

步骤三:将一整个图片都输入cnn模型中,提取到图片的整体特征(这是相对于rcnn最大的改进的地方)

步骤四:把候选区域映射到上一步cnn模型提取到的feature map里

步骤五:采用rol pooling层对每个候选区域的特征进行上采样,从而得到固定大小的feature map,以便输入模型中

步骤六:根据softmax loss和smooth l1 loss对候选区域的特征进行分类和回归调整的过程,回归操作是对于框调整所使用的bou b reg来训练。

相比rcnn的不同处:

在得到每个候选区域的feature map后,通过rolpooling 层来进行上采样操作对尺寸进行调整以便时输入模型;

最后使用的loss函数为multi-task loss,然后是把回归操作加入到cnn权重更新的过程中去。

1.2.2优点有以下几点:

1.      fast-rcnn在训练的时候,把整张图片送入cnn网络进行提取特征,不需要像rcnn那样对每一个候选区域进行输入cnn,从而在cnn的利用上提高了很大的效率。

2.      训练速度相应提升,不需要svm分类器对提取后的特征进行存储数据,把图片的特征和候选区域直接送入loss,不需要对硬盘进行读写的操作。

3.      对网络的利用效率,用于分类和回归调整的功能都用cnn网络来实现,不需要额外的分类器和回归器。

但是fast-rcnn仍然有其缺陷,对于生成候选区域仍然不够快速,所以faster-rcnn针对这一点进行改进,提出使用rpn网络来生成候选区域。同时提出的rpn网络可以与目标检测同时共享一个cnn的网络参数,减少参数的数量。

二  Faster rcnn的基本原理

2.1  faster rcnn的原理及结构

前面介绍了rcnn以及fast-rcnn,基础知识已经做好铺垫,接下来将介绍rcnn系列的最后一种算法faster-rcnn的详细内容。Faster-rcnn的主要原理如下:

Faster-rcnn是Ross B.Girshick在2016年在r-cnn和Fast-rcnn的基础上提出来的,最大的亮点之处是faster-rcnn把获取feature map,候选区域选取,回归和分类等操作全部融合在一个深层网络当中,效率较前两种提升了很多。

Faster-rcnn的基本结构如下图:

Faster-rcnn在结构上主要由一下几部分构成:

1.      卷积层,这部分卷积层就是普通的由imagenet比赛上用于分类的预训练模型所用的卷积层,它的主要功能是用来提取整张图片的feature map,卷积层结构也是卷积+激活函数+池化操作组成的。

2.      RPN网络,这是整个faster-rcnn的核心部分,改善了前两种方法用选择搜索来获取候选区域的方法,这种方法不仅快速而且更加高效地利用了cnn网络。在生成候选区域的时候会生成anchors,然后内部通过判别函数判断anchors属于前景还是后景,然后通过边框回归来进行第一次调整anchors获取准确的候选区域。

3.      Roi pooling,这一层的添加主要是为了解决最后输入全连接层的feature map的尺寸大小不同的问题,通过上采样来获取固定大小。

4.      分类和回归,最后通过两个分类层和回归层来分别判断物体属于哪个类别以及精细调整候选区域的位置,以获取最终目标检测的结果。

RCNN系列算法的发展的更多相关文章

  1. 【目标检测】R-CNN系列与SPP-Net总结

    目录 1. 前言 2. R-CNN 2.0 论文链接 2.1 概述 2.2 pre-training 2.3 不同阶段正负样本的IOU阈值 2.4 关于fine-tuning 2.5 对文章的一些思考 ...

  2. R-CNN系列阅读笔记

    之前感觉研究的还是不够透彻,这次彻底从头到尾研究一下. R-CNN系列 R-CNN 本文发表于2014年. 背景及整体框架 背景:将CNN在图像分类领域的成功(2012年)应用于目标检测上面.检测问题 ...

  3. RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比

    RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...

  4. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  5. 挑战目标跟踪算法极限,SiamRPN系列算法解读

    商汤科技智能视频团队首次开源其目标跟踪研究平台 PySOT.PySOT 包含了商汤科技 SiamRPN 系列算法,以及刚被 CVPR2019 收录为 Oral 的 SiamRPN++.此篇文章将解读目 ...

  6. 目标检测复习之Faster RCNN系列

    目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...

  7. 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN

    最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...

  8. CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

    在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...

  9. 目标检测之R-CNN系列

    Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...

随机推荐

  1. ==和equal()的区别

    “==”比较的是对象引用的地址相不相同 “equal()”比较的是内容是否相等

  2. iOS开发ffmpeg SDK 编译和集成

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它提供了录制.转换以及流化音视频的完整解决方案.同时,FFmpeg是一套跨平台的方案,所以我们可以在iOS开发中使 ...

  3. DRBD数据镜像与搭建

    一.数据安全工具DRDB 1. 数据镜像软件DRDB介绍 分布式块设备复制,是基于软件.基于网络的块复制存储解决方案 作用:用于服务器之间的磁盘.分区.逻辑卷等进行数据镜像. 例如:当用户将数据写入本 ...

  4. RabbitMQ的Q&A

    默认的IP端口 amqp默认绑定IP(本机所有IP),端口:5672 clustering默认绑定IP(本机所有IP),端口:25672 RabbitMQ Management插件 (本机所有IP), ...

  5. The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型

    小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...

  6. iOS-静态库,动态库,framework浅析(二)

    创建.a静态库 第一步,新建工程.     一般使用工程名就使用库的名称,比如我这里用FMDB来创建静态库,我的工程名就取名为FMDB,创建的.a静态库就是libFMDB.a.             ...

  7. ubuntu物理机上搭建Kubernetes集群 -- 准备

    准备工作 1.kubernetes架构 2.三台ubuntu主机: 操作系统:ubuntu-16.04.1-server-amd64 docker: 1.安装 使用命令 sudo apt-get in ...

  8. 过滤器会拦截 前端页面加载 js文件的请求

    学艺不精啊.....之前就总结过博客: JAVA中解决Filter过滤掉css,js,图片文件等问题 结果现在又犯了老错误~ 情况如下: index.jsp 页面的验证码输入栏绑定了异步验证(jQur ...

  9. 20165336 学习基础与C语言基础调查

    20165336 技能学习心得与c语言学习 一.心得体会 做教练 从老师的健身教练健身学员的学习关系中我懂得了学生应该有自主的学习意识,要有计划地去训练.去流汗,并且要以100分的要求严于律己,老师是 ...

  10. input的placeholder在ie9下不兼容的结局办法。

      /*      IE9placeholder支持      */     if(!placeholderSupport()){   // 判断浏览器是否支持 placeholder         ...