Abstract
特點:有一個多任務的loss,簡化了學習過程,并且提高了效率。比傳統的R-CNN和SPP-Net更加快,而且精度高。
1. Introduction
對目標的精確定位目前還存在兩大挑戰:
? ? ? ?第一:大量的候選區域需要被估計。為了精度定位,卷積層的特征需要共享之前他在原圖像中的位置。然后這個方法限制了后向傳播的誤差,接著潛在的影響了精度。
? ? ? ?第二:候選對象位置需要是精練來達到高精度。傳統的R-CNN和SPP-net以前的這個挑選候選區域過程在一個獨立于的學習過程的。
本篇文章:提出了一個單一過程的學習過程。在學習過程中,同時找出那些候選區域并且能精煉他的空間位置。并且本文還提出一個新的方法:在學習過程來共享卷積特征,允許將全部的反向誤差都傳播回來,來增加精度。除此之外還用了截斷SVD等等一些手段來增加精度并且加快速度。
1.1. RCNN and SPPnet
具體看前兩篇。
1.2. Contributions
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?code
2. Fast R-CNN training
快速R-CNN網絡將整個圖像和一組object proposals作為輸入。
? ? ? ?網絡首先使用幾個卷積(conv)和最大池層來處理整個圖像,以產生conv feature map。
? ? ? ?然后,對于每個對象proposal,感興趣區域(RoI)池層從特征圖中抽取固定長度的特征向量。
? ? ? ?每個特征向量被饋送到完全連接(fc)層序列,其最終分支成兩個同級輸出層:
? ? ? ? ? ? ? ?一個產生對K個對象類加上全部捕獲的“背景”類的softmax概率估計(one that produces? ? ? ? ? ?softmax probability estimates over K object classes plus a catch-all “background” class)
? ? ? ? ? ? ? ? ?另一個對每個K對象類輸出四個實數,每組4個值編碼提煉定義K個類中的一個的的? ? ? ? ? ? ? 邊 界框位置。(another layer that outputs four real-valued numbers for each of the K? ? ? ? ? ? ? ? ? object classes. Each set of 4 values encodes re?ned bounding-box positions for one of? ? ? ? ? ? the K classes.)
2.1. The RoI pooling layer
The region of interest (RoI) pooling layer是簡化版的spatial pyramid pooling(SPP-net).因為(RoI) pooling layer只有單一的尺度。
Rol pooling layer的作用主要有兩個:
一個是將image中的RoI定位到feature map中對應patch
另一個是用一個單層的SPP layer將這個feature map patch下采樣為大小固定的feature再傳入全連接層。
RoI池層使用最大池化將任何有效的RoI區域內的特征轉換成具有H×W(例如,7×7)的固定空間范圍的小feature map,其中H和W是層超參數它們獨立于任何特定的RoI。
在本文中,RoI是conv feature map中的一個矩形窗口。
每個RoI由定義其左上角(r,c)及其高度和寬度(h,w)的四元組(r,c,h,w)定義。
RoI層僅僅是Sppnets中的spatial pyramid pooling layer的特殊形式,其中只有一個金字塔層.
2.2. Using pretrained networks
之前始于訓練截斷我們訓練了3個Image network.當提個預訓練模型來初始化FRCN的時候,需要進行3個轉變。
結構變了
1.最后一層最大池化層變成了RoI池化層,可以為全連接層產生固定大小的feature。
2.兩個sibling層,同時實現不同的功能。
輸入變了
3.a batch of N images 和a list of R RoIs.batch的大小和RoI的輸出量是動態變化的
2.3. Finetuning for detection
limitation:在3層的softmax classifier 在檢測的時候進行了微調。因為3層的softmax classifier接受固定長度的feature向量。它是來自spatial pyramid pooling。在此之前的網絡結構卷積層工作方式是offline的。所以在微調階段,反向傳播不可能到達卷積層。換句話說在微調階段:只有3層的classifier被更新了參數。
由于以上限制limitation的存在:在SPPnet中SGD采用的方式是,在眾多的RoI候選區域(將所有圖片的RoI區域放在一起)進行采樣。所以每一個Minibatch里面的RoI可能是來自不同圖片的。
為了消除這個限制limitation:本文采取的SGD策略是有等級的采樣:先對輸入圖片進行采樣,然后在已經采樣得到的圖片中采樣得到RoI.這些來自同一個通篇的ROI對于計算和儲存是很有效果的。
Multi-task loss.
Mini-batch sampling.
Back-propagation through RoI pooling layers.
SGD hyper-parameters.
2.4. Scale invariance
SPPnet用了兩種實現尺度不變的方法:
1. brute force (single scale),直接將image設置為某種scale,直接輸入網絡訓練,期望網絡自己適應這個scale。
2. image pyramids (multi scale),生成一個圖像金字塔,在multi-scale訓練時,對于要用的RoI,在金字塔上找到一個最接近227x227的尺寸,然后用這個尺寸訓練網絡。
雖然看起來2比較好,但是非常耗時,而且性能提高也不對,大約只有%1,所以這篇論文在實現中還是用了1。
3. Fast R-CNN detection
輸入分兩種形式:
1.single-scale:單一尺度的圖片和它的大約2000多張的候選圖。
2.multi-scale:一張圖片的金字塔和對應金字塔的候選區域。
3.1. Truncated SVD for faster detection
在分類中,計算全連接層比卷積層快,而在檢測中由于一個圖中要提取2000個RoI,所以大部分時間都用在計算全連接層了。文中采用奇異值分解的方法來減少計算fc層的時間。
SVD