論文:https://arxiv.org/abs/1709.09930
代碼:https://github.com/xh-liu/HydraPlus-Net
1 簡介
用於圖像分類的CNN網絡,往往關心的是圖像的全局特徵。而行人屬性分析,有的屬性,如年齡、性別等,需要依據圖像的全局特徵進行判別。但有的屬性,比如頭髮長短、是否在打電話,需要依據低層的局部特徵進行判別。作者提出的HP-Net,使用了多層次的特徵,對全局屬性和局部屬性都進行了較好的描述,取得了較好的行人屬性分析結果。
2 核心思想
HP-Net由兩部分組成,第一部分是一個進行圖像特徵提取的普通CNN網絡,稱之爲M-Net;第二部分AF-Net包含應用於不同網絡層的多個多方向注意力模塊(multi-directional attention module,MDA),AF-Net是在和M-Net共享的基礎卷積網絡的基礎上添加了MDA模塊。M-Net和AF-Net的輸出拼接後,經過GAP和fc層之後的輸出可用於行人屬性識別和行人重識別。
作者使用的是修改後的inception_V2結構做骨幹網絡。
2.1 AF-Net
AF-Net包含兩部分,第一部分是從對應的inception層生成attention map,第二部分是把生成的attention map作爲掩模對所有的特徵進行過濾。如下圖所示是attention map 的示意圖,它從block 2的輸出中產生,影響了三個block的原始輸出。
不同層的特徵生成的attention map的特徵的尺度也是不同的,比如block 1生成的attention map ,表示的都是一些局部信息(邊緣和紋理),而block 3生成的attention map 往往表示的是一些更加全局的語義信息,如下圖(a)所示。並且生成的attention map的不同通道關注的是不同類型的信息,如下圖(b)所示,有的通道更加關注背景區域,有的通道更加關注行人頭部區域,等等。
生成attention map的具體過程是對block i的輸出,應用1*1的卷積、BN和Relu操作得到的,輸出的attention map也是多通道的,這裏作者固定通道數爲8.
attention map生成之後,和相鄰塊的特徵進行逐點相乘的操作,注意這裏和普通的注意力機制不同,普通的注意力機制生成的attention map隻影響當前層的輸出,而這裏作者使其影響了多個輸出。應用attention map之後的輸出稱之爲attention feature map,其繼續在網絡中進行前向運算,最後將各輸出拼接起來得到最後的輸出。
2.2 分階段訓練
HP-Net採用分階段訓練,訓練過程爲:
- 首先訓練M-Net;
- 將M-Net複製三次構建三個MDA module,每個MDA包含三個分支,即臨近的三個不同的inception blocks,依次微調每個blocks,即共有9個blocks需要微調;
- 最後訓練GAP層和FC層;
- 輸出用於行人屬性識別時使用交叉熵損失,用於行人重識別時使用softmax loss。
沒看代碼,還是感覺有點不太理解。
3 實驗結果
作者還提出了新的PA-100K數據集。
行人屬性識別的結果:
行人重識別結果:
對提取的特徵計算餘弦距離計算是否是同一個人。
4 總結
在行人屬性識別中引入注意力機制,並且結合多尺度的特徵進行不同粒度的屬性的判別,的確思路比較好。但就是訓練過程感覺很繁瑣。