《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。其中 表示兩個特徵向量的相似度得分。這個 Loss 目的是為了使屬於同 ID 的特徵相似,不屬於同 ID 的特徵不相似。
為了訓練 Generator,作者引入了 Identity Discriminator 和 Pose Discriminator。前者能夠讓 Encoder 提取到的特徵包含與 ID 相關的信息,後者能讓 Encoder 提取的特徵去除與姿態相關的信息。
Identity Discriminator 用於判斷輸入的兩張圖像是不是同一個人。採用的網路結構和 Encoder 的網路結構一樣,也是ResNet50 網路的一部分。但這部分網路的參數不和 Encoder 的網路參數共享權值。原因是作者認為 Encoder 的任務是提取姿態無關的行人特徵,而 Identity Discriminator 的任務是判斷兩張圖像是不是同一個人,任務不同,所以不應該共享參數權值。作者通過實驗也驗證了這個結論。這部分結構如下所示:
在判別階段,如果兩張圖像都是同個人的真實圖像,判別器則會給出高分。如果兩張圖像有一張是生成圖像,則判別器會給出低分。損失函數是一般 GAN 中判別器的損失函數。其中 是輸入圖像。 是與 同 ID,姿態與輸入 Generator 相同的真實圖像。 是生成的圖像。
Pose Discriminator 用於判斷圖像的姿態是否與給定的姿態是一樣的。網路的輸入是一張圖像和姿態圖。具體的操作是將圖像與姿態圖在通道維度上進行拼接。結構圖如下所示:
在判別階段,如果輸入是真實圖像與姿態圖,判別器給出高分。反之,如果是生成圖像和姿態圖,則判別器給出低分。這部分的損失函數為:
此外作者還設計了 Reconstruction Loss 和 Same-pose Loss。前者可以使 Generator 生成的圖像更真實,後者則可以幫助 Encoder 提取的特徵去除姿態信息。在 Reconstruction Loss 中, 和 分別代表姿態相同的生成圖像和真實圖像。如果不存在該姿態下的真實圖像,則這一損失為0。在 Same-pose Loss 中, 和 代表根據ID相同的兩張圖像和同一姿態圖生成的兩張合成圖像。這兩個損失依次為:
模型的訓練分三個階段。
第一個階段訓練孿生網路,即訓練 Encoder E 和 Verification Classifier V 。
第二個階段,固定住 E,V 的參數,訓練 Generator G 和 Identity Discriminator 和 Pose Discriminator 。
第三階段則是整個網路一起訓練。
在第二和第三階段判別器 和 的訓練和網路其他部分的訓練是交替進行的。
最後展示一下這個方法的效果,可以看到 FD-GAN 確實會比普通的孿生網路的效果好一些。
但是提升的效果並不明顯。而且最後在各個數據集上的分數也不是特別高。在2018靠後的會議上有監督 reID 的分數已經刷得很高了。但這篇論文還是有很多值得學習的地方。
使用 GAN 進行特徵分解。提供了一種新的特徵分解的思路。
對姿態信息進行編碼的方式。對比上一篇特徵分解的文章,這篇對姿態信息的編碼更加明顯。
Encoder 和 Identity Discriminator 權值不共享。
分階段的訓練的思路。
推薦閱讀:
Please enable JavaScript to view the comments powered by Disqus.