首發於《有三AI》

【技術綜述】萬字長文詳解Faster RCNN源代碼?

mp.weixin.qq.com
圖標

Faster R-CNN將分成四部分介紹。總共有Faster R-CNN概述,py-faster-rcnn框架解讀,網路分析,和訓練與測試四部分內容。第一篇將介紹Faster R-CNN概述。下一篇可以詳見【技術綜述】萬字長文詳解Faster RCNN源代碼(二)。

1. Faster R-CNN概述

1.1 基礎

目標檢測任務關注的是圖片中特定目標物體的位置。一個檢測任務包含兩個子任務,其一是輸出這一目標的類別信息,屬於分類任務。其二是輸出目標的具體位置信息,屬於定位任務。

分類的結果是一個類別標籤,對於單分類任務而言,它就是一個數,對於多分類任務,就是一個向量。定位任務的輸出是一個位置,用矩形框表示,包含矩形框左上角或中間位置的x,y坐標和矩形框的寬度高度。

目標檢測在生活中具有非常廣泛的應用,它也經過了非常長的發展階段。與計算機視覺領域裡大部分的演算法一樣,也經歷了從傳統的人工設計特徵和淺層分類器的思路,到大數據時代使用深度神經網路進行特徵學習的思路這一過程。

相信大家已經看過很多目標檢測的原理綜述性文章,如果沒有,就參考本公眾號今天發的另一篇文章《一文道盡R-CNN系列目標檢測》。

本文包括兩個部分:

  1. 對經典演算法Faster R-CNN的源代碼進行詳細的說明,選用的代碼為caffe版本, 鏈接為:github.com/rbgirshick/p
  2. 基於該框架完成一個簡單的實踐。在正式解讀代碼之前,要先說清楚兩個重要概念,rpn與roi pooling。

1.2 roi pooing

通常我們訓練一次取多張圖,也就是一個batch,一個batch中圖大小一致,這是為了從源頭上把控,從而獲得固定維度的特徵。所以在早期進行目標檢測,會將候選的區域進行裁剪或縮放到統一尺度,如下圖紅色框。

副作用很明顯,一次只選到了目標一部分,或者把目標變形了。

sppnet不從源頭而是在最後一環的特徵上做處理,將任意尺度(大於4*4)大小的特徵,進行3種pooling,串接起來得到固定的21維,從而避免了固定尺寸輸入的約束,如下。

當然你用的時候,不必要局限於4*4,2*2,1*1。

以前為了滿足全連接層固定大小輸入,需要在輸入圖進行縮放,然後提取特徵。現在既然已經可以在特徵空間進行縮放了,那麼就不必要求輸入一樣大了

原來的那些只是因為在原始空間中有了輕微的位置或者尺寸改變就要重新提取特徵的大量重複操作,就不需要了,因為任意的原始圖像中的輸入是可以映射到特徵圖中的,卷積只會改變空間解析度,不改變比例和位置。

映射很簡單,等比例縮放即可,實現時考慮好padding,stride等操作。

那這跟roi pooling有什麼關係呢?

ROI pooling是一個簡化的spp池化,不需要這麼複雜,直接一次分塊pooling就行了,在經過了從原始空間到特徵空間的映射之後,設定好一個pooled_w,一個pooled_h,就是將W*H的輸入pooling為pooled_w*pooled_h的特徵圖,然後放入全連接層。 它完成的下面的輸入輸出的變換。

1.3 RPN

region proposal network,可知道這就是一個網路,而且是一個小小的網路。它解決了roi pooling的輸入問題,就是如何得到一系列的proposal,也就是原圖中的候選框。

圖比較難畫就借用原文了,如上,而rpn網路的功能示意圖如下。

最開始當我們想要去提取一些區域來做分類和回歸時,那就窮舉嘛,搞不同大小,不同比例的框,在圖像中從左到右,從上到下滑動,如上圖,一個就選了9種。這樣計算量很大,所以selective search利用語義信息改進,避免了滑動,但還是需要在原圖中操作,因為特徵提取不能共享。

現在不是有了sppnet和roi pooling的框架,把上面的這個在原圖中進行窮舉滑動的操作,換到了比原圖小很多的特徵空間(比如224*224 --> 13*13),還是搞滑動窗口,就得到了rpn,如下圖。

rpn實現了了上面的輸入輸出。不同與簡單滑窗的是,網路會對這個過程進行學習,得到更有效的框。

剩下的就是一些普通cnn的知識,不用多說,有了上面的這些基礎後,我們開始解讀代碼。

更多詳細內容關注微信公眾號:有三AI

龍鵬:【技術綜述】萬字長文詳解Faster RCNN源代碼(二)?

zhuanlan.zhihu.com
圖標
龍鵬:【技術綜述】萬字長文詳解Faster RCNN源代碼(三)?

zhuanlan.zhihu.com
圖標
龍鵬:【技術綜述】萬字長文詳解Faster RCNN源代碼(四)?

zhuanlan.zhihu.com
圖標

推薦閱讀:
相关文章