faster-rcnn系列筆記(一)


目錄:

    1. 序言

    2.正文

       2.1  關於ROI

       2.2  關於RPN

       2.3 關於anchor

    3. 關於數據集合制作

    4. 關於參數設置

  5. 參考

 

1.序言

     嘰歪一下目標檢測這個模型吧,這篇筆記是依據我對源碼的閱讀和參考一些博客,還有rbg的論文之后,這里描述一下個人對於faster-rcnn的一些微小的了解,只是總結一些關鍵點的理解. 首先看一下這張faster-rcnn整體的圖:

                      

 

2.正文

   我們在細說這些關鍵節點的時候,首先讓我們來看一下這個框架,這個圖譜是引用的http://shartoo.github.io/RCNN-series/,並且下面的圖片都來自於這里,在此處進行說明:

       

       2.1  關於ROI & ROI pooling 

    ROI的全稱為region of interest,俗稱感興趣區域,ROI用來提取我們感興趣的區域,ROI的應用在一下幾個方面:

    1. 在訓練模型的時候,ROI用來抽取所選區域樣本.

           2. 在模型預測時,由RPN提供的top300個建議區域.

         其實比較關鍵的內容應該是ROI pooling 也就是興趣區域池化層,這里完全可以單獨的拿出來說一說,詳細代碼見roi_pooling_layer.cu實現,為什么說它很重要呢?

    一般來說我們使用CNN做圖片分類的時候,需要將待分類的圖片縮放到統一大小,之所以這樣做,是因為全鏈接(FCN)層對我們卷積后的特征圖有大小限制,但是我們在使用faster-rcnn運行模型時,

     並不需要對圖下有大小限制,這就是ROI pooling層的貢獻了,因為他會對我們特征圖上的ROI區域,進行池化,首先我們要知道ROI的結構成份(left_x,left_y,height,width),ROI pooling 層會將特征圖上的ROI區域縮放到符合

FCN層要求的大小,然后在進行分類和預測.

 

       2.2  關於RPN

   對於RPN,它在faster-rcnn模型中扮演角色就是通過對特征圖進行初級的目標區域選取,通過預測給予最高的前300個最高的置信度的目標區域,然后fast-rcnn中特征圖去獲取建議的目標區域,進行分類和預測,那么RPN網絡是如何實現這一功能的呢?

 論文中的RPN網絡接入的是經過5次卷積之后的特征圖(vgg為例),對於這些特征圖,RPN會對特征圖再使用一個k*k大小的卷積核(滑動窗口)(論文中提供的是k=3)進行卷積滑動,並且滑動窗口(指整個窗口的區域)中的位置都會映射到一個原圖的對應的位置,並且由anchor提供了三種尺寸(128^2,256^2,512^2),提供三種比例(1:1,1:2,2:1),通過這些組合可以生成9種尺寸大小的區域,但是映射覆蓋區域不能超出圖像本身大小,這樣就最多產生9個區域結果會分別被接入到cls預測層和reg歸層,對於cls層,會通過預測的區域和目標區域(groud truth)進行一個IOU計算,如果IOU>0.7大於1則判斷為目標,如果IOU<0.3則判斷為背景,同時記錄下他們的預測值,如果i在0.3~0.7之間,則是一個無法確定的預測,該區域就不加入到網絡訓練中.對於reg層會產生加入網絡訓練中的坐標信息邊框回歸過程,通過回歸過程的訓練,是的建議區域盡可能的接近groud truth(目標區域),最后將建議區域接入到ROI pooling層中全鏈接

     

      2.3 關於anchor

      anchor提供了三種尺寸(128^2,256^2,512^2),提供三種比例(1:1,1:2,2:1),通過這些組合可以生成9種組合尺寸大小的區域

                   

 

 

    3. 關於數據集合制作

    關於數據集合的制作,我們先來描述一下數據集合的一些的有那些內容,我們就那官方提供的數據集合來說吧~,比如VOCdevkit2007 中的Annotations,ImageSets,JPEGImages,其他的我們可以不用看。

關於Annotations文件夾,文件夾下放置*.xml, JPEGImages放置*.jpg ,注意一個xml必須要對應一個jpg,ImageSets文件夾中放置var.txt,train.txt,trainval.txt,test.txt,還有各種*var.txt,*train.txt,*trainval.txt,這里的*填寫標簽名,

需要說明的幾點,trainval.txt放置所有的圖片名,train.txt放置trainval.txt一半的標簽名,val.txt放置trainval.txt一半的標簽.test.txt其實不要也可以. *var.txt,*train.txt,*trainval.txt 也是一樣,這里還需要注意的一點就是 *var.txt,*train.txt,*trainval.txt 中的0,-1,1意思0表示這個圖片中存在模糊的樣本,1表示該圖片中存在該標簽的樣本,-1表示該圖片中存在該圖片不存在該標簽的樣本.

框架圖

 

   4. 參考資料:

             http://shartoo.github.io/RCNN-series/

     http://blog.csdn.net/u013832707/article/details/53641055

            faster-rcnn論文

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM