Invariance Matters: Exemplar Memory for Domain Adaptive Person Re-identification
1、論文:Invariance Matters: Exemplar Memory for Domain Adaptive Person Re-identification
2、代碼: https://github.com/zhunzhong07/ECN
無監督的域自適應(UAD):源域的訓練集有標簽,目標域的訓練集無標簽,在目標域的測試集進行驗證。
由于行人的鏡頭是容易確認的,論文中使用了目標域的行人鏡頭信息。
文章的網絡框架:
Exemplar Memory:利用Exemplar Memory保存訓練樣本的所有特征。
本文提出了三種不變形:
Exemplar-invariance (樣本不變性):每個圖像之間都是不同的,將每個圖像認為是單獨的一類,增大了所有圖像之間的差距。
Camera-invariance(相機不變性):同一類別由多個相機獲得,經過stargan對相機風格進行轉化,他們仍具有相同的標簽。
Neighborhood-invariance(近鄰不變性):由于樣本不變性增大了樣本之間的差距。對于每一個樣本,尋找K個最近鄰的圖像,認定為具有相同標簽。
風格轉化圖像:以market為例,該數據庫有6個攝像機拍攝,對每一幅圖像產生對應的另外5種鏡頭的風格。該數據庫訓練集有12936張圖像,使用starGAN總共產生了64680張圖像。
代碼實現解析:
網絡中的第一個分支簡單使用監督學習進行優化;
網絡中的第二個分支首先初始化所有的特征為0,存儲在Exemplar Memory中。
目標域的數據獲取方式:隨機在目標域中選取batch個索引。獲得對應索引的圖像鏡頭A。以market為例,在6個鏡頭中隨機選取一個鏡頭,如果該鏡頭正好是A,則獲得該圖像,如若該鏡頭不是A,則獲取對應產生的假圖像。最后獲得的batch中既包含了真圖像,也包含了生成的假圖像。
對batch計算損失:
公式(3)計算每幅圖像屬于12936中的每一類的概率。K的維度是4096 * 12936;f()獲得的維度是4096 * 1。然后利用公式(4)求交叉熵損失:
經過幾個epoch之后開始約束近鄰不變:
獲得的k個近鄰圖像如果標簽與目標圖像標簽一直,權重為1,否則為1/k,獲得對應權重的代碼:
然后使用交叉熵計算損失,對應代碼為:
def smooth_loss(self, inputs, targets):targets = self.smooth_hot(inputs.detach().clone(), targets.detach().clone(), self.knn)outputs = F.log_softmax(inputs, dim=1)loss = - (targets * outputs)loss = loss.sum(dim=1)loss = loss.mean(dim=0)return lossExemplar Memory 中的每個特征更新方式:
即每次只更新batch中每個圖像對應的索引,對應的更新代碼:`
總結
以上是生活随笔為你收集整理的Invariance Matters: Exemplar Memory for Domain Adaptive Person Re-identification的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dell r730服务器系统安装后,无法
- 下一篇: 如何做好基于地图的数据可视化?