SPP-Net目標檢測算法深度剖析

目錄

一、引入SPP-Net

二、SPP-Net簡介

三、網絡架構

四、總結


論文地址 :https://arxiv.org/abs/1406.4729

一、引入SPP-Net

        爲何們猛然間對SPP-Net起了好奇之心呢?因爲在學習R-CNN系列算法的時候,總有資料提到SPP-Net(Spatial Pyramid Pooling-Net)算法(其實是一種深度學習的網絡架構),在處理完R-CNN系列算法之後,打算來看看,這個SPP-Net到底是個什麼來頭,如果大家對目標檢測算法有點興趣,可以逛逛我的R-CNN系列和YOLO系列算法的博客。

二、SPP-Net簡介

        首先要知道SPP-Net是一個解決目標檢測問題的算法,其依舊屬於two-stage的目標檢測算法,也就是先找出候選區域(有相應的成熟的算法),之後在進行分類和迴歸問題。

        在我學習完Fast R-CNN之後,我發現SPP-Net中的很多算法思想和Fast R-CNN好像,然後我就看了一下兩篇論文的發佈時間,SPP-Net:2014.6.8,Fast R-CNN:2015 4.30,然後我似乎明白了什麼(吸取了SPP-Net的思想)。

三、網絡架構

這裏寫圖片描述
圖一:SPP-Net網絡架構

        首先,講解一下這個網絡是幹什麼的,用來提取圖像特徵的,很多人會認爲這個網絡的結果直接出判斷種類結果以及預測框,其實不是的,這個網路架構的輸出是一個分類結果,然後我們提取其全連接層,來作爲這個圖像的特徵向量來代替原圖的,這個理解很重要。那麼接下來就介紹一下這個網絡的流程,首先得到一個圖片, 然後將圖片經過一系列卷積操作然後得到feature maps,然後將feature maps進行三種尺度的池化,相當於將feature maps分割成1x1、2x2、4x4大小的網格,每個網格內的值是網格內所有單元的加和平均(這個就是ROI Pooling),以此來確保輸入到全連接層的維度是固定的,然後將這些向量連接,但是不是說只有16+4+1維度,因爲feature maps,這裏我用的是複數,表明通道數不只是1,像圖一中的通道數爲256,所以拼接成的向量維度是(16+4+1)x 256。然後通過全連接層6、7,然後再連接一個softmax層,也就是分類層。這樣一個圖像的分類網絡就建好了,那麼我們需要這個網絡中除了輸出層以外的部分來代表一個圖像的特徵提取。

        之後,在訓練好這個特徵提取器(ZF-5網絡架構,文章用到的)之後就可以進行目標檢測了,首先通過候選區域生成算法得到2000個候選區,然後將整張圖片resize大小爲MIN(w, h),之後進入ZF-5生成feature maps,然後定義了4個等級的spatial pyramid分別是1x1、2x2、3x3、6x6(既然這裏是四個等級的池化,那麼在訓練分類器的時候也要是四個,但是上面是爲了舉例設置了三種池化窗口),然後將候選區映射到feature maps上,之後將SPP應用在每個候選區中,並拼接成特徵向量,之後通過全連接層,然後得到最終的特徵向量。如下圖二

圖二:SPP-Net用於目標檢測

        然後我們需要訓練多個(這裏到底多少個需要根據物體到底有多少個種類來定義)個基於SVM的二分類器,用來判斷這個區域到底是背景還是存在物體,數據集如何構建呢?

  • Ground Truth的區域經過特徵提取之後形成特徵向量推入SVM中,其標籤爲1(正例)
  • 候選區域與Ground Truth的IoU小於30%的提取的特徵,標記爲0(負例)
  • 在負樣本中,如果一個新加入的負樣本與已經加入的負樣本的IoU大於70%則不將其加入到負樣本中

         這樣我就訓練好了多個SVM的二分類器,用來給每一個類別去打分,然後選取分數大於0.3的進入候選區進入到後面的NMS算法截斷,當然在進入NMS之前需要預測一下回歸框的位置,這個部分和R-CNN是一致的,就是說對候選框的中心進行一定比例的位移,將寬高進行一定比例的放縮,目標是爲了和Ground Truth更加的貼近。論文中介紹了兩種方法,圖三是直接預測位置,圖四是預測縮放平移比例。

圖三:方法一
圖四:方法二

四、總結

        如果直接比較SPP-Net和R-CNN的話,我感覺可比性不大,但是Fast R-CNN和SPP-Net卻可以擦出不少的火花,而且我感覺SPP-Net的很多思想被Fast R-CNN進行引用

  • 對於使用成熟的卷積神經網絡對圖像進行特徵提取,有一點不同,在訓練之後的全連接層的時候,SPP-Net是沒有微調特徵提取的卷積層的,但是Fast R-CNN進行了微調,這也是爲啥Faster R-CNN的獨特的訓練流程的原因(爲了更好的融合RPN網絡的Fast R-CNN網絡)
  • 當然Fast R-CNN和SPP-Net也有很多相似的部分,爲了節省時間,對於候選區域沒有在原圖中直接選取而是在feature maps上進行選取
  • 二者都使用了ROI Pooling,也就是說將一個區域通過網格的區域池化,進行特徵長度的限定,進而更好的連接全連接層
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章