zoukankan      html  css  js  c++  java
  • 深度学习笔记之使用Faster-Rcnn进行目标检测 (原理篇)

      

      不多说,直接上干货!

    Object Detection发展介绍

      Faster rcnn是用来解决计算机视觉(CV)领域中Object Detection的问题的。经典的解决方案是使用: SS(selective search)产生proposal,之后使用像SVM之类的classifier进行分类,得到所有可能的目标.
      使用SS的一个重要的弊端就是:特别耗时,而且使用像传统的SVM之类的浅层分类器,效果不佳。
      鉴于神经网络(NN)的强大的feature extraction特征,可以将目标检测的任务放到NN上面来做,使用这一思想的目标检测的代表是:
    RCNN Fast-RCNNFaster-RCNN YOLO

      

      简单点说就是:

    • RCNN 解决的是,“为什么不用CNN做detection呢?”
    • Fast-RCNN 解决的是,“为什么不一起输出bounding box和label呢?”
    • Faster-RCNN 解决的是,“为什么还要用selective search呢?”

     

    Faster-Rcnn原理简介

      鉴于之上的分析,想要在时间上有所突破就要在如何更快的产生proposal上做工夫。
    Faster使用NN来做region proposal,在Fast-rcnn的基础上使用共享卷积层的方式。作者提出,卷积后的特征图同样也是可以用来生成 region proposals 的。通过增加两个卷积层来实现Region Proposal Networks (RPNs) , 一个用来将每个特征图 的位置编码成一个向量,另一个则是对每一个位置输出一个 objectness score 和 regressed bounds for k region proposals.

                Faster model

     

    RPN

      RPN的作用有以下几个:

    (1) 输出proposal的位置(坐标)和score
    (2) 将不同scale和ratio的proposal映射为低维的feature vector
    (3) 输出是否是前景的classification和进行位置的regression

      这里论文提到了一个叫做Anchor的概念,作者给出的定义是:

    The k proposals are parameterized relative to k reference boxes, which we call anchors

      

      我的理解是:不同ratio和scale的box集合就是anchor, 对最后一层卷积生成的feature map将其分为n*n的区域,进行不同ratio和scale的采样.

                    RPN

     

    RPN的cls和reg

      RPN输出对于某个proposal,其是属于前景或者背景的概率(0 or 1),具体的标准论文里给出的是:

    • 和所有的ground-truth的IoU(Intersection-over-union)小于0.3视为negative(背景)
    • 和任意的ground-truth的IoU大于0.7视为positive(前景)
    • 不属于以上两种情况的proposal直接丢掉,不进行训练使用

      对于regression,作用是进行proposal位置的修正:

    • 学习k个bounding-box-regressors
    • 每个regresso负责一个scale和ratio的proposal,k个regressor之间不共享权值

    RPN Training

      两种训练方式: joint trainingalternating training
    两种训练的方式都是在预先训练好的model上进行fine-tunning,比如使用VGG16、ZF等,对于新加的layer初始化使用random initiation,使用SGD和BP在caffe上进行训练

     

    alternating training

      首先训练RPN, 之后使用RPN产生的proposal来训练Fast-RCNN, 使用被Fast-RCNN tuned的网络初始化RPN,如此交替进行

     

    joint training

      首先产生region proposal,之后直接使用产生的proposal训练Faster-RCNN,对于BP过程,共享的层需要combine RPN loss和Faster-RCNN los

    Result

      结果自然不用说,肯定是state-of-art,大家自己感受下吧

    result

    参考博客

    使用Faster-Rcnn进行目标检测

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/zlslch/p/6973201.html
Copyright © 2011-2022 走看看