從文章題目來看,Integrated recognition,localization and detection using convolutional network,就是將分類、定位、檢測通過卷積網絡整合在一起。
本文作者展示了:
1、在卷積網絡中使用多尺度的滑動窗
2、介紹了通過訓練深度網絡來預測物體的定位框
3、可以使用一個網絡同時進行多項任務
首先來理一理這分類,定位,檢測的關係。
分類就是猜五個可能的類別,那就聯繫上常說的top5 error了。
定位就是猜五個類別的基礎上加上每個類別可能的bounding box,iou>0.5纔算正確。
檢測任務和定位任務不同,因爲可能出現任何數量的物體,通過mAP平均精度來衡量。
接下來講分類任務:總體來講分類任務使用的網絡和alxnet相似,(這篇論文圖表放置位置有點。。草率。。)
下表是fast版本的網絡
下表是accurcy版本的網絡
兩個版本從層結構上來看相差不大,主要的區別在於卷積、池化核的大小和步長。總的來講,核越小,步長越小,總體的精度就比較高。
下圖就是fast版本第一層和第二層卷積核的可視化結果。
多尺度池化:scales + offset pooling
test時候,在alexnet使用了crop的小技巧,從圖片中提取224x224塊,四個角落加上中間,再進行水平翻轉,一共得到十個圖像,然後通過十個圖像結果投票。
在overfeat中放棄這種方法,原因:
1、忽略很多區域
2、很多重複的計算,造成浪費
3、只適用於單一的尺度
因此作者採用了多尺度+偏置池化的方法,其中多尺度來自於在原圖片上剪裁出不同大小的6張圖片。如下表:
很明顯由於輸入的圖片大小不一,所以卷積部分的輸出特徵數量是不一樣的。
就像下圖中,由於從輸入14x14變成16x16,通過相同的卷積網絡輸出的特徵圖大小不一樣。那作者又是如何連接卷積部分和fc部分呢?作者並沒有將不同分辨率圖片輸出相同大小的feature map,而是使用了6個不同的分類器。如上圖所示。
下圖是單一尺度的偏置池化的例子:
offset設置爲0,1,2,也就是初始池化的位置,也就是偏置offset,推廣到二維空間中,也就是有9個初始池化的位置,然後對每個池化的結果都進行分類,這樣就實現了offset pooling。而對於多尺度,只需要設置多個大小的池化核即可。
下面來看定位問題:
用迴歸層替換之前已經訓練完的分類網絡的分類層,並且訓練網絡使其在所有的位置和尺度上預測bbox,然後將兩個迴歸結合在一起。
待續。。。。