目标检测--之RCNN

前言,最近接触到的一个项目要用到目标检测,还有我的科研方向caption,都用到这个,最近电脑在windows下下载数据集,估计要一两天,也不能切换到ubuntu下撸代码~。所以早上没事,我就把卷积神经网络用在目标检测的开山之作介绍下,后续他的孩子算法(fast-rcnn, faster-rcnn)我也会陆续介绍。

RCNN 论文地址:Rich feature hierarchies for accurate object detection and semantic segmentation

RCNN

算法的四步走:(乾坤大挪移的招式)

1:激发最大潜力(候选区域选择)

Region Proposal是一类传统的区域提取方法,可以看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像,关于Proposal大家可以看下SelectiveSearch,一般Candidate选项为2k个即可;根据Proposal提取的目标图像进行归一化,作为CNN的标准输入。

Selectivesearch算法流程(图片来源于网络,侵删):

为什么说他是乾坤大挪移呢。当然这是我瞎扯的,但是仔细想想也是有道理的,张无忌在明教重地,当时有小昭在身边,又会了九阳神功,所以激发最大潜力,练就乾坤大挪移。这不就类似于这个Selectivesearch算法吗,首先选取2K左右的候选区域,激发最大潜力~~!。

 

2)CNN特征提取(集武功道理大成):

        标准CNN过程,根据输入进行卷积/池化等操作,得到固定维度的输出;这里的卷积模型可以替换成现在最先进的一些CNN框架(resetnet, PCAnet,VGG等等),其实这一步就是抽取深度特征,本质上和我们传统的抽HOG LBP特征没有区别。这就是乾坤大挪移中集武功道理大成,吸收各门派武功的原理~~!

  1. 分类(令对方造出破绽)

    对每一类目标,使用一个线性SVM二类分类器进行判别。输入为深度网络输出的4096维特征(CNN抽取的),输出是否属于此类。

    由于负样本很多,使用hard negative mining方法。

    正样本

    本类的真值标定框。

    负样本

    考察每一个候选框,如果和本类所有标定框的重叠都小于0.3,认定其为负样本。

    (张无忌这时却已看全了龙爪手三十六式抓法,其本身虽无破绽可寻,但乾坤大挪移法却能在对方如何拳招中造成破绽,只是心下踌躇:「此刻我便要取他性命,亦已不难,但少林派威名赫赫,这位空性大师又是少林寺的三大耄宿之一,我若在天下英雄之前将他打败,少林派颜面何存?张无忌一觉对方破绽大露,这乾坤大挪移心法最擅于寻瑕抵隙,对方百计防护,尚且不稳)上面是引用金庸原文,分类不就找到破绽吗,然后分类错误,我们在调~~!

  2. 回归(转换阴阳二气)

    我们首先要明确目标检测不仅是要对目标进行识别,而且还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。

    这里先解释一下什么叫定位精度:定位精度可以用算法得出的物体检测框与实际标注的物体边界框的IoU值来近似表示。

    如下图所示,绿色框为实际标准的卡宴车辆框,即Ground Truth;黄色框为selective search算法得出的建议框,即Region Proposal。即使黄色框中物体被分类器识别为卡宴车辆,但是由于绿色框和黄色框IoU值并不大,所以最后的目标检测精度并不高。采用回归器是为了对建议框进行校正,使得校正后的Region Proposal与selective search更接近, 以提高最终的检测精度。论文中采用bounding-box回归使mAP提高了3~4%。

    操作:

    回归器

    对每一类目标,使用一个线性脊回归器进行精修。正则项λ=10000λ=10000。

    输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

    训练样本

    判定为本类的候选框中,和真值重叠面积大于0.6的候选框。

    这就是类似于乾坤大挪移转换阴阳二气,调节自己,是自己达到内功的最佳境界~~!而网络通过调节位置,达到最佳mAP~~。

    整个RCNN 流程:

    RCNN 不足:

    1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;

     

    2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;

     

    3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。

    废话当然有不足了,乾坤大挪移才到第四次。不足说白了,就是运行时间长,要固定尺寸图片,太死板了。

     

    总结:

    关于上述乾坤大挪移的例子,我可能只是一时兴起,权当看个笑话,但是整个网络我还是介绍的很详细的~~。哈哈,咱们下次博客见~~~!

    如果有交流的可以加我微信,欢迎吹牛~,欢迎一起讨论科研与工程~~! 我的wechat二维码:

    验证就说自己:讨论机器视觉地 ~

     

     

目标检测--之RCNN的更多相关文章

  1. 目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Tech report

    目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Te ...

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

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

  3. 目标检测(一) R-CNN

    R-CNN全称为 Region-CNN,它是第一个成功地将深度学习应用到目标检测的算法,后续的改进算法 Fast R-CNN.Faster R-CNN都是基于该算法. 传统方法 VS R-CNN 传统 ...

  4. 目标检测-Faster R-CNN

    [目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...

  5. 【目标检测】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 对文章的一些思考 ...

  6. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  7. 多目标检测分类 RCNN到Mask R-CNN

    最近做目标检测需要用到Mask R-CNN,之前研究过CNN,R-CNN:通过论文的阅读以及下边三篇博客大概弄懂了Mask R-CNN神经网络.想要改进还得努力啊... 目标检测的经典网络结构,顺序大 ...

  8. [目标检测] 从 R-CNN 到 Faster R-CNN

    R-CNN 创新点 经典的目标检测算法使用滑动窗法依次判断所有可能的区域,提取人工设定的特征(HOG,SIFT).本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上用深度网络提取特征, ...

  9. paper 111:图像分类物体目标检测 from RCNN to YOLO

    参考列表 Selective Search for Object Recognition Selective Search for Object Recognition(菜菜鸟小Q的专栏) Selec ...

随机推荐

  1. VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本号,或者预编译头为 C++ 而在 C 中使用它(或相反)

    出现错误:error C1853: "Debug\ConsoleApplication1.pch"预编译头文件来自编译器的早期版本号.或者预编译头为 C++ 而在 C 中使用它(或 ...

  2. 1、硬件IO口配置;

    对于MTK TP驱动移植一般分为六部分: 1.硬件IO口配置: 2.TP驱动移植. 3.I2C通信: 4.中断触发: 5.数据上报: 6.虚拟按键. 硬件电路: 1.GPIO配置 打开 mediate ...

  3. http://m2eclipse.sonatype.org/sites/m2e地址更换了

    http://m2eclipse.sonatype.org/sites/m2e 更换为 https://repository.sonatype.org/content/sites/forge-site ...

  4. iOS项目开发之Socket编程

    有一段时间没有认真总结和写博客了 前段时间找工作.进入工作阶段.比较少静下来认真总结,现在静下心来总结一下最近的一些心得 前言 AsyncSocket介绍 AsyncSocket详解 AsyncSoc ...

  5. ClassLibary和WPF User Control LIbary和WPF Custom Control Libary的异同

    说来惭愧,接触WPF这么长时间了,今天在写自定义控件时遇到一个问题:运行界面中并没有显示自定义控件,经调试发现原来没有加载Themes中的Generic.xaml. 可是为什么在其他solution中 ...

  6. 用HTML5canvas绘制一个圆环形的进度表示

    先看一下画出来的效果,如下图,这样一个圆环形的进度.  我这里使用HTML5的Canvas来要制作这样一个圆环形的进度, 首先是HTML页面,HTML5的文档标识是: 这个文档标识要比HTML4的简单 ...

  7. 涛哥的Python脚本工具箱之生成带Logo的二维码

    近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应 ...

  8. Java IO 常用类简介

    字节流 输入字节流 InputStream输入字节流的抽象类 ByteArrayInputStreambyte数组输入流 FileInputStream文件输入流 PipedInputStream管道 ...

  9. Mybatis-There is no getter for property named 'id' in 'class java.lang.String'

    <mapper namespace="cn.telchina.standard.mapper.SysOrgnMapper"> <!-- <![CDATA[s ...

  10. SQLSERVER---- 通过位运算更改标志位

    当给多个中心传输数据时,怎么标记哪些单位推送了,哪些单位没有更新,如果单独设置一个字段,一来说,扩展不足,另外会造成数据库冗余,这里可以采用SQLSERVER的位运算. 比如说,更新标志位为0,长度为 ...