核心技術解析與工程實踐指南)
1. 先搞清楚Person Re-ID到底在解決什么問題1.1 一句話定義以及它和人臉識別的邊界在哪Person Re-ID行人重識別一般簡寫為Re-ID或ReID這幾年在計算機視覺里熱度一直不低但很多剛?cè)腴T的人容易把它和人臉識別搞混。我比較喜歡用一句話來區(qū)分人臉識別回答的是“這個人是誰”Person Re-ID回答的是“這個人在其他攝像頭里有沒有出現(xiàn)過、在哪里出現(xiàn)過”。換句話說它要解決的是跨攝像頭、跨時間、跨場景下的行人匹配問題。具體點說給定一張查詢圖query系統(tǒng)要從一個很大的候選圖庫gallery里找出同一身份的行人。這個任務聽起來跟圖像檢索很像但如果直接拿通用的圖像檢索方案來做效果通常比較慘。原因也很直白Re-ID面對的類內(nèi)差異極大同一個人的外觀在不同攝像頭下可能因為光照、角度、姿態(tài)、遮擋、分辨率甚至季節(jié)穿著而大不相同而類間差異反而可能極小兩個人穿著相似的衣服、站在相似的背景下比許多分類任務里的“貓和狗”難分多了。它的實際應用場景也決定了這個任務不能只停留在實驗室。最常見的就是跨鏡頭的行人追蹤與軌跡還原——比如一個大型園區(qū)部署了幾百路攝像頭當某個人從A鏡頭走到B鏡頭再到C鏡頭系統(tǒng)需要判斷這幾次出現(xiàn)是不是同一個人。再比如智慧零售里統(tǒng)計顧客動線、尋找走失老人兒童、公共安全場景下的目標檢索背后都是同一套邏輯。再加上目前很多地方都有存量攝像頭Re-ID是少數(shù)能在不改動硬件的情況下通過純軟件算法提升視頻結構化能力的方案。正因為這樣Person Re-ID在學術界火了很多年工業(yè)界的需求也一直很旺盛。當然也因為它難——難在這件事不是“堆數(shù)據(jù)就能解決”的簡單分類問題它需要模型對行人外觀有過人的判別力、對跨域變化有很強的魯棒性還得在推理時扛得住大規(guī)模圖庫的檢索壓力。1.2 為什么“跨攝像頭跨時間”讓任務變得這么難初學者看論文里那些花哨的網(wǎng)絡結構時容易忽略一個更底層的問題Re-ID的難點到底是什么。我把這個問題拆成三塊來看。第一塊是傳感器和環(huán)境的差異。不同攝像頭的白平衡、曝光參數(shù)、安裝高度、視角范圍都不一樣同一個行人從正門攝像頭走進來再到側(cè)門攝像頭出現(xiàn)膚色可能都偏了更不用說衣服顏色在日光和燈光下完全是兩個效果。這類問題不是簡單的顏色校正能解決的因為場景里每個像素的偏移都不是均勻的。第二塊是行人自身的姿態(tài)和遮擋變化。人不是剛性物體不會像車牌一樣始終一個模樣。走路時手臂擺動會擋住身體一部分坐在椅子上時下半身被遮住更不用提背包、推車、打傘這類常見情況。早期方法里很多是提取全身特征一旦遮擋嚴重全局特征里混進了大量干擾信息模型就很容易翻車。第三塊是最隱蔽但也最麻煩的跨域差異。在一個數(shù)據(jù)集上訓練好的模型換到另一個場景上性能會掉得特別明顯。我在實際項目里見過很典型的案例用Market-1501訓練出的模型在實驗室測試集上mAP能到85%以上拿到現(xiàn)場攝像頭一測直接掉到40%。原因就是訓練數(shù)據(jù)和實際場景之間的分布差異太大模型學到了訓練集里的“偏科知識”比如某類背景或某種光照條件下的統(tǒng)計規(guī)律而不是真正通用的行人判別能力。這也是為什么近年來越來越多研究轉(zhuǎn)向無監(jiān)督域適應和泛化性方向。1.3 評估指標里那些容易看走眼的坑提Re-ID必然繞不開CMC曲線和mAP這兩個指標。很多新手一開始只盯Rank-1認為“第一名命中率越高模型越好”這個理解其實是有偏差的。CMCCumulative Matching Characteristic描述的是搜索結果前k位中出現(xiàn)正確目標的概率Rank-1就是第一名命中的概率Rank-5就是前五名里命中的概率。mAPmean Average Precision則是對所有query的檢索精度做一個綜合評估它同時考慮正確目標在圖庫里的排序位置和整體檢索質(zhì)量。這里面的坑在于Rank-1高但mAP低說明模型“碰巧把正確目標排到了第一位”但圖庫里其他正確目標排得很靠后Rank-1低但mAP高說明模型雖然很少把正確目標放第一位但正確目標的整體排序比較靠前只是第一名被某個干擾項搶走了。在實際落地時mAP往往比Rank-1更有參考價值因為真實場景的gallery非常大你關注的是所有目標是否都排在靠前的位置而不僅僅是第一個。另外還有一個細節(jié)評測時用single query還是multi query結果差異很大。multi query是對同一個行人的多張查詢圖特征取平均后再檢索Rank-1通常能比single query高2到4個百分點。論文里為了對比公平都會說明自己的評測協(xié)議但讀的時候一定要看清楚否則橫向?qū)Ρ葦?shù)字沒有意義。我自己復現(xiàn)論文時吃過這個虧看到某篇論文效果特別好仔細一看人家用了multi query自己用的是single query白高興一場。2. 從手工特征到深度學習一條清晰的演進線2.1 早期手工特征階段顏色直方圖和LOMO在深度學習成為主流之前行人重識別基本是手工特征度量學習的天下。那時候的思路是先設計一個描述子比如顏色直方圖、紋理特征、LOMO特征等然后用度量學習方法如KISSME、XQDA來學習一個距離函數(shù)使得同一身份的特征距離近、不同身份的特征距離遠。當時最有代表性的應該是LOMOLocal Maximal Occurrence特征它通過對局部區(qū)域做最大出現(xiàn)概率統(tǒng)計來應對跨視角下外觀變化的問題。這類方法在當時的CUHK03、VIPeR等數(shù)據(jù)集上效果還行但有個致命問題手工特征對復雜場景的適應性很差換一個場景就得重新調(diào)特征和度量函數(shù)泛化能力跟不上實際需求。盡管現(xiàn)在很少人再去手工設計特征了但這段歷史還是值得理解的。因為度量學習這個思路被深度學習完整繼承了下來——只是把“手工特征”換成了“網(wǎng)絡自動學習的深度特征”。理解了這一點你再看后面的方法就會發(fā)現(xiàn)所有東西都是一脈相承的。2.2 深度學習的兩條主線表征學習與度量學習深度學習時代Person Re-ID方法大體可以分成兩派表征學習Representation Learning和度量學習Metric Learning。當然現(xiàn)在的主流方法通常兩者混合用但理解這兩派各自的邏輯還是很有必要的。表征學習的核心做法是把Re-ID當成分類問題來處理。具體來說給每個訓練身份分配一個類別標簽讓模型通過softmax分類損失來學習特征提取器。訓練結束后去掉最后的分類層把倒數(shù)第二層的特征向量作為行人的描述子用于檢索。這種方法的優(yōu)點是訓練穩(wěn)定、實現(xiàn)簡單缺點是這樣學出來的特征并不天然具有“拉近同類、推開異類”的結構判別力上限有限。度量學習則直接對特征向量的距離建模。核心思想是讓同一個人的特征在歐氏空間里盡量靠近不同人的特征盡量遠離。最經(jīng)典的當屬Triplet Loss三元組損失它每次取三張圖anchor錨點、positive正樣本同身份、negative負樣本不同身份約束anchor與positive的距離加上一個余量后仍然小于anchor與negative的距離。早年用Triplet Loss訓練Re-ID模型很流行但實際效果很依賴樣本挖掘策略如果隨機采三元組訓練很容易停滯?,F(xiàn)在工業(yè)界和學術界的主流做法基本是用ID Loss交叉熵保證模型能學到分類級別的判別特征用Triplet Loss在特征層面做距離約束增強類內(nèi)緊湊性和類間可分性兩個Loss加在一起聯(lián)合訓練往往比單獨只用其中一個效果好很多。2.3 局部特征為什么能救場PCB與MGN全局特征做Re-ID有個天然弱點對遮擋和局部差異不敏感。舉個很簡單的例子兩個人穿同款黑色上衣一個穿藍褲子一個穿白褲子如果只看全局特征模型很可能把它們判成一個人因為上衣顏色主導了全局特征但如果模型能“注意到”褲子的顏色差異就能正確區(qū)分。于是就有了局部特征學習這一類方法。最有代表性的當屬PCBPart-based Convolutional Baseline和MGNMultiple Granularity Network。PCB的做法比較直接把整張?zhí)卣鲌D在水平方向切成若干條比如6條每條單獨做分類損失訓練時讓每條特征圖關注行人對應的身體部位。因為行人全身照通常是豎直的水平切條基本能對應到頭、肩、上衣、下裝等區(qū)域。這樣做的好處是即便整體外觀相似模型也能通過局部區(qū)域的特征差異來區(qū)分不同身份。MGN則更進一步用多個分支同時提取全局特征和不同粒度的局部特征再把它們拼接起來作為最終描述子。MGN在當時把Market-1501的State-of-the-art提升了一大截我記得那時在多個數(shù)據(jù)集上都能明顯看出局部特征帶來的收益。不過局部特征方法也有它的煩人之處它依賴人體對齊。如果檢測框沒切好行人頭被截掉一半PCB切出來的“頭部分支”其實是一堆背景反而會干擾特征。這個問題后來衍生出了姿態(tài)對齊、語義對齊等方向但始終沒有特別完美的解決方案。2.4 Transformer和注意力機制如何改寫游戲規(guī)則ViT在圖像分類上火了之后Re-ID領域很快跟進。2021年出現(xiàn)的TransReID是比較標志性的工作它把Vision Transformer引入行人重識別并且加了一個關鍵設計——SIESide Information Embedding把攝像頭ID、視角等輔助信息作為位置編碼的一部分注入網(wǎng)絡讓模型在提取特征時能感知到“這是幾號攝像頭拍到的”。為什么Transformer對Re-ID有效我的理解是Re-ID需要的特征既要關注全局又要感知細節(jié)而Transformer的自注意力機制天然可以建模長距離依賴讓特征圖上的每個位置都能和整個圖像的其他位置建立聯(lián)系。相比于CNN有限的感受野Transformer能更好地捕捉到“這個人的紅色上衣配黑色背包”這種跨區(qū)域的全局組合特征。后來出現(xiàn)的跨窗口自注意力等結構本質(zhì)上都是在解決注意力計算效率和局部建模能力之間的平衡問題。這類結構在Re-ID任務里表現(xiàn)也不錯尤其是在分辨率較高、目標占比偏大的數(shù)據(jù)集上。這里還想多說一句Transformer模型雖然在精度上確實能壓CNN一頭但隨之而來的是顯存占用高、訓練收斂慢、推理速度慢。我在實際項目里對比過同樣的數(shù)據(jù)下ResNet50和ViT-B的推理延遲后者基本都是前者的3到5倍。所以做落地項目時到底選CNN還是Transformer得看算力預算和幀率要求不能盲目追新。3. 訓練一個可用Re-ID模型的工程細節(jié)3.1 數(shù)據(jù)集準備與預處理別在源頭埋雷學術界最常用的三個數(shù)據(jù)集是Market-1501、DukeMTMC-reID和MSMT17。我之前踩過一個大坑DukeMTMC-reID因為原始視頻中出現(xiàn)了真實行人隱私信息已經(jīng)被原作者要求撤回了但網(wǎng)上各種第三方鏈接滿天飛很多教程還在推薦下載。這里給個提醒如果是從學術角度復現(xiàn)論文用Market-1501和MSMT17足夠如果是從合規(guī)出發(fā)自己測試最好使用脫敏數(shù)據(jù)或自行采集的數(shù)據(jù)集。數(shù)據(jù)集準備好之后預處理里最容易出問題的是行人檢測框的質(zhì)量。Re-ID評測時通常給的是“已經(jīng)裁剪好的行人框”但這個框可能不居中、可能包含大量背景、甚至可能只有半個人。我在項目里測試過一個簡單但高效的預處理對裁剪后的圖像先做一次邊緣檢測或者輪廓分析去掉占比過大的純背景區(qū)域。雖然不能根治檢測框不準的問題但能減少一部分訓練噪聲。另外注意圖像尺寸的一致性。不同數(shù)據(jù)集的圖像尺寸差異很大Market-1501主要是256x128MSMT17則是更高分辨率。如果混著訓練需要統(tǒng)一resize策略。我習慣用短邊對齊然后中心裁剪的流程但Re-ID領域里大多數(shù)方法還是直接整圖resize到固定尺寸比如256x128或者384x192。這個選擇會影響模型效果和顯存占用需要根據(jù)實際任務權衡。3.2 損失函數(shù)組合與BNNeck精度提升的關鍵配置訓練Re-ID模型時損失函數(shù)的組合方式直接決定最終效果。我在實驗里試過很多組合比較穩(wěn)定且效果好的配方是ID Loss交叉熵 Triplet Loss同時配合BNNeck結構。先解釋一下BNNeck為什么有效。早期方法直接讓同一個特征向量同時做softmax分類和三元組距離約束這兩個目標在優(yōu)化方向上是有沖突的——softmax分類希望特征在類別中心周圍聚攏三元組損失希望特征在歐氏空間里拉開距離。BNNeck的做法是在特征向量進入分類層之前單獨加一個BatchNorm層把用于分類的特征和用于距離計算的特征解耦開。這樣分類分支和度量分支各管各的訓練更穩(wěn)定收斂后的精度也會更高。我實測過加上BNNeck之后在Market-1501上mAP能提升2到3個百分點屬于性價比極高的改動。損失函數(shù)的權重也值得細調(diào)。我常用的比例是ID Loss權重1.0Triplet Loss權重1.0初始學習率3.5e-4。但如果數(shù)據(jù)集比較小、身份數(shù)量少可以適當增大Triplet Loss權重到1.5甚至2.0能增強特征空間的度量結構。另外近年有一些新Loss比如Circle Loss把softmax和triplet統(tǒng)一到了一個框架里效果在某些場景確實更好。但從工程穩(wěn)定性的角度來說我還是建議先把ID LossTriplet這套基礎組合調(diào)好再考慮替換成其他損失。3.3 數(shù)據(jù)增強隨機擦除是性價比之王Re-ID的數(shù)據(jù)增強里最有用的我認為是Random Erasing隨機擦除。它的做法是隨機選圖像中的一塊矩形區(qū)域用隨機像素填充模擬身體部位被遮擋的情況。這個增強手段幾乎零成本但能讓模型學會在部分區(qū)域缺失時仍然正確識別行人對遮擋場景的泛化能力提升非常明顯。另一個實用的增強是Random Horizontal Flip隨機水平翻轉(zhuǎn)。行人重識別不像人臉識別那么依賴左右對稱性水平翻轉(zhuǎn)不會破壞身份信息還能有效擴充數(shù)據(jù)量。我在訓練時基本都會開。至于AutoAugment、RandAugment這類復雜的圖像增強策略在Re-ID上的收益沒有那么明確。顏色抖動ColorJitter需要謹慎使用因為行人外觀的顏色本身就是重要的識別線索過度調(diào)整顏色分布會誤導模型。我一般只做輕微的亮度、對比度擾動飽和度和色相不動??缬蚍夯矫嬖缒暧腥擞肎AN生成不同風格的行人圖像來做風格遷移數(shù)據(jù)增強比如把Market-1501的圖像轉(zhuǎn)換成DukeMTMC的風格再參與訓練。這種方法確實能提升跨域性能但訓練復雜度高、不穩(wěn)定現(xiàn)在的主流方案更傾向于用域適應方法解決這部分后面再說。3.4 訓練策略預熱、余弦退火與多卡同步BN模型訓練時優(yōu)化策略的細節(jié)往往比網(wǎng)絡結構更能影響最終結果。我用的是Adam優(yōu)化器初始學習率3.5e-4配合Warmup策略——前10個epoch讓學習率從小往大線性爬升避免模型在開局階段因為過大的學習率導致震蕩。學習率調(diào)度方面余弦退火Cosine Annealing在Re-ID上的表現(xiàn)很穩(wěn)定。我習慣訓練60個epoch前10個epoch warmup之后按余弦退火衰減到極小值。這個配置在Market-1501上能穩(wěn)定收斂在MSMT17上也沒有出現(xiàn)嚴重的過擬合。多卡訓練時BatchNorm層的同步問題要特別注意。Re-ID模型通常依賴較大的Batch Size比如64或128來保證Triplet Loss里有足夠的樣本組合。如果單卡顯存不夠很多人會減小Batch Size到32甚至16本地驗證時損失函數(shù)也能降下去但實際檢索效果會明顯變差。這主要是因為BatchNorm的統(tǒng)計量在小Batch上不穩(wěn)定。解決方案是使用多卡同步BNSyncBN讓所有卡上的數(shù)據(jù)一起統(tǒng)計均值和方差如果只有一張卡就盡量保持Batch Size在64以上犧牲分辨率也要保住Batch Size。4. 常見問題與排查技巧實錄4.1 訓練Loss降了但指標不漲問題出在哪這是Re-ID里最讓人崩潰的情況看著訓練損失不斷下降Rank-1和mAP卻紋絲不動。我遇到的這類問題大概有三種原因。第一種是學習率設置不合理。Re-ID對學習率非常敏感如果學習率太大模型會在特征空間里反復橫跳看似損失很低但學到的特征判別性很差。一個很容易被忽略的點是預訓練模型的Backbone和新增的分類頭需要不同的學習率——我通常把Backbone的學習率設為分類頭的十分之一這樣既能保留預訓練特征的泛化能力又能讓新頭快速收斂。第二種是Batch內(nèi)沒有足夠的難例。Triplet Loss的威力很大程度來自hard negative mining如果一個Batch里全是比較容易區(qū)分的樣本三元組損失很快就趨近于零模型就失去了繼續(xù)優(yōu)化的信號。我在訓練時習慣讓每個Batch包含盡量多的不同身份比如Batch Size為64時安排16個身份、每個身份4張圖這樣Triplet采樣時的難例比例會高很多。第三種是訓練集和評測集的預處理不一致。我犯過很低級的錯誤訓練時做了隨機擦除和水平翻轉(zhuǎn)但評測時忘了關掉隨機增強導致每個query的檢索結果不穩(wěn)定。后來我寫腳本時把訓練和推理的數(shù)據(jù)流程分開封裝這類問題就再沒出現(xiàn)過。4.2 Rank-1高、mAP低說明模型學偏了Rank-1高但mAP低的情況在跨域場景下特別常見。我用一組數(shù)據(jù)來說明某次實驗在Market-1501上Rank-1是91.2%mAP卻只有76.8%。粗看Rank-1已經(jīng)很不錯了但mAP差了一截。這個現(xiàn)象說明模型對“最容易匹配的那個正確目標”把握得很好但對圖庫中其他正確目標的排序能力不足。換句話說模型可能只記住了這個人的強判別特征比如紅色上衣一旦某張圖里把紅色上衣遮住了模型就認不出來了。這種情況我一般從兩個方向調(diào)。一是增強局部特征學習比如引入類似PCB的水平切分讓模型關注到更多部位而不是單一主導特征。二是加強Triplet Loss的約束權重同時在采樣時提高難樣本的比例逼迫模型在更難的情況下也能拉近同類距離。4.3 跨攝像頭泛化能力差怎么辦訓練集和測試集來自不同攝像頭分布時性能斷崖式下跌是常見問題。最簡單有效的方法是做攝像頭層面的數(shù)據(jù)增強在訓練時把同一行人不同攝像頭下的圖像混合到一個Batch里讓模型有機會學到“攝像頭無關”的特征。這比直接在全局做顏色歸一化要有效得多。更進階的做法是攝像頭風格遷移用CycleGAN或其他風格遷移方法把圖像風格在攝像頭之間轉(zhuǎn)換擴大訓練數(shù)據(jù)分布。不過這個方法訓練成本高、不穩(wěn)定不建議在小團隊里從零復現(xiàn)。工業(yè)界目前在無監(jiān)督域適應UDA方向有不少工作最簡單的entry-level方案是先用源域數(shù)據(jù)訓練一個初始模型再用偽標簽對目標域數(shù)據(jù)進行自訓練迭代效果就能比直接遷移好不少。4.4 模型落地時的算力與推理速度問題論文里大家比的都是mAP、Rank-1這些精度指標但真實項目中推理延遲和存儲占用同樣關鍵。一個人流量大的園區(qū)可能有幾千路攝像頭每路每秒25幀即使5秒取一幀做人臉檢測Re-ID也需要系統(tǒng)單機扛住很大的并發(fā)。我見過不少團隊在精度上摳得很細但模型落地時發(fā)現(xiàn)GPU扛不住或者延遲超標最后只能換更輕量的模型。Re-ID模型常用的輕量化方案有用MobileNetV3或EfficientNet-Lite替換ResNet50作為Backbone對特征向量做PCA降維或者Product Quantization壓縮用更短的向量做檢索在gallery端建立倒排索引先粗排再精排減少距離計算的次數(shù)。這一套組合拳下來能把單路推理延遲從幾十毫秒壓到個位數(shù)毫秒同時精度損失控制在2%以內(nèi)。另外還要強調(diào)一下存儲。Parking園區(qū)百萬級gallery特征每個特征2048維float32大約需要8GB內(nèi)存。如果做分布式部署需要提前規(guī)劃好特征庫的存儲方案和更新策略。這些工程問題看起來不“學術”但在實際項目中往往決定模型能否真正跑起來。4.5 常見問題速查表現(xiàn)象可能原因解決方法Loss不降或降得極慢學習率太大/太小或數(shù)據(jù)沒做歸一化使用warmup策略從3e-4左右起步檢查圖像歸一化參數(shù)Rank-1正常但mAP很低模型只學到全局主導特征引入局部特征分支增強Triplet Loss難樣本約束跨數(shù)據(jù)集泛化差域分布差異大攝像頭級數(shù)據(jù)增強、無監(jiān)督域適應、偽標簽自訓練單卡顯存不足Batch Size太大或分辨率太高使用SyncBN多卡訓練或降低分辨率保Batch Size推理延遲超標模型過重、gallery過大輕量化Backbone、特征壓縮、倒排索引粗排相同代碼跑結果不一致隨機種子、數(shù)據(jù)加載順序、增強邏輯不同固定隨機種子評測時關閉隨機增強確定評測協(xié)議5. 數(shù)據(jù)集、評測基線與未來值得關注的方向5.1 三大多用數(shù)據(jù)集的“脾氣”各不相同做Re-ID實驗繞不開Market-1501、DukeMTMC-reID和MSMT17這三個數(shù)據(jù)集。它們的規(guī)模和難度差異很大不看數(shù)據(jù)直接對比論文指標是很多新手會犯的錯誤。Market-1501是最常用的入門數(shù)據(jù)集751個訓練身份、750個測試身份總共約3.2萬張圖像。它是在清華大學校園內(nèi)用6個攝像頭采集的包含室外和室內(nèi)場景。圖像分辨率較低很多都是100x50左右的小目標但因為是早期數(shù)據(jù)集場景相對單一目前SOTA模型的Rank-1已經(jīng)能到95%以上mAP到90%以上。DukeMTMC-reID來自杜克大學校園8個攝像頭收錄了超過1400個身份的3.6萬張圖像。它的難度比Market-1501更高主要因為攝像頭視角變化大、光照不均衡。由于隱私問題數(shù)據(jù)集已經(jīng)撤回但論文下載還能找到只是不建議新項目再基于它做開發(fā)。MSMT17是目前學術界公認最難的數(shù)據(jù)集之一它采集自北京大學校園包含15個攝像頭、4101個身份、超過12萬張圖像覆蓋不同時段和各種天氣。在MSMT17上很多在Market-1501上表現(xiàn)很好的模型性能會掉一大截所以它是檢驗模型魯棒性的“試金石”。如果你新想出來的方法在MSMT17上也能有比較大的提升那基本是真正的進步而不只是過擬合了某個數(shù)據(jù)分布。5.2 無監(jiān)督域適應、大模型與CLIP ReID無監(jiān)督域適應UDA是我認為最貼近工業(yè)實際的方向之一因為它解決的是“沒有目標域標注”的痛點。在真實場景里新建一個園區(qū)不可能花幾個月去標注行人IDUDA希望能用已有標注的源域數(shù)據(jù)和大量無標注的目標域數(shù)據(jù)訓練出在目標域上也能用的模型。早期UDA方法主要靠風格遷移和偽標簽。近兩年的主流是做聚類偽標簽迭代訓練用源域訓練的模型給目標域圖像提特征聚類后分配偽標簽再用這些帶噪標簽來訓練模型。這個流程的挑戰(zhàn)在于偽標簽中存在大量噪聲如何設計不確定性感知的損失函數(shù)、如何設計聚類策略是UDA Re-ID的核心難點。大模型對Re-ID的影響也不容小覷。CLIP ReID這類方法利用圖文預訓練模型把行人圖像和對應的語義描述對齊在zero-shot場景下也能達到不錯的檢索性能。目前這個方向還在快速發(fā)展但距離真正工業(yè)落地還有距離主要問題在于大模型的計算開銷和跨域泛化能力。5.3 可落地方向視頻Re-ID與跨模態(tài)Re-ID再說兩個在工業(yè)界可能更有價值的方向。視頻Re-ID利用一個行人在同一攝像頭下連續(xù)多幀的信息來判斷身份。跟單幀圖像相比視頻包含更多姿態(tài)變換和時序信息能有效提升在遮擋、模糊場景下的魯棒性。代價是推理時需要維護一個時序緩存系統(tǒng)復雜度會上升。在需要實時處理的場景里我建議用“關鍵幀抽取時序特征聚合”的輕量級方案而不是把視頻直接喂給3D卷積網(wǎng)絡??缒B(tài)Re-ID目前最受關注的是可見光-紅外Re-IDRGB-IR ReID用于夜間或者光照極差的環(huán)境。它的難點在于兩個模態(tài)之間的特征分布差異太大需要設計模態(tài)對齊模塊。這個方向在安防夜視場景下應用前景很大但學術界的公開數(shù)據(jù)集還比較有限距離大規(guī)模落地仍需時間。6. 從一個可行方案說起從零訓練一個可用的Re-ID模型最后分享一個我自己反復使用的基線方案——基于Torchreid框架訓練一個ResNet50 ID Loss Triplet Loss的Re-ID模型。這套配置在網(wǎng)上有很多資料但真正能從頭到尾跑通且效果穩(wěn)定的教程其實不多。我用的訓練配置大致如下。數(shù)據(jù)集放在data/market1501目錄下訓練腳本的核心配置可以用YAML文件管理這樣能復現(xiàn)、好調(diào)參比把參數(shù)硬編碼在訓練腳本里更方便。下面的配置文件是我在實際項目中驗證過的版本# market1501_reid.yaml model: name: resnet50 pretrained: true last_stride: 1 neck: bnneck neck_feat: after data: type: image root: data sources: [market1501] targets: [market1501] height: 256 width: 128 norm_mean: [0.485, 0.456, 0.406] norm_std: [0.229, 0.224, 0.225] transforms: [random_flip, random_erase] optimizer: name: adam lr: 0.00035 weight_decay: 0.0005 bias_lr_factor: 2.0 lr_scheduler: name: warmup_multi_step stepsize: [40, 55] warmup_epochs: 10 train: batch_size: 64 num_instances: 4 epochs: 60 eval_freq: 10 start_epoch: 0 seed: 1 sampler: type: pk loss: name: [triplet, id] triplet: margin: 0.3 weight_t: 1.0 id: weight_x: 1.0 test: evaluator: [CMC_mAP] batch_size: 128 eval_freq: 10 re_rank: false訓練時直接執(zhí)行python scripts/main.py \ --config-file market1501_reid.yaml \ --transforms random_flip random_erase \ --root data如果顯存有限Batch Size調(diào)到32但我會把每個ID采樣的圖片數(shù)從4降到2這樣能盡量保證Batch里每個身份都有足夠的樣本。還需要注意的是num_instances這個參數(shù)直接影響Triplet Loss的采樣難度它表示每個身份在一個Batch里采樣多少張圖。num_instances4時意味著一個Batch里有16個身份、每個身份4張圖這樣Triplet Loss能挖到更難的負樣本。訓練完成后推理階段可以加載訓練好的權重去掉分類層用BackboneBNNeck得到特征。實測下來這個基線在Market-1501的single query協(xié)議下Rank-1約91%mAP約81%如果加上Re-ranking后處理mAP還能再漲4到5個點。這里也提醒一句Re-ranking雖然能提升評測指標但會引入額外的計算開銷和依賴在大規(guī)模實時檢索場景里慎用。7. 最后再分享一點實驗習慣做Re-ID實驗這幾年我最大的體會是精度指標的提升固然重要但真正決定模型能不能落地的往往是那些論文里不怎么提的工程細節(jié)。從數(shù)據(jù)配比、損失權重、學習率策略到數(shù)據(jù)增強的開關每一個環(huán)節(jié)都值得單獨做對照實驗而不是一股腦堆上去再猜結果。另一個容易被忽視的點是評測代碼的正確性。Re-ID評測里有一個經(jīng)典陷阱gallery中如果包含query本身的圖像模型會“作弊”一樣把這張圖排在第一位導致指標虛高。Market-1501官方評測協(xié)議里已經(jīng)把這種“同源query”排除了但很多第三方實現(xiàn)沒有處理好直接對比結果就會失真。我自己習慣在跑完評測后手動檢查幾個query的Top-10輸出看看有沒有出現(xiàn)“自己匹配自己”這種低級問題。如果你剛?cè)腴TRe-ID我建議先花兩周時間跑通一個Baseline而不是一上來就啃最新的Transformer論文。先把數(shù)據(jù)流程、評測協(xié)議、損失函數(shù)這幾塊地基打牢后面換模型、改進方法都會快很多。這個領域坑不少但只要基礎扎實很多所謂“玄學調(diào)參”其實都有清晰的邏輯可以解釋。