實時的神經網絡:Faster-RCNN技術分析

         轉載請說明出處 http://blog.csdn.net/luopingfeng/article/details/51245694 謝謝!
       自2015以來,人工智能在計算機視覺領域(人臉識別\物體分類\圖片描述)已經超越人類的識別正確率和速度,而關於速度的提升,不得不提RGB的開山之作(Faster-RCNN)   .
       先來個概述:Faster-RCNN通過交叉訓練方式,共享卷積特徵,從而大幅縮減了訓練參數(原文描述爲RPN cost-free)------除了CNN網絡架構本身具有的權值共享,在RGB的論文裏我們再次感受到共享思想的偉大:通過交替訓練兩個類型的網絡達到(cost-free)!
        當然,從實驗數據來看:也取得了近乎real-time的性能,真是“Deep learning 搞定一切vision task”.另外, 我也基於該技術做了一個實時場景分析和描述的人工智能系統:先進行場景中各類物體的識別(Faster-RCNN),再使用自然語言描述(LSTM),(即具備感知(識別物體)和認知能力(學習如何去表達)).點擊打開鏈接    效果如論文所述"waives nearly all computational burdens of Selective Search at test-time—the effective running time for proposals is just 10 milliseconds."
          


INTRODUCTION

          首先,論文回顧Fast-RCNN:與典型的RCNN不同的是,典型的RCNN使用Selective Search;而Fast-RCNN使用EdgeBoxes。直接取得性能上的優勢,論文給出的數據是,Selective Search:2 seconds per image,而使用EdgeBoxes是0.2 seconds per image,也就是Fast-RCNN提高了十倍的速度.

          然後, 論文指出Faster-RCNN( 可以看做是對 Fast-RCNN 的再次改進版):主要解決的是如何在RPN網絡中快速獲得 proposal, 作者在他的論文中提出,卷積後的特徵圖其實是可以用來生成 region proposals ! 所以,作者通過增加兩個獨立\平行的全連接層來實現 Region Proposal Networks (RPN) , 一個用來以迴歸方式生成推薦區域(region bounds),另一個則是objectness score。

          接着,作者強調:爲了面對平移(縮放)不變性,經典做法有:對輸入圖片或者卷積網絡裏的濾波器進行整體尺度\矩形長寬比例的採樣;而作者的做法是:對推薦區域(novel “anchor” boxes)進行尺度\矩形比例的採樣.結果是,對推薦區域採樣的模型,不管是速度還是準確率都取得很好的性能.

          最後,爲了將fully-convolutional network (FCN)的RPN  與  Fast-RCNN 相結合,作者給出了一種簡單的訓練方法:固定 proposals數目, 爲訓練RPN和Fast-RCNN, 這兩個訓練的task交替微調網絡 ,交替過程實現卷積特徵共享----注意這裏就是大招!!!因此不需要重複的卷積計算, 共享卷積特徵也讓兩個網絡快速地收斂,所以,大幅地提高了網絡的訓練和測試(應用)速度------這就是Faster-RCNN的優勢所在, 一種優雅並且高效的方案.


Region Proposal Networks

          RPN的目的是實現"attention"機制,告訴後續的扮演檢測\識別\分類角色的Fast-RCNN應該注意哪些區域,它從任意尺寸的圖片中得到一系列的帶有 objectness score 的 object proposals。具體流程是:使用一個小的網絡在已經進行通過卷積計算得到的feature map上進行滑動掃描,這個小的網絡每次在一個feature map上的一個窗口進行滑動(這個窗口大小爲n*n----在這裏,再次看到神經網絡中用於縮減網絡訓練參數的局部感知策略receptive field,通常n=228在VGG-16,而作者論文使用n=3),滑動操作後映射到一個低維向量(例如256D或512D,這裏說256或512是低維,有些同學發郵件問我:n=3,n*n=9,爲什麼256是低維呢?那麼解釋一下:低維相對不是指窗口大小,窗口是用來滑動的!256相對的是a convolutional feature map of a size W × H (typically ∼2,400),而2400這個特徵數很大,所以說256是低維.另外需要明白的是:這裏的256維裏的每一個數都是一個Anchor(由2400的特徵數滑動後操作後,再進行壓縮))最後將這個低維向量送入到兩個獨立\平行的全連接層:box迴歸層(a box-regression layer (reg))和box分類層(a box-classification layer (cls))。如下圖所示:




Translation-Invariant Anchors

       在計算機視覺中的一個挑戰就是平移不變性:比如人臉識別任務中,小的人臉(24*24的分辨率)和大的人臉(1080*720)如何在同一個訓練好權值的網絡中都能正確識別. 傳統有兩種主流的解決方式,第一:對圖像或feature map層進行尺度\寬高的採樣;第二,對濾波器進行尺度\寬高的採樣(或可以認爲是滑動窗口). 但作者的解決該問題的具體實現是:通過卷積核中心(用來生成推薦窗口的Anchor)進行尺度、寬高比的採樣。如上圖右邊,文中使用了3 scales and 3 aspect ratios (1:1,1:2,2:1), 就產生了 k = 9 anchors at each sliding position. 


A Loss Function for Learning Region Proposals

         anchors(卷積核的中心)分爲兩類:與ground-truth box 有較高的 IoU 或 與任意一個 ground-truth box 的 IoU 大於0.7 的 anchor 都標爲 positive label; 與所有 ground-truth box 的IoU 都小於0.3的 anchor 都標爲 negative label。其餘非正非負的都被丟掉。 
對於每一個 anchor box i, 其 loss function 定義爲: 
         L(pi,ti)=Lcls(pi,p?i)+λp?iLreg(ti,t?i) 
其中,pi 是預測其是一個 object 的 probability ,當其label 爲 positive 時,p?i 爲1,否則爲0。 ti={tx,ty,tw,th} 是預測的 bounding box,t?i 是與這個 anchor 相對應的 ground-truth box 。 classification loss Lcls 是一個二分類(是或者不是object)的 softmax loss 。regression loss Lreg(ti,t?i)=R(ti?t?i)R 是 Fast R-CNN 中定義的 robust loss function (smooth-L1) ,p?iLreg 表示只針對 positive anchors (p?i = 1). 這裏還有一個平衡因子 λ , 文中設爲10,表示更傾向於box location。


Optimization

           使用 back-propagation(反向傳播) and stochastic gradient descent (隨機梯度) 對這個RPN進行訓練,每張圖片隨機採樣了256個 anchors , 這裏作者認爲如果使用所有的anchors來訓練的話,this will bias towards negative samples as they are dominate。所以這裏作者將採樣的正負positive and negative anchors have a ratio of 1:1. 新增的兩層使用高斯來初始化,其餘使用 ImageNet 的 model 初始化。


Sharing Convolutional Features for Region Proposal and Object Detection

通過交替優化來學習共享的特徵,共四個步驟:

  • 1. 用 ImageNet 的 model 初始化一個RPN,然後針對 region proposal task 進行微調。
  • 2. 利用第一步得到的 proposals 作爲Fast-RCNN 的輸入,來訓練這個承擔detection任務的network.注意: 到這裏兩個網絡還是分開的,沒有 share conv layers 。
  • 3. 利用第二部訓練好的Fast-RCNN來初始化 RPN , 繼續訓練RPN,這裏訓練的時候固定 conv layers ,只微調僅屬於RPN 那一部分的網絡層。
  • 4. 再固定 conv layers ,只微調僅屬於 Fast-RCNN 的fc 層。
  • 第4步結束後,我們已經共享了卷積層,接下來我們就可以進行交替訓練(1-4).很好理解吧.

Implementation Details

            每個 anchor , 使用 3 scales with box areas of 12822562, and 5122 pixels, and 3 aspect ratios of 1:1, 1:2, and 2:1. 忽略了所有的 cross-boundary anchors 。在 proposal regions 上根據 cls scores 進行了 nonmaximum suppression (NMS) 。


Experiments

          作者文中討論的各種策略和參數進行各個數據集的實驗和對應的數據結果.


Conclusion

           縱觀全文,詳述瞭如何使用 Region Proposal Networks (RPN) 來生成 region proposals(通過卷積核中心(用來生成推薦窗口的Anchor)尺度和比例採樣實現平移不變性) ,然後使用Fast-RCNN進行物體檢測, 接着使用交替訓練從而共享特徵(也就是減少了網絡參有數)----再次強調大招在這裏!!! 最終region proposal step is nearly cost-free,也就是近乎實時的性能.

          

         總結: 另CNN在人工智能領域脫穎而出的是許多精妙的思想,受生物視覺所啓發的局部感知策略,基於統計特性的權值共享,利用特徵聚合的池化……這些tricks優化performance的同時,也以指數級遞減了計算的複雜度,再者爲架構並行和數據切分訓練提供了可能。而作者通過交替訓練方式進一步把參數共享的思想, 推到當前學術水平的極致.

          轉載請說明出處 http://blog.csdn.net/luopingfeng/article/details/51245694 謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章