MSCNN(主要解決多尺度同時存在時的檢索問題):
1.針對多尺度問題:
由於卷積網絡中不同層得到的特征不同,就對不同的特征層加以利用。例如,Conv4-3的底層,一些細節特征會更加清楚可以用來進行小目標的檢測;而高層Conv5-3層,對於大目標的檢測效果更好可以用來進行大目標檢測,對於不同的層設計不同尺度的目標檢測器,完成多尺度下的檢測問題。
2.針對速度問題
使用特征圖的上采樣來代替輸入圖像的上采樣,可以大大減少內存,提高速度,這里設計一個卷積層來增加特征圖的分辨率,使得小目標依然可以唄檢測出來。
網絡結構如下:
這里Conv4-3上面加入了一個卷積緩沖層,因為這一層更靠近主干網絡(更加接近輸入圖),為了不影響梯度學習過程卷積緩沖層可以防止檢測分支的梯度直接反向傳播回主干層。
這部分就是將特征圖上采樣后經過ROIPolling層后進行分類跟坐標回歸,這里加入了上下文描述,其實就是上圖中的藍色的cube它是對應綠色cube尺寸的1.5倍大小,這樣就起到一個上下文的作用,而最后一個Conv層就是減少model參數,對featuer map起到一個降維的作用。
3.采樣
對於每一個檢測層訓練樣本都分為正、負樣本。其中候選框是通過一個Anchor作為滑動窗口的中心,在特征映射上滑動產生的。Anchor的大小設置與卷積核的大小相關,並且不同檢測層的大小設置也不同,具體設置如下表所示。當候選框與真實樣本的IOU值大於等於0.5時,被標記為正樣本,當IOU值小於0.2時被標記為負樣本,其余的丟棄。
為了評估MS-CNN的性能,使用KITTI,Caltech數據集。因為對比於pascal voc,imagenet這兩個數據集其中包含了更多小尺度目標,Caltech中圖像的分辨率為:640×480,KITTI中圖像的分辨率為:1250×375.包含Car,pedestrain,cyyclist三個類,分為easy,moderate,hard三個子集,7481張圖像用於train/val,7518張圖像用於test;KITTI中Car訓練一個模型,pedestrain,cyclist訓練一個模型,Caltech中pedestrain訓練一個模型。
注:這里說一下滑動窗口法。
滑動窗口法:其基本原理就是采用不同大小和比例(寬高比)的窗口在整張圖片上以一定的步長進行滑動,然后對這些窗口對應的區域做圖像分類。這樣就可以實現對整張圖片的檢測了。但是這個方法有個缺點,就是並不知道要檢測的目標大小是什么規模,所以你要設置不同大小和比例的窗口去滑動,而且還要選取合適的步長。這樣就會產生很多的子區域,並且都要金國分類器去做預測,這樣需要很大的計算量,所以分類器不能太復雜,因為要保證速度。
具體步驟:對輸入圖像進行不同窗口大小的滑窗進行從左至右,從上到下的滑動。每次滑動的時候對當前窗口執行分類器(分類器事先訓練好),如果當前窗口得到較高的分類概率,則認為檢測到了物體。對每個不同窗口大小的滑窗都進行檢測后,會得到不同窗口檢測到的物體標記,這些窗口大小會存在重復較高的部分,最后需要用NMS方法進行篩選。