Joint Discriminative and Generative Learning for Person Re-identification

行人重識別之端到端的生成與識別

Joint Discriminative and Generative Learning for Person Re-identification
原文鏈接:http://openaccess.thecvf.com/content_CVPR_2019/papers/Zheng_Joint_Discriminative_and_Generative_Learning_for_Person_Re-Identification_CVPR_2019_paper.pdf

喜歡公佈代碼的文章,這樣對於推動科研的發展才更有意義,也更經得起檢驗。推薦大家看看這篇文章的代碼:
https://github.com/NVlabs/DG-Net

一般的使用GAN做樣本增強的算法都是先訓練GAN,然後再用生成的圖像訓練CNN。這篇文章的貢獻是將兩者結合成了端到端的網絡,與此同時也在一定程度上解決了行人重識別中圖像的結構變化、外觀變化的問題。唯一的缺點是,損失函數的超參數偏多,訓練流程些許繁瑣。

話不多說,直接分析其算法框架:
在這裏插入圖片描述

  • 圖中的編碼器、生成器、判別器都是resnet的結構,在層數上有一些差別。

  • a代表外觀信息,包括服裝、頭髮、揹包、背景等。s代表結構信息,主要指行人動作,具體如下圖。除了最左一列和最上一行的圖像,其餘都是生成的。
    在這裏插入圖片描述

  • x只有下標:表示數據庫中的第i張圖像。

  • x有下標和上標:圖像是生成的,利用了上標圖像的外觀信息,利用了下標圖像的結構信息。看一下框架圖中的c就可以理解。

瞭解了以上內容,接下來詳細說一下算法的內容:

(接下來用a代表外觀特徵向量、s代表結構特徵向量)

生成模型:

類內生成模型:

如(b)所示,提取i的a和s,提取t的a,兩張圖像的label相同,所以利用以上a和s生成的圖像應該是相同的。損失函數如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
前兩者對生成圖像的差異進行懲罰,後者對圖像的label進行監督。通過以上三者,實現了類內生成的監督。主要目的是爲了訓練G。
注意:由於G對於s更加敏感,容易忽略a,所以,提取s的時候只使用灰度圖像。

類間生成模型:

如圖©,作者希望生成的圖像提取出的a和s與生成該圖像的a和s是一樣的,所以,對前後的a和s的差異性進行懲罰。
在這裏插入圖片描述
同樣,對生成圖像的label進行監督。
在這裏插入圖片描述
注意:這裏是希望生成的圖像與生成其使用的a對應的圖像的標籤相同。

同時,要對判別器進行約束:
在這裏插入圖片描述

識別模型:

使用原數據庫訓練一個teacher model,其預測的圖像label爲q。

該部分利用了兩個損失函數:

使用i的a和j的s生成的圖像到底屬於i還是j呢?爲此作者使用了軟標籤,損失函數如下:
在這裏插入圖片描述
K是標籤的種類,p是E得到的圖像標籤概率。使用該公式就實現了軟標籤。

爲了讓模型更加關注除了衣服顏色以外的細節信息,作者假定,使用同一個s不同a生成的都是同一身份,這樣就強行讓模型忽略服裝顏色,從而儘可能關注一些其他信息。損失函數如下所示:
在這裏插入圖片描述

最後將兩大部分的模型聯合訓練,多個損失函數互相補充,實現較好的效果。測試的時候只需要使用Ea和Es,將兩者提取的特徵進行連接,進行識別。

總結:這篇文章的工作量較大、思路也比較新穎。大多數文章使用GAN解決跨數據庫問題,這篇文章使用GAN解決了數據庫內部的種種問題。文章的細節較多,這篇博文適合於輔助該文章的閱讀。還是強烈推薦大家看看文章的代碼。


歡迎討論 歡迎吐槽

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章