圖一 SPPNet示意圖
一般的網絡(如AlexNet),由于全連接層的存在,要求輸入圖片的尺寸是固定大小的(如224 * 224),這就需要將原始圖片裁剪或形變。但是裁剪出的區域可能不包含整個物體以及形變可能導致我們不想看到的幾何失(如圖一所示),識別準確率就可能因此下降。文中提出的SPP就是為了解決輸入尺度固定的問題。
SPP
圖二 SPP示意圖
如圖二所示,設特征映射m的尺度是a * a,將m分成單金字塔層次的n * n組, 則window = ceil(a / n),stride = floor(a / n)。對于多金字塔層次同理(如圖二就是3層次金字塔—— 1 * 1, 2 * 2, 4* 4)。這樣就能生成固定長度的表征。
多層次池化(multi-level pooling)對物體形變更魯棒。
多尺度訓練
文中多尺度訓練采用的是在一個epoch內采用同一尺度(如224),在另一個epoch使用另外一個尺度(如180)。
圖像識別實驗
圖三 ImageNet 2012 驗證集在標準10-views下的錯誤率
可以看到SPP和多尺度訓練是有助于提高識別準確率的。
圖四 單視角下的ImageNet 2012 驗證集錯誤率,crop用的是圖片中心區域
結合圖三、圖四,可以看到多視角的結果比單視角的結果好。單視角下,全圖比局部好。
目標檢測實驗
RCNN測試的時候對每個RP都提取特征,重復計算很多。使用SPPNet的話一次提取整張圖片特征,將RP投影到pool5,提取對應的RP特征,極大地減少了計算量。
文中寫到,為簡化訓練,只fine-tune全鏈接層。訓練方式和RCNN一樣。
圖五 mAP on PASCAL VOC 2007
圖六 mAP on PASCAL VOC 2007using the same pre-trained modelof SPP (ZF-5)
參考文獻
1.?Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition