行人重識別:共享與獨有特征分離的遷移學習實踐)
1. 跨模態(tài)行人重識別到底在解決什么實際問題跨模態(tài)行人重識別英文叫 Cross-modality Person Re-identification簡稱 Cross-modality ReID是計算機視覺里一個非常具體、也非常棘手的任務。它的核心場景是這樣的假設你手頭有一段可見光攝像頭拍到的行人畫面想從另一組紅外攝像頭拍攝的圖庫里把同一個人找出來。注意這里不是簡單的“以圖搜圖”因為兩組圖像的成像原理完全不同——可見光圖像依賴環(huán)境光照反射能拍到顏色、紋理這些細節(jié)紅外圖像依賴熱輻射畫面是灰度的沒有顏色信息紋理也弱得多。你讓一個模型去匹配這兩種模態(tài)下的同一個人它面對的困難不只是“同一個人換了角度、換了姿態(tài)”而是“同一個人在兩套完全不同的成像體系下看起來像兩個物種”。這個任務為什么值得研究因為它有非常直接的現(xiàn)實需求。夜間或者光線極差的環(huán)境下普通可見光攝像頭基本失效但紅外攝像頭可以正常工作。很多安防場景、園區(qū)管理、夜間巡檢都會同時部署可見光和紅外兩套設備。如果系統(tǒng)只能做同模態(tài)檢索那可見光攝像頭拍到的目標就沒法在紅外圖庫里查反之亦然??缒B(tài) ReID 要做的就是打通這兩套體系讓檢索不再受模態(tài)限制。但這里有一個根本性的矛盾可見光圖像和紅外圖像之間既有“共享”的信息也有“各自獨有”的信息。共享信息是什么是行人的體型、輪廓、步態(tài)相關的整體結構、大致的身高比例。這些東西不管在哪種模態(tài)下都存在是跨模態(tài)匹配的基礎。獨有信息是什么可見光圖像里的衣服顏色、背包花紋、鞋子款式紅外圖像里某些熱輻射分布特征——這些信息在另一個模態(tài)里根本不存在你沒法直接拿來匹配。問題在于很多模型在訓練時會把這兩種信息混在一起學結果就是模型可能過度依賴顏色這種“只在可見光里有效”的線索一旦切換到紅外模態(tài)這些線索全部失效性能斷崖式下跌。Shared-Specific Feature Transfer 這個思路就是針對這個矛盾提出的。它不滿足于讓模型“囫圇吞棗”地學一個混合特征而是明確地把特征拆成共享部分和獨有部分然后設計機制讓共享特征真正跨模態(tài)對齊同時讓獨有特征在模態(tài)內部發(fā)揮作用。這個“拆開再對齊”的思路比直接端到端硬學要精細得多也是這篇論文最值得細讀的地方。我讀這篇論文的時候最大的感受是它沒有停留在“堆模塊、刷點”的層面而是在認真回答一個結構性問題——跨模態(tài)匹配到底應該匹配什么、忽略什么。這個問題的答案直接決定了模型的上限。下面我會從任務本質、特征解耦邏輯、共享特征對齊機制、獨有特征的處理方式、訓練策略、實驗設計幾個角度把這篇論文的核心內容拆開講清楚。適合正在做 ReID 方向、或者對多模態(tài)特征學習感興趣的人參考。2. 可見光與紅外之間的模態(tài)鴻溝為什么直接匹配會失效2.1 模態(tài)差異不是簡單的“顏色變灰度”很多人第一次接觸跨模態(tài) ReID會下意識覺得紅外圖像不就是可見光圖像去色再加點噪聲嗎如果真是這樣那直接把可見光圖像轉成灰度再和紅外圖像做匹配就行了。但實際完全不是這么回事??梢姽鈭D像的像素值反映的是物體表面對不同波長光線的反射率顏色信息本質上來自材質和光照的交互。紅外圖像的像素值反映的是物體表面的熱輻射強度跟材質、溫度、環(huán)境散熱條件有關。一個人穿黑色棉衣和白色棉衣在可見光下顏色差異巨大但在紅外圖像里如果兩件衣服的保溫性能接近熱輻射分布可能非常相似。反過來一個人剛運動完體表溫度分布不均勻紅外圖像里會出現(xiàn)可見光下完全看不到的熱斑。這意味著兩種模態(tài)之間的差異不是線性變換能描述的它們背后的物理量根本不同。更麻煩的是紅外圖像的分辨率通常低于可見光圖像細節(jié)紋理損失嚴重??梢姽庀履芸辞宓谋嘲?、鞋子logo在紅外圖像里可能只剩一團模糊的亮斑。如果模型在訓練時過度依賴這些高頻紋理跨模態(tài)泛化能力就會很差。2.2 共享信息與獨有信息的糾纏是性能瓶頸跨模態(tài) ReID 的難點可以概括為一句話模型需要學會“什么該跨模態(tài)對齊什么該模態(tài)內保留”。但普通訓練方式不會告訴模型這個邊界在哪里。假設我們用一個共享的骨干網(wǎng)絡提取特征然后用一個分類損失去訓練。模型為了降低損失會盡可能利用所有可用的判別信息。在可見光分支里顏色是最容易學的判別線索——紅色上衣和藍色上衣的特征很容易分開。模型會傾向于把大量容量分配給顏色相關的特征維度。但到了紅外分支顏色信息不存在這些維度就變成了噪聲。更糟糕的是共享骨干網(wǎng)絡會被可見光分支的梯度主導導致紅外分支學到的特征也被拉向顏色敏感的方向最終兩個模態(tài)的特征空間無法對齊。這就是為什么很多樸素方法在跨模態(tài)設置下性能大幅下降。不是模型容量不夠而是它學到的特征里混入了太多“模態(tài)獨有且不可遷移”的成分。Shared-Specific Feature Transfer 的核心動機就是要把這部分成分顯式地分離出來避免它們干擾跨模態(tài)對齊。2.3 一個生活化類比雙語翻譯中的“文化專有詞”你可以把這個任務類比成中英翻譯。有些詞是兩種語言都有的概念比如“水”“跑”“大”這些可以直譯對應共享特征。但有些詞是某種文化獨有的比如中文里的“緣分”、英文里的“serendipity”你硬翻過去就會丟失原意對應模態(tài)獨有特征。一個好的翻譯系統(tǒng)應該先把可直譯的部分準確對應再把不可直譯的部分用注釋或意譯處理而不是把兩者混在一起硬翻??缒B(tài) ReID 里的共享-獨有特征分離邏輯完全一樣。如果模型不區(qū)分這兩類信息就會像把“緣分”硬翻成“destiny”一樣表面上有個對應實際上語義已經(jīng)偏了??缒B(tài)匹配要的是“同一個人”的語義對應而不是像素級的強行對齊。3. Shared-Specific Feature Transfer 的整體架構拆解3.1 雙流骨干與特征分離的基本設計這篇論文的架構可以理解為“雙流提取 顯式分離 跨模態(tài)遷移”三段式。輸入是一對圖像一張可見光、一張紅外可能來自同一個人也可能來自不同人。骨干網(wǎng)絡通常采用 ResNet-50 這類結構但為了處理紅外單通道輸入第一層卷積會做相應調整。兩個模態(tài)各自經(jīng)過一個分支得到初始特征圖。關鍵步驟在于作者沒有直接拿這些特征去做匹配而是設計了一個特征分離模塊把每個模態(tài)的特征拆成兩部分共享特征和獨有特征。共享特征的目標是捕捉跨模態(tài)一致的信息比如人體輪廓、整體姿態(tài)、大致體型比例。獨有特征則保留模態(tài)特有的信息比如可見光里的顏色分布、紅外里的熱輻射模式。這個分離不是靠人工標注告訴模型“哪些維度是共享的”而是通過損失函數(shù)約束實現(xiàn)的。具體來說共享特征會被送入一個跨模態(tài)對齊模塊要求同一身份在不同模態(tài)下的共享特征盡可能接近獨有特征則被約束為在模態(tài)內部具有判別力但不參與跨模態(tài)匹配。這樣模型在訓練中會逐漸學會把可遷移的信息壓縮到共享子空間把不可遷移的信息隔離到獨有子空間。3.2 為什么分離比混合更有效梯度視角的解釋從梯度傳播的角度看分離機制相當于給不同性質的信息分配了不同的優(yōu)化路徑。共享特征分支的梯度來自跨模態(tài)對齊損失這個損失只關心“同一身份在不同模態(tài)下是否靠近”不關心顏色或紋理細節(jié)。因此共享分支會傾向于學習那些在兩種模態(tài)下都穩(wěn)定存在的結構信息。獨有特征分支的梯度來自模態(tài)內的分類損失或重建損失它可以在本模態(tài)內充分利用顏色、紋理等線索而不會污染共享分支。如果沒有這個分離所有梯度都會匯入同一個特征向量模型會優(yōu)先優(yōu)化最容易降低總損失的方向。由于顏色在可見光模態(tài)內判別力極強模型會大量依賴顏色導致共享特征空間被顏色主導。分離之后顏色相關的梯度被導向獨有分支共享分支被迫去尋找其他更穩(wěn)定的線索。這就是為什么顯式分離往往比隱式正則更有效——它改變了梯度的流向而不僅僅是增加一個約束項。3.3 共享特征遷移的具體實現(xiàn)方式論文標題里的“Transfer”指的是共享特征在不同模態(tài)之間的遷移。具體怎么做一種常見設計是把可見光分支的共享特征和紅外分支的共享特征投影到同一個子空間然后計算它們之間的距離要求同一身份的樣本對距離小、不同身份的樣本對距離大。這個投影可以是簡單的全連接層也可以是帶歸一化的嵌入層。更精細的設計會引入一個“共享特征生成”或“特征交換”機制。比如把可見光圖像的共享特征和紅外圖像的獨有特征組合起來看能否重建出合理的紅外特征表示反過來也一樣。這種重建或交換操作會迫使共享特征真正包含跨模態(tài)通用的信息因為如果共享特征里混入了模態(tài)獨有成分交換后重建就會失敗。我讀到這里時的體會是遷移不是簡單的“對齊”而是要讓共享特征具備“可替換性”。也就是說你把一個人的共享特征從可見光模態(tài)搬到紅外模態(tài)它應該仍然描述的是這個人而不是某個模態(tài)的成像特性。這個標準比單純的距離拉近更嚴格也更能保證學到的共享特征質量。4. 獨有特征的處理不是丟棄而是模態(tài)內增強4.1 獨有特征為什么不能一扔了之既然獨有特征不能跨模態(tài)遷移那是不是直接丟掉就行了不行。原因有兩個。第一獨有特征在模態(tài)內部仍然有判別價值。在可見光圖庫里檢索可見光目標時顏色信息非常有用在紅外圖庫里檢索紅外目標時熱輻射模式也能提供區(qū)分度。如果完全丟棄獨有特征模態(tài)內檢索性能會下降。第二獨有特征的存在可以幫助共享特征學得更干凈。如果模型知道有一部分容量專門用來編碼模態(tài)獨有信息它就不需要把共享特征也用來編碼這些信息。這相當于給共享特征“減負”讓它專注于跨模態(tài)通用的部分。所以正確的做法不是丟棄而是隔離并利用。論文里通常會對獨有特征施加模態(tài)內的分類損失或三元組損失讓它在各自模態(tài)內保持判別力同時通過梯度阻斷或正交約束防止它影響共享特征空間。4.2 正交約束與對抗訓練在分離中的作用為了保證共享特征和獨有特征真正“各司其職”論文往往會引入正交約束。簡單說就是要求共享特征向量和獨有特征向量在統(tǒng)計上不相關。實現(xiàn)方式可以是計算兩者的內積并最小化或者用對抗訓練讓一個判別器無法從共享特征預測出獨有特征的信息。正交約束的好處是它不硬性指定哪些維度是共享的而是讓模型自己去找一個自然的分解。這比人工設計特征劃分規(guī)則要靈活得多。實際訓練中正交約束的權重需要仔細調太小了分離不徹底太大了可能損害特征的表達能力。論文里通常會給出一個經(jīng)驗范圍比如 0.01 到 0.1 之間具體要看數(shù)據(jù)集和骨干網(wǎng)絡。4.3 一個容易忽略的細節(jié)獨有特征的模態(tài)內對齊很多人關注跨模態(tài)對齊卻忽略了獨有特征在模態(tài)內部也需要對齊。比如同一件衣服在不同光照下的可見光圖像顏色表現(xiàn)會有差異同一個人的紅外圖像在不同環(huán)境溫度下熱輻射分布也會變化。如果獨有特征對這些模態(tài)內變化過于敏感模態(tài)內檢索也會不穩(wěn)定。因此論文通常會在獨有特征上也施加模態(tài)內的身份一致性約束確保同一身份在同一模態(tài)下的獨有特征足夠緊湊。這個細節(jié)在復現(xiàn)時很容易被漏掉但去掉之后性能往往會有明顯下降。我在自己搭實驗的時候一開始只關注跨模態(tài)損失結果模態(tài)內檢索指標一直上不去后來補上獨有特征的模態(tài)內約束情況才好轉。5. 訓練策略與損失函數(shù)組合的實操要點5.1 損失函數(shù)的三大組成部分這篇論文的訓練目標通常由三塊組成跨模態(tài)共享特征對齊損失、模態(tài)內獨有特征判別損失、以及分離約束損失??缒B(tài)對齊損失常用的是帶難樣本挖掘的三元組損失或者 ID 損失配合中心損失。模態(tài)內判別損失可以是標準的分類交叉熵也可以是模態(tài)內的三元組損失。分離約束損失則包括正交損失或對抗損失。這三塊損失的權重不是隨便設的??缒B(tài)對齊損失權重太小共享特征學不好太大可能壓制獨有特征的學習。分離約束太強特征空間可能被割裂得太碎影響整體判別力。論文里一般會給出一個基準配置但實際遷移到新數(shù)據(jù)集時需要根據(jù)模態(tài)差異程度做調整。如果兩個模態(tài)差異特別大比如可見光和遠紅外分離約束可以適當加強如果差異較小比如可見光和近紅外可以適當減弱。5.2 采樣策略對跨模態(tài)三元組的影響跨模態(tài)三元組損失的采樣比單模態(tài)復雜得多。一個標準的跨模態(tài)三元組通常包含一個可見光錨點、一個同身份的紅外正樣本、一個不同身份的紅外負樣本或者反過來。采樣時要注意正樣本對必須跨模態(tài)負樣本對可以跨模態(tài)也可以同模態(tài)但跨模態(tài)負樣本通常更難對訓練更有價值。實際訓練中如果 batch 里每個身份只有一張可見光和一張紅外那正樣本對很容易構造但負樣本的多樣性可能不夠。常見做法是每個 batch 采樣 P 個身份每個身份采樣 K 張可見光和 K 張紅外這樣正負樣本對的數(shù)量都比較充足。P 和 K 的取值需要根據(jù)顯存和數(shù)據(jù)集大小權衡一般 P8 或 16K4 或 8。注意跨模態(tài)三元組采樣時一定要確保正樣本對是真正跨模態(tài)的。如果正樣本對里混入了同模態(tài)樣本訓練信號會變弱模型可能學不到跨模態(tài)對齊。5.3 訓練過程中的常見不穩(wěn)定現(xiàn)象與應對跨模態(tài)訓練比單模態(tài)更容易出現(xiàn)不穩(wěn)定。常見現(xiàn)象包括損失突然飆升、共享特征和獨有特征的范數(shù)差異過大、某個模態(tài)的梯度主導另一個模態(tài)。應對方法有幾個一是使用梯度裁剪防止個別難樣本產(chǎn)生過大梯度二是對兩個模態(tài)的損失分別做歸一化避免某個模態(tài)因為樣本難度不同而主導訓練三是采用 warm-up 策略先讓模型在單模態(tài)內學一段時間再引入跨模態(tài)對齊損失。我在復現(xiàn)類似方法時發(fā)現(xiàn) warm-up 特別重要。如果一上來就加跨模態(tài)損失模型還沒學會提取基本特征跨模態(tài)對齊會引入大量噪聲導致訓練早期就發(fā)散。通常先做 10 到 20 個 epoch 的模態(tài)內預訓練再逐步加入跨模態(tài)損失效果會穩(wěn)很多。6. 實驗設計與性能驗證中的關鍵觀察6.1 數(shù)據(jù)集與評價指標的基本設定跨模態(tài) ReID 常用的數(shù)據(jù)集是 SYSU-MM01 和 RegDB。SYSU-MM01 包含多個攝像頭其中可見光和紅外都有場景比較復雜RegDB 規(guī)模小一些但模態(tài)對齊更干凈。評價指標主要是 mAP 和 Rank-1 準確率分模態(tài)內檢索和跨模態(tài)檢索兩種設置??凑撐膶嶒灲Y果時不要只看跨模態(tài)指標也要看模態(tài)內指標。如果跨模態(tài)指標很高但模態(tài)內指標下降明顯說明模型可能過度犧牲了模態(tài)內判別力來換取跨模態(tài)對齊這種 trade-off 在實際部署中未必劃算。6.2 消融實驗揭示的模塊貢獻論文的消融實驗通常會驗證幾個關鍵設計去掉共享-獨有分離、去掉正交約束、去掉獨有特征損失、去掉跨模態(tài)遷移。從常見結果來看共享-獨有分離帶來的提升最大說明顯式解耦確實是核心貢獻。正交約束的貢獻次之它保證了分離的徹底性。獨有特征損失的貢獻相對小一些但在模態(tài)內檢索指標上影響明顯。還有一個值得注意的現(xiàn)象如果只做跨模態(tài)對齊而不做分離模型在訓練集上可能表現(xiàn)不錯但在測試集上泛化較差。這說明分離機制不僅提升了性能上限還改善了泛化能力。原因可能是分離后的共享特征更少依賴數(shù)據(jù)集特有的模態(tài)偏差遷移到新場景時更穩(wěn)定。6.3 可視化分析特征分布到底變了什么論文里通常會用 t-SNE 可視化共享特征和獨有特征的分布。從常見圖來看共享特征在分離后同一身份的不同模態(tài)樣本會聚得更緊不同身份之間的邊界更清晰。獨有特征則呈現(xiàn)模態(tài)內聚類、模態(tài)間分離的格局說明它確實保留了模態(tài)特有信息。如果你自己復現(xiàn)建議也做一下可視化。有時候指標提升不明顯但特征分布已經(jīng)發(fā)生了有意義的變化這對理解模型行為很有幫助。另外可以計算共享特征和獨有特征之間的互信息定量驗證分離效果?;バ畔⒃降驼f明分離越徹底。7. 復現(xiàn)這類方法時最容易踩的坑7.1 骨干網(wǎng)絡修改不當導致紅外分支失效紅外圖像是單通道的但大多數(shù)預訓練骨干網(wǎng)絡是在 ImageNet 三通道圖像上訓練的。直接把第一層卷積改成單通道輸入會丟失預訓練權重中的大部分信息。常見做法是保留三通道卷積把紅外圖像復制成三通道或者用加權求和把單通道映射到三通道。前者簡單但冗余后者更合理但需要額外參數(shù)。論文里通常采用復制通道的方式因為實現(xiàn)簡單且效果穩(wěn)定。但要注意復制通道后紅外分支的第一層卷積實際上在處理三個相同的通道這會導致梯度也是三倍疊加。如果不做縮放紅外分支的初始梯度可能比可見光分支大訓練時容易失衡。一個實用技巧是在紅外分支第一層后加一個縮放因子或者用較小的學習率。7.2 共享特征和獨有特征的維度分配共享特征和獨有特征各占多少維度論文里通常是對半開比如總特征 2048 維共享 1024 維獨有 1024 維。但這個比例不是固定的。如果模態(tài)差異特別大共享特征可以少一些獨有特征多一些如果模態(tài)差異小共享特征可以多一些。實際調參時可以嘗試 3:1、1:1、1:3 幾個比例看哪個在驗證集上最好。另外共享特征和獨有特征的維度不宜太小否則表達能力不足也不宜太大否則分離約束難以生效。1024 維左右是一個比較穩(wěn)妥的起點。7.3 跨模態(tài)損失的難樣本挖掘陷阱跨模態(tài)三元組損失通常需要難樣本挖掘。但在跨模態(tài)設置下難樣本的定義需要小心。如果只按特征距離選最難負樣本可能會選到那些因為模態(tài)差異大而距離遠的樣本而不是因為身份不同而距離遠的樣本。這會導致模型把精力花在彌合模態(tài)差異上而不是區(qū)分身份。一個改進做法是在選負樣本時同時考慮身份標簽和模態(tài)標簽優(yōu)先選同模態(tài)但不同身份的難樣本或者跨模態(tài)但身份不同的中等難度樣本。這樣訓練信號更聚焦于身份判別而不是模態(tài)對齊。論文里可能沒有詳細展開這一點但實際復現(xiàn)時這個細節(jié)對性能影響不小。8. 從這篇論文延伸出的幾個思考方向跨模態(tài) ReID 的共享-獨有特征分離思路其實可以遷移到很多其他多模態(tài)任務上。比如多模態(tài)情感分析文本和語音之間也有共享信息語義內容和獨有信息語調、表情分離后再對齊可能比直接拼接更有效。再比如跨模態(tài)檢索里的圖像-文本匹配共享的是語義概念獨有的是各自模態(tài)的表達方式分離機制同樣適用。另一個值得思考的點是共享和獨有的邊界是不是固定的在這篇論文里分離是通過損失約束動態(tài)學出來的但邊界可能隨數(shù)據(jù)分布變化。如果測試時遇到訓練時沒見過的模態(tài)組合共享特征是否還能保持穩(wěn)定這個問題目前還沒有很好的答案也是后續(xù)研究可以切入的方向。我在實際做項目時遇到過一個類似情況訓練時只有可見光和近紅外部署時突然要接入中紅外設備。共享特征雖然有一定泛化能力但性能還是下降了不少。后來通過在線微調用少量中紅外樣本更新共享特征投影層才恢復到可用水平。這說明共享-獨有分離提供了好的基礎但面對新模態(tài)時仍然需要一定的適應機制。最后分享一個讀論文的小技巧看這類方法論文時不要只盯著最終指標要重點看消融實驗和可視化分析。指標提升可能來自多個模塊的疊加但消融實驗能告訴你哪個模塊真正關鍵。可視化則能幫你判斷模型學到的特征是否符合直覺。如果可視化結果和你的預期不符那往往意味著你對方法的理解還有偏差值得回頭再讀一遍方法部分。