1. 程式人生 > >無監督影象檢索 《Unsupervised Part-based Weighting Aggregation of Deep Convolutional Features...》

無監督影象檢索 《Unsupervised Part-based Weighting Aggregation of Deep Convolutional Features...》

基於部件的CNN特徵加權聚合的無監督影象檢索

該文提出了一種利用卷積神經網路中的 filters 作為部件檢測器,採用無監督方式選擇部件檢測器的影象特徵提取方法,屬於特徵聚合方法,用於影象檢索領域。程式碼在:點選開啟連結

特徵聚合方法一般用於具有不同個數的區域性特徵(如SIFT)的影象特徵表示。卷積神經網路的全連線層得到的分類特徵維數是固定的,無需進行特徵聚合,以及其他特徵聚合方法如WoF,VLAD,FV類方法,它們都忽視了物體各個部件的所具有的判別效能力。

卷積神經網路的研究結果表明:some input patterns stimulate the special channels of feature maps of the latter convolutional layers,且該性質被廣泛應用在設計新的網路,SPP-net中不同語義內容啟用不同的 filters,FCN中輸出特徵層不同通道代表畫素畫素的不同類別。本文從中受到啟發,採用特徵圖的某個特殊通道來編碼物體某個部件相對於部件的位置及其畫素的語義類別,並將這種通道稱為“probabilistic proposal”並對該通道進行視覺化。


文章重點不在重現這個效果,而是將該性質用來分別表達物體的各個部件的特徵,從而提出一種新的特徵聚合方法。【我看到這篇文章是被Unsupervised 一詞吸引的】,下面著重分析其unsupervised是怎麼做的。


Unsupervised part detector selection1. 訓練階段。採用預訓練好的模型(如ImageNet VGG16)跑inference,得到所有影象的某個feature map。如上圖所示,假設分類數為C,那麼輸出層一共有C個通道,HxW大小,【根據前面性質,每個通道對應一個類別】,那麼計算出一張影象的每個通道特徵,得到所有影象C個通道後,計算每個通道的平均值及各個通道的方差,將方差降序排列,選出方差最大的前N個通道(why?)作為部件檢測器。從而所有影象的部件可表示為一個 HxWxN 的特徵圖(N<C)。該特徵圖就是“probabilistic proposal”,它是歸一化了的。


2. 預測階段。對於查詢影象,首先提取HxWxC的特徵圖,需要將HxWxC的特徵圖轉化為一個向量。根據前面訓練階段生成的 “probabilistic proposal”,【每個類別物體會對應多個部件】,選出最明顯的部件,方法是對每個HxW特徵圖進行點乘求和(sum pooling)操作,即對來自查詢影象的每個HxW特徵,拿“probabilistic proposal”的每個HxW特徵進行點乘並求和,然後計算N次求和,從而得到NxC的特徵。實際上PWA採用的是weighted sum pooling 操作。

2. 後處理階段。為了減少維度,對於N個C維向量採用l2-normalization, PCA降維以及白化操作,將特徵壓縮到M維。從而查詢影象可以表示為一個M維的向量。

得到的mAP結果如下:


點評:

1. 整篇文章利用CNN的各個通道對物體各部件響應不同的性質,提出probabilistic proposal,然後對未知影象的特徵圖做特徵聚合,避免採用全連線層特徵時忽略物體部件表達能力的問題,感覺利用這個性質設計出一種新演算法挺有意思的。

2. 文章標題聲稱的“unsupervised part-based”是採用有監督訓練得到的CNN特徵圖來做無監督方式的特徵聚合。

3. 個人覺得文章重點在於計算出HxWxN的“probabilistic proposal”,或者說part表示能力,因為實際上物體的part總數會遠遠大於類別總數,從而當設定的part數目少時表達能力不夠,多時維數又太高。