R-CNN、高速R-CNN、より高速なR-CNNの研究ノート

入門

   近年では、最も人気のあるターゲット検出方法は、より高速なR-CNN説明することができ、私はこれらのメソッドをステップインします以下に簡単にまとめ、かつ詳細に重要なポイントをいくつか説明されています。以下からの最初のためにコーセラ-ディープラーニングンR-CNNは、それぞれの方法の開発を合理化アンドリューに要約されています。
R-CNN


R-CNN

  RCNNは、地域+ RCNNの組み合わせです。全体のプロセスは、次のセクションに分かれています。

  1.地域提案システム:画像抽出この提案システム(選択的検索、エッジボックスおよびその他の方法)によって(約2000)の関心領域、および保存するためにそれらを引き出します。
  2. CNN:その特徴ベクトルを与えるCNNに、均一な大きさにこれらの領域のサイズを変更します。
  3. SVM:SVM分類器の分類に特徴ベクトルのk番目(各クラスの各トレーニングSVM)。
  4.バウンディングボックス回帰:エラー訂正面積と実領域を抽出するために設計された回帰モデルを、取得するために、実際のバウンディングボックスを比較し、前述の関心領域と。
R-CNN

  要するに、これは非常にオープンを解体するすべてのステップのモデルだった、一度に精度が非常に高いです - しかし、この方法には欠点がありますが遅い、退屈なステップを。


SPPネット(追加の知識)

  前面的R-CNN是将原图上所有proposal region依次送入至CNN中,提取各个region的feature map,这个速度无疑会很慢。那有没有一种更好的方法,能将原图直接输入至CNN,得到整个图像的feature map,然后在这个feature map上抠出proposal region呢?
   SPP Net提出了Spatial Pyramid Pooling layer的思想来解决这一问题。
空間ピラミッドプーリング層

  如上图,假设我们将图像输入至CNN提取了256个feature map(这时我们知道feature map上的一个像素的感受野对应的是原图上的一个框框,那么每一个proposal region对应到feature map中的框框我们都可以找到),那么我们可以依据原图上的proposal region来扣出的feature map上相应的区域,但是这些区域大小不一,所以无法送入全连接层,怎么办?这里就要用到Spatial Pyramid Pooling layer了。
  对于每一个feature map上的区域,我们将44,22,11大小的这三张网格放到相应区域上,然后对这21个网格做最大池化(此时一个wh的网格只对应一个网格中的最大数字),那么对于一个区域,我们就能得到21维的特征向量。而我们得到了256个 feature map,所以一个区域我们就有256*21大小的特征向量。这么做的话,每个区域对应的特征向量维数就一样了~
  再放一张图展示下R-CNN和SPP Net的区别:
R-CNNとSPPネット

  总之,SPP Net在提取特征这一步骤降低了时间复杂度,同时它用可变尺寸图片训练,增加标度不变形并降低模型过拟合性。


Fast R-CNN

  Fast R-CNN 借鉴了SPP Net 的思想,用滑动窗口的卷积实现方式,实现了同一张图片只用送入CNN一次,便可在feature map上得到所有proposal region的特征向量。相比之前的R-CNN,它有以下优点:

  • 更高的检测识别率
  • 更快的速度(对于一张图片,一次CNN提取特征即可)
  • 更简洁的训练方式(一个网络,既能提取特征,还能做BBox回归,还能分类)

  先谈谈这个RoI pooling layer,这个一层和SPP Net里面的Spatial Pyramid Pooling layer功能很相似,都是为了使不同大小的区域在经过pooling后得到同一维度的特征向量。本质上而言,RoI pooling layer就是简化版本的Pyramid Pooling layer。
  为什么要简化? 它加快了计算速度。同时,在SPP net中,每个训练样本来自不同图像,而每个RoI在原图上对应着一个巨大的感受野,所以整个网络在反向传播到SPP layer之后,效率就很低了 ,所以说,SPP layer只能用来tune全连接层,而不能tune到它之前的卷积层。(这一点有待思考)
  要怎么简化呢? SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只是用一个size的金字塔,将这个feature map下采样到一个7x7的feature map上,实现了不同大小的区域到全连接层维数的对应。
ここに画像を挿入説明

  再谈谈RoI后面分支出来的Multi-loss,这个loss函数来源于softmax对标签的loss以及对bbox框框回归的loss,具体定义如下:
multi-loss

  第一项, L c l s ( p , u ) = l o g ( p u ) L_{cls} (p, u) = − log(p_u) ,这个loss值为对class为u的预测概率取log。
  第二项, λ \lambda 是为了权衡一二项的比重; [ u 1 ] [u\geq1] 表示只有框内object不为背景(非零)的时候第二项loss才有效; L l o c ( t u , v ) = i x , y , w , h s m o o t h L 1 ( t i u v i ) L_{loc}(t^u,v)=\sum_{i\in{x, y, w, h}} smooth_{L_1}(t^u_i - v_i) ,这里我们计算的是真实框框 ( v x , v y , v w , v h ) (v_x, v_y, v_w, v_h) 和预测框框$ t_u = (t^u_x , t^u_y , t^u_w, t^u_h ) 之间的差异,最后这个 smooth 函数只是一个作为系数的惩罚函数, x$离0越远惩罚力度越大。(很神奇这个能网络同时做到BBox regression,有待思考)
s m o o t h L 1 ( x ) = { 0.5 x 2 i f x < 1 x 0.5 o t h e r w i s e smooth_{L_1}(x)= \begin{cases} 0.5x^2 & if |x| < 1 \\ |x|-0.5 & otherwise \end{cases}
  小结一下,它避免了RCNN中对一个图像的重复计算,同时它集成了更一体化的训练方式,使检测和分类准确度再次提高~不过,它还是没有解决挖掘proposal region的耗时问题。


Faster R-CNN

  Faster R-CNN最重要的贡献是它提出了Region Proposal Network,这个网络代替了传统的Selective Search等方法,加快了region proposal的速度。话不多说,先看看Faster R-CNN的大致示意图:
Faster R-CNN

  整个网络可以看作是三部分:
  1. 通过CNN提取整个特征图像。
  2. 把整个特征图像送入RPN,提取有物体的,框框较大的感兴趣区域。
  3. 将感兴趣区域从特征图像中扣出送入RoI池化层,再进行分类与BBox回归。

   首先,RPN是怎么选出候选区域的见上面示意图。在VGG网络提取整个特征图像后,我们使用一个33的滑窗在这个图像上滑动,对于每一个位置,我们同时预测k个不同region proposals,所以左上角的分类层含有2k个输出(表明是否为物体的概率),右上角的边框回归层有4k个输出(表示region的坐标到groundtruth的坐标的四个矫正量)。其中,这k个proposals分别对应原图中k个框框里面object的大致位置。
   其次,为什么一个卷积出来的256-d向量能对应k个anchors个人理解,anchor boxes的size是我们人为固定好了的(anchor boxes的大小对应的是原图像的,它中心点是原图像上anchor boxes的中心点,对应到示意图里就是那个蓝点点),但是实际上神经网络中并没有把这k个anchor boxed坐标当做某某参数来搞。而是,神经网络在训练的过程中,每个anchor会根据它对应的k个boxes学出4
k个坐标矫正量(根据“人工定义的anchor boxes的坐标+人工标注groundtruth的坐标”得到的loss来学习)。(如果理解有误,还望在评论中批评指出,谢谢!)
RPN

  最后来看看RPN的loss函数,见下图。
  第一项,表示是否为object的log loss。第二项, p i p^*_i 表示框内只有是个object的时候才为1,这时 L r e g L_{reg} 同じとリターンロスの前に、あまり言うことはありませんと述べた-
  ここでは多くはない、のような、高速R-CNNの前に箱にBBox回帰とこれら二つのものが、分類器の分類損失と微調整の背後にあると言います。
RPN loss function

  〜より速く、より正確な精度を得るための別の方法RPN以前に選択された領域を有する短い、高速R-CNNでなく、アンドリュー・ウが述べ、それはトレーニングの終了と同じネットワークであってもよいが、それ候補者からのステップのこのシリーズの国境への復帰は非常に面倒で、エリアを分類することを提案しました。だから、我々はより簡潔で、より効率的なターゲット検出方法を期待します -


リファレンス

https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/object_localization_and_detection.html
http://blog.csdn.net/xjz18298268521/article/details/52681966
http://blog.csdn.net/myarrow/article/詳細/ 51878004
http://blog.csdn.net/qq_34784753/article/details/78707613
https://www.zhihu.com/question/42205480

公開された40元の記事 ウォン称賛44 ビュー90000 +

おすすめ

転載: blog.csdn.net/Site1997/article/details/79312730