《FD-GAN: Pose-guided Feature Distilling GAN for Robust Person Re-identification》是港中文和商湯聯合實驗室團隊發表在 NeurIPS2018 的一篇文章。文章提出一種使用生成對抗網路 GAN 提取姿態無關特徵的reID方法。

文章主要的思想就是使用編碼器Encoder提取的行人特徵和姿態特徵,經過生成器Generator得到ID與輸入圖像相同,姿態與輸入圖像姿態不同但與輸入姿態相同的合成圖像。由於合成圖片的姿態改變了,就可以認為Encoder提取到的行人特徵是姿態無關的。如何才能分離出行人特徵中的姿態信息呢?作者通過一系列的損失以及對抗訓練的方式來實現這一目標。

首先模型總結構如下所示:


模型主要框架由編碼器和生成器構成。Image Encoder 是 ResNet50 網路的一部分。輸入圖像經過 Image Encoder 之後得到一個2048維的特徵向量。Pose Encoder 是一個包含5個卷積

層的網路。姿態圖經過Pose Encoder 之後得到了一個128維的特徵向量。需要說明的是姿態圖是一張18通道的圖像,每一個通道描繪一個特徵點的位置分佈,每一通道的值經過處理變成高斯分佈相似的分佈。Generator 是一個包含5個卷積層的上採樣網路。於是2048維的行人特徵和128維的姿態特徵加上256維的高斯雜訊一起輸入Generator,得到生成圖像。這部分結構如下所示:


Verification Loss 的作用是確保 Encoder 能提取到行人ID信息。這部分的結構如下所示:

損失函數就是普通的 Verification Loss。其中 d(x1,x2) 表示兩個特徵向量的相似度得分。這個 Loss 目的是為了使屬於同 ID 的特徵相似,不屬於同 ID 的特徵不相似。


為了訓練 Generator,作者引入了 Identity Discriminator 和 Pose Discriminator。前者能夠讓 Encoder 提取到的特徵包含與 ID 相關的信息,後者能讓 Encoder 提取的特徵去除與姿態相關的信息。

Identity Discriminator 用於判斷輸入的兩張圖像是不是同一個人。採用的網路結構和 Encoder 的網路結構一樣,也是ResNet50 網路的一部分。但這部分網路的參數不和 Encoder 的網路參數共享權值。原因是作者認為 Encoder 的任務是提取姿態無關的行人特徵,而 Identity Discriminator 的任務是判斷兩張圖像是不是同一個人,任務不同,所以不應該共享參數權值。作者通過實驗也驗證了這個結論。這部分結構如下所示:

在判別階段,如果兩張圖像都是同個人的真實圖像,判別器則會給出高分。如果兩張圖像有一張是生成圖像,則判別器會給出低分。損失函數是一般 GAN 中判別器的損失函數。其中 x_{k}是輸入圖像。y_{k}^{} 是與 x_{k} 同 ID,姿態與輸入 Generator 相同的真實圖像。 x_{k} 是生成的圖像。

Pose Discriminator 用於判斷圖像的姿態是否與給定的姿態是一樣的。網路的輸入是一張圖像和姿態圖。具體的操作是將圖像與姿態圖在通道維度上進行拼接。結構圖如下所示:

在判別階段,如果輸入是真實圖像與姿態圖,判別器給出高分。反之,如果是生成圖像和姿態圖,則判別器給出低分。這部分的損失函數為:


此外作者還設計了 Reconstruction Loss 和 Same-pose Loss。前者可以使 Generator 生成的圖像更真實,後者則可以幫助 Encoder 提取的特徵去除姿態信息。在 Reconstruction Loss 中, y_{k}y_{k}^{} 分別代表姿態相同的生成圖像和真實圖像。如果不存在該姿態下的真實圖像,則這一損失為0。在 Same-pose Loss 中, y_{1}y_{2} 代表根據ID相同的兩張圖像和同一姿態圖生成的兩張合成圖像。這兩個損失依次為:


模型的訓練分三個階段。

第一個階段訓練孿生網路,即訓練 Encoder E 和 Verification Classifier V 。

第二個階段,固定住 E,V 的參數,訓練 Generator G 和 Identity Discriminator D_{id} 和 Pose Discriminator D_{pd}

第三階段則是整個網路一起訓練。

在第二和第三階段判別器 D_{id}D_{pd} 的訓練和網路其他部分的訓練是交替進行的。


最後展示一下這個方法的效果,可以看到 FD-GAN 確實會比普通的孿生網路的效果好一些。

但是提升的效果並不明顯。而且最後在各個數據集上的分數也不是特別高。在2018靠後的會議上有監督 reID 的分數已經刷得很高了。但這篇論文還是有很多值得學習的地方。

  1. 使用 GAN 進行特徵分解。提供了一種新的特徵分解的思路。
  2. 對姿態信息進行編碼的方式。對比上一篇特徵分解的文章,這篇對姿態信息的編碼更加明顯。
  3. Encoder 和 Identity Discriminator 權值不共享。
  4. 分階段的訓練的思路。

推薦閱讀:

相關文章