AMiner平臺由清華大學計算機系研發,擁有我國完全自主智慧財產權。平臺包含了超過2.3億學術論文/專利和1.36億學者的科技圖譜,提供學者評價、專家發現、智能指派、學術地圖等科技情報專業化服務。系統2006年上線,吸引了全球220個國家/地區1000多萬獨立IP訪問,數據下載量230萬次,年度訪問量超過1100萬,成為學術搜索和社會網絡挖掘研究的重要數據和實驗平臺。
AMiner平臺:https://www.aminer.cn
今天,和大家分享一篇港中文MMLab發表於NeurIPS 2020的論文
《Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID》,該工作提出自步對比學習框架及混合記憶模型,旨在解決無監督及領域自適應表徵學習中數據無法被充分挖掘的問題。這項工作在無監督的目標重識別任務上顯著地超越最先進技術高達16.7%;領域自適應的目標重識別任務中,在無監督的目標域上超越最先進技術高達5.0%,同時可以提升有監督的源域性能高達6.6%。實驗結果充分證明其廣泛的應用場景及有效性:可被應用於解決無監督學習任務,也可被應用於利用額外無監督數據提升有監督學習的任務。代碼和模型均已公開,方法也被收錄於OpenUnReID代碼庫。
論文連結:https://www.aminer.cn/pub/5eda19d991e01187f5d6db61?conf=neurips2020
https://github.com/yxgeee/SpCLhttps://github.com/open-mmlab/OpenUnReID項目主頁:https://geyixiao.com/projects/spcl.html視頻介紹:https://www.bilibili.com/video/av970104264?zw近年來,在無監督學習的浪潮下,無監督及領域自適應的目標重識別任務也逐漸受到大家的關注,在剛剛過去的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(Intersection 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的第一個版本(https://arxiv.org/abs/2006.02713v1)中找到。該文提出了一個簡單有效的自步對比學習框架,核心思想是利用多種不同形式的類別原型提供混合監督,以實現對所有訓練數據的充分挖掘。雖然本文只在目標重識別任務上進行了實驗,但是提出的混合記憶模型及統一對比損失函數是即插即用的,有很大潛力在其他任務上取得較好的結果,歡迎大家嘗試。
更多NeurIPS論文,可以關注公眾號或者連結直達NeurIPS專題,最前沿的研究方向和最全面的論文數據等你來~
添加「小脈」微信,留言「
NeurIPS」,即可加入【NeurIPS會議交流群】,與更多論文作者學習交流!
閱讀原文,直達「NeurIPS2020」會議專題,了解更多會議論文!