FedReID: 聯邦學習在行人重識別上的首次深入實踐
行人重識別的訓練需要收集大量的人體資料到一箇中心伺服器上,這些資料包含了個人敏感資訊,因此會造成隱私洩露問題。聯邦學習是一種保護隱私的分散式訓練方法,可以應用到行人重識別上,以解決這個問題。但是在現實場景中,將聯邦學習應用到行人重識別上因為資料異構性,會導致精度下降和收斂的問題。
資料異構性:資料非獨立分佈 (non-IID) 和 各端資料量不同。
這是篇來自 ACMMM20 Oral 的論文,主要通過構建一個 benchmark,並基於 benchmark 結果的深入分析,提出兩個優化方法,提升現實場景下聯邦學習在行人重識別上碰到的資料異構性問題。
論文地址:
Performance Optimization for Federated Person Re-identification via Benchmark Analysis
開原始碼:https://github.com/cap-ntu/FedReID
本文主要對這篇文章的這三個方面內容做簡要介紹:
- Benchmark: 包括資料集、新的演算法、場景等
- Benchmark 的結果分析
- 優化方法:知識蒸餾、權重重分配
Benchmark
資料集
資料集由9個最常用的 行人重識別 資料集構成,具體的資訊如下:
Datasets這些資料集的資料量、ID數量、領域都不同,能夠有效的模擬現實情況下的資料異構性問題。
演算法
傳統聯邦學習演算法 Federated Averaging (FedAvg) 要求端邊全模型同步,但是 ReID 的分類層的維度由 ID數量決定,很可能是不同的。所以這篇論文提出了只同步部分的模型 Federated Partial Averaging (FedPav).
Federated Partial AveragingFedPav 的每一輪訓練可以通過4個步驟完成:
- Server 下發一個全域性模型到每個 Client
- 每個 Client 收到全域性模型後,將全域性模型加上本地的分類器,用本地資料進行訓練,每個 Client 得到一個 local model
- Client 將 local model 的 backbone 上傳到 Server
- Server 對所有 client 收到的 model 進行加權平均。
完整的演算法可以參考下圖:
Benchmark 結果
通過 Benchmark 的實驗,論文裡描述了不少聯邦學習和行人重識別結合的洞見。這邊著重提出兩點因資料異構性導致的問題。
1. 大資料集在聯邦學習中的精度低於單個數據集訓練的精度
- FedPav: 聯邦學習總模型的精度
- FedPav Local Model: 聯邦學習各邊端模型模型上傳前在各自邊端測試的精度
- Local Training: 基準,每個資料集單獨訓練和測試的精度
Local Training 效果比聯邦學習的效果好,說明這些大資料集沒法在聯邦學習中受益。需要有更好的演算法來提高精度。
2. 聯邦學習訓練不收斂
通過這兩個資料集測試曲線可以看出,因為資料異構性的影響,精度波動較大,收斂性差。
優化方法
採用知識蒸餾,提高收斂
因為資料的異構性的原因,導致參與聯邦學習多方上傳前的本地模型的效能優於雲端伺服器進行模型融合後的模型效能,另外資料異構性還導致了訓練的不穩定性和難收斂的問題。針對這個問題,本方案提出使用知識蒸餾的方法,將參與聯邦學習的多方的本地模型當成教師模型,雲端伺服器的模型作為學生模型,用知識蒸餾的方法更好的將教師模型的知識傳遞到學生模型,以此提高了模型訓練的穩定性和收斂性。完整演算法可以參考下圖:
Knowledge Distillation image-20201016033811427.png下面的實驗結果顯示,採用知識蒸餾(橙線)的訓練收斂效果能夠得到有效提高。
提出權重重分配,提高精度
原演算法在 Server 上做模型整合,採用的是加權平均的方法,用每個 Client 的資料量作為權重,進行加權平均。每個 Client 的資料量差距可能非常大,有的佔比 40%,有的佔比不到 1%,所以該論文提出了進行權重分配。調整聯邦學習模型融合時各方模型更新的權重:給訓練效果越好的邊端,分配更大的權重,在模型融合時產生更大的影響。訓練效果的衡量是通過比較每一方本地訓練前後模型用一批資料做推理產生的特徵的餘弦距離,餘弦距離越大,該訓練產生的變化越大,該分配的權重越大。完整演算法可以參考下圖:
Cosine Distance Weight下表格的實驗結果顯示,權重重分配使所有邊端模型的效能都超過 Local Training,帶來普遍的效能提升。
總結
針對資料隱私問題,這篇論文將聯邦學習應用到行人重識別,並做了深入的研究分析。構建了一個 Benchmark,並基於實驗結果帶來的洞見,提出了使用<u>知識蒸餾</u>和<u>權重重分配</u>的方法來解決資料異構性帶來的效能問題。
演算法細節和更多實驗結果,推薦閱讀原論文和開原始碼。