In-depth exploration of attribute information for person re-identification

行人重識別之屬性信息

In-depth exploration of attribute information for person re-identification

這次分享一篇自己的文章,這篇文章針對了行人的屬性信息。

首先,我定量分析了屬性信息的重要性。
假設,我們已知某一類的屬性標籤,用該標籤直接輔助baseline進行識別。
如下圖,性能都會有不小的提高。
進一步,我使用所有類別的屬性(圖中的sum)對baseline進行輔助。
可以看出,模型的精度大幅提升。
這證明了屬性信息有很大的價值。
在這裏插入圖片描述
所以,正如標題所言,本文的主要內容是研究如何充分利用屬性信息。

先介紹一下主體框架:
如下圖,藍色部分IRN負責識別行人身份,可以理解爲baseline
紅色部分ARN負責識別行人屬性,作爲輔助
ARN中有多個網絡,每一個網絡負責一類屬性的識別
假如有N個屬性,那麼算上IRN,總共就有N+1個識別網絡
最後,根據每個網絡得到的特徵的歐氏距離Mat,進行加權相加,得到最終的結果
框架非常簡單,下文主要介紹一些細節,對於大家或許有幫助。
在這裏插入圖片描述

hard pair loss

如下圖,兩個身份不同,但是屬性全部一致的兩個人非常相似
我們視其爲hard pair
在網絡中對hard pair的相似度進行懲罰,迫使網絡能夠提取更高級的語義特徵
從而通過這一個點提高模型的魯棒性
在這裏插入圖片描述
loss公式如下,其實和triplet loss是一樣的,只不過樣本不同。
其中xa、xb是一個hard pair,x和xa是同一個身份。
在這裏插入圖片描述

採樣器
可以想到,hard pair是比較少的
如果隨機採樣,很難每個batch size都有hard pair
於是提出瞭如下采樣器:
batchsize=M*N
採集M個身份,每個身份N個樣本,保證其中2個身份是hard pair
那麼根據排列組合,一個batchsize中會有N^2個hard pair
這樣增強了hard pair loss的作用
在這裏插入圖片描述

訓練方法

baseline一般都是先在imagenet上進行預訓練
所以我們做行人重識別從某種角度上也是將模型從一個域(imagenet)遷移到另一個域(行人數據庫)
對於預訓練模型,直接對它進行triplet loss 和 hard pair loss進行訓練,是否拔苗助長呢?
所以,我選擇慢慢來,具體如下圖:
在訓練過程中,先用簡單的損失函數,再一點點加難的損失函數,有利於模型的訓練。
在這裏插入圖片描述
關於ARN

爲何不直接使用模型識別出的屬性標籤而使用提取的特徵呢?
如下,因爲屬性識別的精度不高
在這裏插入圖片描述
在這裏插入圖片描述
識別精度不高有如下原因:
屬性標籤本身標的就不是很準
相同屬性之間也會差異很大,後文會提到
同一類屬性,數據量差異巨大,如下圖
有些屬性直接被遮擋了,很難識別
在這裏插入圖片描述
所以,使用了各類屬性的特徵向量
再與IRN中的特徵向量加權相加

ARN中的triplet loss
如下圖,同一類屬性的差別其實非常大的
這也是屬性識別準確率不高的原因
強行將如下所示的屬性識別爲一類,很難,也沒必要
所以在ARN的triplet loss中,positive pair必須滿足如下條件:
屬性相同且是同一個人
這樣,positive pair的屬性纔會具有很高的相似性,網絡才能真正學到東西
在這裏插入圖片描述

最後,上兩張效果圖
在這裏插入圖片描述
在這裏插入圖片描述

總結:希望文中的tricks能夠幫助到大家。


歡迎討論 歡迎吐槽

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