SPPnet
R-CNNvsSPP net:
SPP net的優(yōu)勢(shì):
1.SPP可以生成固定大小的向量,以此適應(yīng)fc層所要求的固定輸入
2.多個(gè)pooling窗口,可以取出不同層次的特征
3.可以不再限制輸入圖片的尺寸
4.對(duì)于每張圖片只需要跑一遍CNN
SPP net的大體步驟:
1.假設(shè)原圖輸入是224*224,5個(gè)conv layers(以5層卷積為例)卷積出來(lái)的輸出是13*13*256(因?yàn)樽詈笠粚庸?56個(gè)filter),即13*13大小的共256張feature maps;
2.spp一共分3層:
第一層是對(duì)整張feature map做池化(最大、均值等);
第二層是將整張feature map劃分為2*2=4個(gè)塊,分別對(duì)每個(gè)塊做池化;
第三層是將整張feature map劃分為4*4=16個(gè)塊,分別對(duì)每個(gè)塊做池化。
注意!以上步驟每一步的max pooling的window size和stride都不同,具體的計(jì)算公式是:win= a/n(上舍入), str = a/n(下舍入),其中a是原圖經(jīng)過(guò)5層卷積后得到的feature map的大小,如果是第三層那么n = 3,以此類(lèi)推。
舉個(gè)栗子:當(dāng)a = 13時(shí),win = 13/3 = 4.333 ~=5(因?yàn)樯仙崛耄瑂tr = 13/3 = 4.3333 ~=4(因?yàn)橄律崛耄K粤说谌龑拥膍ax pooling的sliding window大小就是5*5,stride就是4*4。以此類(lèi)推。
當(dāng)然了,每一張圖的max pooling也不一樣。
舉個(gè)栗子:當(dāng)輸入圖像大小= 180*180時(shí),經(jīng)過(guò)5層卷積后得到的feature map的大小就是10*10。那么第三層的max pooling的sliding window大小就是a/n = 10/3 = 3.333~=4,stide就是3。以此類(lèi)推。
具體內(nèi)容請(qǐng)參考原文:
當(dāng)輸入是224*224大小的圖像時(shí),5層conv后得到13*13:
當(dāng)輸入是180*180大小的圖像時(shí),5層conv后得到10*10:
通過(guò)以上步驟,最后可獲得1+4+16=21個(gè)池化后的特征。
總的來(lái)說(shuō),在固定spp層數(shù)的前提下,就是根據(jù)圖像的具體大小來(lái)設(shè)計(jì)具體的max pooling。最終保證輸入到fc層的結(jié)果是相同維度大小的。