姓名:賈軼名? ? 學號:21011210011? ? ?學院:通信工程學院
【嵌牛導讀】目標檢測在現(xiàn)實中的應用很廣泛贫堰,我們需要檢測數(shù)字圖像中的物體位置以及類別叫潦,它需要我們構建一個模型钞艇,模型的輸入一張圖片床绪,模型的輸出需要圈出圖片中所有物體的位置以及物體所屬的類別凉唐。在深度學習浪潮到來之前极颓,目標檢測精度的進步十分緩慢,靠傳統(tǒng)依靠手工特征的方法來提高精度已是相當困難的事购桑。而ImageNet分類大賽出現(xiàn)的卷積神經網絡(CNN)——AlexNet所展現(xiàn)的強大性能畅铭,吸引著學者們將CNN遷移到了其他的任務,這也包括著目標檢測任務勃蜘,近年來硕噩,出現(xiàn)了很多目標檢測算法。
【嵌牛鼻子】計算機視覺
【嵌牛提問】如何理解目標檢測算法——SPP-Net
【嵌牛正文】
針對R-CNN對所有候選區(qū)域分別提取特征元旬、計算量大的問題榴徐,2015年He等提出空間金字塔網絡(Spatial Pyramid Pooling Network守问,SPP-Net)。SPP-Net 在最后一個卷積層和全連接層之間加入空間金字塔結構坑资;使用多個標準尺度微調器對圖像進行分割耗帕,將量化后的局部特征融合生成中層表達,在第五個卷積層的特征圖上生成固定長度的特征向量袱贮,一次性提取特征避免重復特征提取仿便,打破了固定尺寸輸入的束縛。
R-CNN模型與SPPNet模型
? ? ? ?將侯選區(qū)域送到CNN里面提取特征向量時攒巍,因為CNN的輸入圖像需要固定大小嗽仪,而候選區(qū)域的長寬都是不固定的,故需要對候選區(qū)域填充到固定大小柒莉,當對侯選區(qū)域做cropping或者warping操作闻坚,圖片不完整包含物體,都會造成識別精度損失兢孝。?
? ? ? ?SPP-Net的解決辦法是使用“空間金字塔變換層”將接收任意大小的圖像輸入窿凤,輸出固定長度的輸出向量,這樣就能讓SPP-Net可接受任意大小的輸入圖片跨蟹,不需要對圖像做crop/wrap操作雳殊。
空間金字塔池化網絡結構:
R-CNN模型與SPP-Net模型
在R-CNN中,每個候選區(qū)域都要塞到CNN內提取特征向量窗轩,一張圖片有2000個候選區(qū)域夯秃,也就是一張圖片需要經過2000次CNN的前向傳播,這2000重復計算過程會有大量的計算冗余痢艺,耗費大量的時間仓洼。SPPNet提出了一種從候選區(qū)域到全圖的特征映射(feature map)之間的對應關系,通過此種映射關系可以直接獲取到候選區(qū)域的特征向量腹备,不需要重復使用CNN提取特征衬潦,從而大幅度縮短訓練時間。
SPP?Net的實現(xiàn)過程:
(1)SPP?Net把全圖傳入CNN得到全圖的feature map植酥;(2)讓候選區(qū)域與feature map直接映射,得到候選區(qū)域的映射特征向量(這是映射來的弦牡,不需要過CNN);(3)映射過來的特征向量大小不固定友驮,所以這些特征向量傳入SPP層(空間金字塔變換層),SPP層接收任何大小的輸入驾锰,輸出固定大小的特征向量卸留,再傳給FC層。
上圖SPPlayer分成1x1(塔底)椭豫,2x2(塔中)耻瑟,4x4(塔頂)三張子圖旨指,對每個子圖的每個區(qū)域作max pooling,出來的特征再連接到一起喳整,就是(16+4+1)x256(kM)的特征向量谆构。
無論輸入圖像大小如何,出來的特征固定是(16+4+1)x256維度框都。這樣就實現(xiàn)了不管圖像尺寸如何搬素,SPP層的輸出永遠是(16+4+1)x256特征向量。
網絡訓練階段:
論文中將網絡的訓練分為兩種:Single-size和Multi-size魏保。
Single-size的訓練過程:
理論上說熬尺,SPP-net支持直接以多尺度的原始圖片作為輸入后直接BP即可。實際上谓罗,caffe等實現(xiàn)中粱哼,為了計算的方便,GPU檩咱、CUDA等比較適合固定尺寸的輸入揭措,所以訓練的時候輸入是固定了尺度了的。以224*224的輸入為例:
在conv5之后的特征圖為:13x13(a*a)????金字塔層bins: ??n*n
將pooling層作為sliding window pooling税手,則windows_size=[a/n] 向上取整 蜂筹,stride_size=[a/n]向下取整。參數(shù)如下:
Multi-size training的訓練過程:
使用兩個尺度進行訓練:224*224 和180*180
訓練時芦倒,用224*224的圖片訓練一個epoch艺挪,之后用180*180的圖片訓練一個epoch,二者交替進行兵扬。
兩種尺度經過SSP后麻裳,輸出的特征維度都是(9+4+1)x256(kM)。
對于映射關系器钟,論文中給出了一個公式:
假設(x’,y’)表示特征圖上的坐標點津坑,坐標點(x,y)表示原輸入圖片上的點,那么它們之間有如下轉換關系傲霸,這種映射關系與網絡結構有關:(x,y)=(S*x’,S*y’)
反過來疆瑰,我們希望通過(x,y)坐標求解(x’,y’),那么計算公式如下:
其中S就是CNN中所有的strides的乘積昙啄,包含了池化穆役、卷積的stride。
比如梳凛,對于下圖的集中網絡結構耿币,S的計算如下:
論文中使用的是ZF-5:?????????S=2*2*2*2=16? ? ? ? ? ??????? Overfeat-5/7 : ? ? ? ? ? ? ? S =2*3*2 =12