NeurIPS 2020 | 自步对比学习:充分挖掘无监督学习样本
?作者|葛藝瀟
學校|香港中文大學博士生
研究方向|圖像檢索、圖像生成等
本文介紹一篇我們發表于 NeurIPS-2020 的論文《Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID》,該工作提出自步對比學習框架及混合記憶模型,旨在解決無監督及領域自適應表征學習中數據無法被充分挖掘的問題。
這項工作在無監督的目標重識別任務上顯著地超越最先進技術高達 16.7%;領域自適應的目標重識別任務中,在無監督的目標域上超越最先進技術高達 5.0%,同時可以提升有監督的源域性能高達 6.6%。
實驗結果充分證明其廣泛的應用場景及有效性:可被應用于解決無監督學習任務,也可被應用于利用額外無監督數據提升有監督學習的任務。代碼和模型均已公開,方法也被收錄于 OpenUnReID 代碼庫。
論文鏈接:
https://arxiv.org/abs/2006.02713
代碼鏈接:
https://github.com/yxgeee/SpCL
https://github.com/open-mmlab/OpenUnReID
項目主頁:
https://geyixiao.com/projects/spcl.html
視頻介紹:
https://www.zhihu.com/zvideo/1302759986926096384
背景簡介
近年來,在無監督學習的浪潮下,無監督及領域自適應的目標重識別任務也逐漸受到大家的關注,在剛剛過去的 ECCV2020 中這個方向所發表的論文就有十余篇。
目標重識別(Object Re-ID),包括行人重識別、車輛重識別等,旨在跨攝像機檢索和追蹤目標人物或車輛。重識別任務的關鍵之一是學習具有辨識性的特征,并在多樣的條件變化下保持魯棒性。
在如今深度學習盛行的時代,大規模數據集推動了目標重識別任務的快速發展,然而,領域差異及標注數據的高消耗等都成為了部署重識別算法中無法忽視的問題。
領域自適應的目標重識別(Domain Adaptive Object Re-ID)旨在通過源域有標注的數據和目標域無標注的數據進行訓練,從而在目標域上取得較好的性能。這里區分一下一般分類任務上的領域自適應,分類任務上的兩個領域的類別往往有部分或者全部的重疊,而重識別任務上的兩個領域,我們一般認為類別完全沒有重復。
這是由于領域自適應的重識別任務一般應用在:將城市A訓練的重識別模型應用于城市B、將虛擬合成數據訓練的重識別模型應用于真實世界的場景等。在這些場景中,兩個領域間的類別一般很難存在重復。
無監督的目標重識別(Unsupervised Object Re-ID)與上述領域自適應重識別非常相似,問題設置上的唯一區別在于沒有有標簽的源域數據。這里著重區分一下目前很受關注的無監督預訓練(Unsupervised Pre-training)任務,存在兩點主要區別:
1)無監督預訓練任務從網絡隨機初始化開始,無監督重識別任務從預訓練好的網絡開始;2)無監督預訓練的網絡需要經過fine-tune才可以應用在下游任務上,而無監督重識別任務本身可以看作一個無監督的下游任務,經過訓練的網絡可直接部署。
領域自適應重識別任務的研究歷史較無監督重識別任務而言較長一些,但本質上這兩項任務是非常相似的。正如上文所述,領域自適應重識別任務相較于無監督重識別任務而言,只是在問題設置上多出了有標簽的源域數據。
所以,大部分的算法也都可以通用,因為很多領域自適應重識別算法只需要去除源域預訓練的步驟,即可應用于無監督重識別任務上。該論文所介紹的方法在這兩項任務上也都取得了很不錯的結果。
下面,將先以領域自適應重識別任務為例介紹方法,再講解如何應用于無監督重識別任務。
問題與動機
解決領域自適應重識別任務的算法可以分為兩類,偽標簽類和域轉換類,目前偽標簽類可以獲得更好的性能,而偽標簽類中的基于聚類的偽標簽法較為有效,所以本文所基于的 baseline 是基于聚類的偽標簽算法。
目前大部分基于聚類的偽標簽算法(如 SSG、MMT 等)在訓練上分為兩步:第一步,在源域上利用有標簽的源域數據進行有監督的預訓練;第二步,在預訓練的模型基礎上,利用目標域無標簽的數據及其聚類產生的偽標簽進行 fine-tune。
這樣的算法流程目前已經可以獲得相對令人滿意的結果,但他們仍然存在兩點缺陷:
1)在第二步的目標域訓練中忽略了源域數據(僅用于預訓練),但我們認為源域的數據由于具有真實準確的標簽,所以應當被充分利用;
2)在基于聚類的偽標簽法中,往往沒有用到全部的目標域無標簽數據,因為基于密度的聚類(如 DBSCAN 等)本身會產生聚類離群值(outlier),這些聚類離群值由于無法分配偽標簽,所以被丟棄,不用于訓練。但我們認為,這樣的聚類離群值往往正是那些值得挖掘的困難訓練樣本。尤其在訓練的早期,往往存在大量的聚類離群值,若簡單丟棄它們,訓練樣本將大幅減少。
所以如何合理地挖掘所有可用的信息是提升性能的關鍵。如上圖所示,我們提出在訓練中使用全部的源域數據和目標域數據,并利用一個混合記憶模型(Hybrid Memory)來提供監督:對于源域數據而言,監督是他們真實的標簽;
對于目標域聚類內的數據而言,監督是他們的聚類標簽;對于目標域的聚類離群值而言,他們每張圖本身被看作一個單獨的類,所以監督是實例級的標簽。我們將所有的源域類、目標域聚類、目標域每個聚類離群值實例看成平等的類別。
自步對比學習框架
以下是我們所提出自步對比學習(Self-paced Contrastive Learning)框架,包括一個圖像特征編碼器(Encoder)和一個混合記憶模型(Hybrid Memory)。
核心是混合記憶模型在動態變化的類別下所提供的連續有效的監督,以統一對比損失函數(Unified Contrastive Loss)的形式監督網絡更新,實現起來非常容易,且即插即用。下文將具體介紹。
統一對比損失函數
類別原型(Class Prototype)可以理解為該類別中較為有標志的特征,例如無偏分類器中的權重(Weights)。
在這里,我們使用源域真實類別的類質心(Class Centroids)作為源域數據的類別原型 {w},使用目標域聚類的質心(Cluster Centroids)作為聚類內的目標域數據的類別原型 {c},使用目標域聚類離群值的實例特征(Outlier Instance Features)作為無聚類的目標域數據的類別原型 {v}。
我們所提出的混合記憶模型可以實時提供這三種類別原型以作訓練監督,后文將具體介紹這三種類別原型的更新過程。
對于每一組輸入的 mini-batch,同時包含源域數據和目標域數據(我們在編碼器中使用 Domain-specific BNs 來消除不同領域數據間的域差異),他們需要與上述三種類別原型進行比較。所以我們提出統一對比損失函數(Unified Contrastive Learning):
該損失函數可以使得每個訓練樣本靠近它所屬于的類別(包含源域真實類、目標域聚類、目標域無聚類實例),而遠離其他類別。
舉例來說,對于一個來自源域的樣本,其對應的正面原型(Positive Prototype)則是它真實類別所對應的質心(Class Centroids);對于一個來自目標域的樣本,若其在聚類內,則正面原型為其所對應的聚類質心(Cluster Centroids),反之,若其不在聚類內,為聚類離群值,則正面原型為該離群值所對應的實例特征(Outlier Instance Features)。
其實,我們所設計的“混合記憶模型(Hybrid Memory)+統一對比損失函數(Unified Contrastive Loss)”與大家常用的“分類器(Classifier)+交叉熵損失函數(Cross-entropy Loss)”在工作機理上非常相似,可以簡單的認為混合記憶模型是非參數化(Non-parametric)的分類器。
那么,為什么我們不用普通分類器來完成這一任務呢?這是由于目標域的聚類及聚類離群值在訓練過程中動態變化(一般每個 epoch 前更新),無法使用固定的聚類 ID 及離群值實例 ID 訓練分類器。如若在每次更新完 ID 后需要重置分類器,分類器由于無法連續更新,會導致性能較差。
有同學會問,以前的算法(如MMT),每個 epoch 重置分類器依然訓練效果很好,這是為什么?這是因為這些算法不使用聚類離群值進行訓練。
試想,將每個聚類離群值也看做單獨的類加入分類器,而每個 epoch 只能遍歷到該類對應的樣本一次(因為一個離群值是一個類),那么,在類樣本數如此不平均的情況下,分類器幾乎得不到有效的訓練,便會被重置。
我們所提出的統一對比損失函數與自監督任務(如 MoCo、SimCLR 等)中常用的對比損失函數最主要的區別在于,我們同時考慮了三種不同的類別原型,而以前的對比損失函數只考慮實例級的類別原型。
他們將所有樣本看作獨立的類,進行實例區分(Instance Discrimination)訓練,這樣的算法很大程度上忽略了類內(Intra-class)關系,也就是同一 ID 的不同圖像間的聯系,故以前的對比損失函數不適用于重識別任務。
混合記憶模型
上文中,我們提到混合記憶模型(Hybrid Memory)實時提供三種不同的類別原型,那么,這三種類別原型是如何動態地在混合記憶模型中連續更新變化的呢?
我們提出使用動量更新(Momentum Update),想必這個詞對大家來說并不陌生,在 MoCo、Mean-teacher 等模型中常有見到,簡單來說,就是以“參數=(1-動量)x新參數+動量x參數”的形式更新。在這里,我們針對源域和目標域采取不同的動量更新算法,以適應其不同的特性。?
對于源域的數據而言,由于具有真實的類別,我們提出以類為單位進行存儲。這樣的操作一方面節省空間,一方面在實驗中也取得了較好的結果。我們將當前 mini-batch 內的源域特征根據類別算均值,然后以動量的方式累計到混合記憶模型中對應的類質心上去,詳見下圖。
對于目標域的數據而言,我們提出全部以實例為單位進行特征存儲,這是為了讓目標域樣本即使在聚類和非聚類離群值不斷變化的情況下,仍然能夠在混合記憶模型中持續更新(Continuously Update)。具體而言,我們將當前 mini-batch 內的目標域特征根據實例的index累計到混合記憶模型對應的實例特征上去。
那么,如何獲得目標域的聚類質心及離群值實例特征呢?我們在混合記憶模型中,將同一聚類 ID 的特征做平均,即可獲得聚類質心;而離群值的實例特征則直接從混合記憶模型中提取剩下的實例特征即可,如下圖。
由簡入難的自步學習
我們發現,由于聚類和聚類離群值都被看作平等且獨立的類,所以聚類的可靠性對訓練的影響至關重要。由于網絡在訓練的一開始對于圖像的辨別性較差,聚類的噪聲也較大。
所以我們借鑒自步學習(Self-paced Learning)的思想,先從最可靠的聚類開始,再逐步增加聚類,由簡入難。我們提出了一個聚類可靠性評價標準(Cluster Reliability Criterion),保留可靠的聚類,而將不可靠的聚類拆解回無聚類的離群值實例。
我們所提出的聚類可靠性評價標準分為聚類獨立性(Cluster Independence)和聚類緊湊型(Cluster Compactness)。
聚類獨立性(Cluster Independence)體現為一個可靠的聚類應當具有良好的類間距離,通俗點來說,不能和附近的聚類“如膠似漆”。我們提出,放寬聚類的標準,例如 DBSCAN 中的最小類內距離,此時,如果該聚類與周圍的聚類融合成了一個大聚類、或者吸收了附近的離群值,那么我們認為,該聚類的獨立性不太好。
我們使用一個IoU(Interp over Union)公式來計算聚類的獨立性。
聚類緊湊型(Cluster Compactness)體現為一個可靠的聚類內的樣本應該相互靠近,具有良好的類內距離。類似的,我們提出,縮緊聚類的標準,此時,如果該聚類被拆解成了多個小聚類、或者拆出了一些聚類離群值,那么我們認為,該聚類的緊湊型不太好。
我們使用另一個 IoU 公式來計算聚類的緊湊型,如上圖所示。
直觀地說,該聚類可靠性評價標準的出發點在于,一個可靠的聚類應當在多尺度的聚類環境下保持穩定。從下圖訓練的統計中可以看出,使用了聚類可靠性評價標準的模型(紅色線)相比較于未使用的模型(藍色線),無論是在聚類的數量還是質量上,都離真實類別更近。
算法流程
以上,我們介紹了核心的模塊,我們梳理一下具體訓練流程:
初始化(Initialization):圖像編碼器(Encoder)的初始化一般使用 ImageNet Pre-trained Weights,混合記憶模型(Hybrid Memory)的初始化使用初始的編碼器對所有的樣本進行一次前向計算。
聚類和聚類離群值:在每個 epoch 前進行聚類,并根據聚類可靠性評價標準(Cluster Reliability Criterion)進行聚類的篩選,僅保留可靠的聚類,其余樣本均視作聚類離群值。
網絡和混合記憶模型的更新:在每個 iteration 中,首先利用編碼器對 mini-batch 的樣本進行特征編碼,然后利用統一對比損失函數(Unified Contrastive Loss)進行網絡的反向傳播更新,最后利用編碼的特征以動量更新(Momentum Update)的方式更新混合記憶模型(Hybrid Memory)。
無監督重識別上的應用
在一開始曾提到,該方法也可以被有效利用在無監督重識別任務上,只需要將混合記憶模型和統一對比損失函數中有關源域的部分去掉即可。
無監督重識別任務上的自步對比學習框架如下:
對應的統一對比損失函數如下:
實驗
由于自步對比學習框架中可以同時訓練源域和目標域的數據,所以訓練是 one-stage 的,無需單獨的源域預訓練步驟。實驗中,我們針對多個真實及虛擬合成數據集進行了實驗,在行人重識別和車輛重識別任務上都測試了該方法的有效性。
領域自適應任務中,我們在無監督的目標域上均超越先前算法,在 PersonX->MSMT17 的任務上領先高達 5.0% 的 mAP,這是由于在“虛擬合成->真實”的遷移任務中,由于聚類噪聲較大,產生的聚類離群值較多,所以我們所提出的充分挖掘所有樣本的方案所帶來的優勢將更為突出。
除此之外,一項有趣的發現,VehicleID->VeRi-776 與 VehicleX->VeRi-776 在目標域上獲得幾乎相似的性能,這說明,在未來,隨著領域自適應算法的不斷升級,可能我們再也不需要人為標注的源域數據來作為輔助了,可以使用虛擬合成的數據予以代替。
以前的算法由于在目標域的訓練中忽視了源域數據,所以會無法避免地忘記源域的信息,而我們提出的方法對源域和目標域數據進行了聯合訓練,在目標域性能提升的同時,也提升了有監督的源域性能。
可以看到,在 MSMT17-Market-1501 的遷移訓練中,我們利用 Market-1501 的無標簽數據大幅提升了 MSMT17 上的有監督訓練性能(+6.6% mAP)。這意味著,我們所提出的算法可以被用于利用無標簽數據提升有監督訓練的任務。
同樣,在無監督重識別任務上,我們大幅領先已有的算法,在 Market-1501 的 benchmark 上領先高達 16.7% 的 mAP。我們也將 MoCo 在無監督重識別任務上進行了復現,正如我們之前所介紹了,這類無監督預訓練任務的算法并不適用于無監督的重識別任務,因為他們將所有的樣本視作獨立的類,忽視了重識別任務中最重要的類內類間關系。
再強調一下,MoCo 這類算法適用于無監督預訓練任務,在應用于下游任務上時需要 fine-tune,而無監督重識別任務本身是一個下游任務。
有細心的同學可能會發現,剛剛展示的結果中沒有涉及 DukeMTMC-reID 數據集的實驗,這是因為 DukeMTMC-reID 已經官方下架,在 AC 的要求下,我們需要在論文的最終版本中刪去所有有關 DukeMTMC-reID 的實驗結果。
但是 DukeMTMC-reID 是行人重識別相關任務中常用的數據集,所以為了方便大家未來進行算法的調試和比較,我在這里也簡單展示一下 DukeMTMC-reID 相關的結果,更多的結果大家可以在我們 arXiv 的第一個版本(arxiv.org/abs/2006.0271)中找到。
總結
該文提出了一個簡單有效的自步對比學習框架,核心思想是利用多種不同形式的類別原型提供混合監督,以實現對所有訓練數據的充分挖掘。雖然本文只在目標重識別任務上進行了實驗,但是提出的混合記憶模型及統一對比損失函數是即插即用的,有很大潛力在其他任務上取得較好的結果,歡迎大家嘗試。
這次 NeurIPS 的評審過程相當刺激,從初審的 7663 到終審的 5553,reviewers 的降分起源對 DukeMTMC-reID 數據集的討論,最終這份工作也經歷了 NeurIPS 今年特有的 Ethics Review,起起落落,最終被 AC 撈起,感恩。可見,目前學術界對于數據集的隱私保護規范要求也越來越嚴格。
推薦大家在以后領域自適應重識別工作中考慮采用合成數據集,如 PersonX、VehicleX 等,不僅可以避免不必要的麻煩,并且由于合成數據和真實數據的域差異較大,算法上可以提 shua 升 fen 的空間也會較大。
分類任務及分割任務上的領域自適應往往采用合成數據作為源域,且這次 VisDA-2020 的比賽中,源域采用的也是合成數據集 PersonX,可見合成數據到真實數據的自適應任務備受關注。
我近期將會給一個 talk,總結我這一年半以來在在領域自適應及無監督重識別方向上所做的研究,屆時歡迎大家關注。
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的NeurIPS 2020 | 自步对比学习:充分挖掘无监督学习样本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Transformer和BERT,在
- 下一篇: KDD 2020 开源论文 | 图神经