天天看點

SPP-Net

一、簡介 主要貢獻就是添加了金字塔層,可以應對不同大小的輸入。 二、過程 1、首先通過選擇性搜尋,對待檢測的圖檔進行搜尋出2000個候選視窗。這一步和R-CNN一樣。 2、 特征提取階段。這一步就是和R-CNN最大的差別了,這一步驟的具體操作如下:把整張待檢測的圖檔,輸入CNN中,進行一次性特征提取,得到feature maps,然後在feature maps中找到各個候選框的區域,再對各個候選框采用金字塔空間池化,提取出固定長度的特征向量。而R-CNN輸入的是每個候選框,然後在進入CNN,因為SPP-Net隻需要一次對整張圖檔進行特征提取,速度會大大提升。 3、最後一步也是和R-CNN一樣,采用SVM算法進行特征向量分類識别以及對候選框進行回歸等操作。

三、詳解(下面的部落格講解的很清楚映射的過程) 這兩個一樣主要都是,原圖的小區域映射到特征圖上的方法 1、 https://zhuanlan.zhihu.com/p/24780433 2、 http://hellodfan.com/2017/09/30/%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B%E8%AE%BA%E6%96%87-SPPNet/

四、細節 SPPnet用了兩種實作尺度不變的方法:  1. brute force (single scale),直接将image設定為某種scale,直接輸入網絡訓練,期望網絡自己适應這個scale。  2. image pyramids (multi scale),生成一個圖像金字塔,在multi-scale訓練時,對于要用的RoI,在金字塔上找到一個最接近227x227的尺寸,然後用這個尺寸訓練網絡。  五、疑問 具體的訓練、測試過程部落格講解的還不是很清楚,後面再看? 訓練的時候加不加spp層。因為訓練的時候圖檔的尺寸是固定的,有池化層的話,backword怎麼通過池化層的? 為什麼SPPnet不能更新spatial pyramid pooling層前面的卷積層,而隻能更新後面的全連接配接層?   SPP中的微調隻更新spp層後面的全連接配接層,對很深的網絡這樣肯定是不行的。在微調階段談及SPP-net隻能更新FC層,這是因為卷積特征是線下計算的,進而無法再微調階段反向傳播誤差。?

繼續閱讀