檢測置信學(xué)習(xí):標(biāo)注噪聲識別與數(shù)據(jù)清洗實(shí)戰(zhàn))
做目標(biāo)檢測項(xiàng)目的人遲早會(huì)被標(biāo)注數(shù)據(jù)狠狠上一課。我最近在整理一批道路場景數(shù)據(jù)集的時(shí)候又把“約束模型下的目標(biāo)檢測置信學(xué)習(xí)”這套思路拿出來用了一遍把臟數(shù)據(jù)徹底翻了個(gè)底朝天。簡單說就是在置信學(xué)習(xí)Confident Learning框架下對檢測標(biāo)注做噪聲識別篩選過程中再疊加幾何約束、分布約束、一致性約束等條件來避免誤殺。這篇文章就是這套方案的完整復(fù)盤從原理到實(shí)操、從踩坑到調(diào)參全部捋一遍希望能給正在被標(biāo)注質(zhì)量困擾的朋友一條能直接上手的路。目標(biāo)檢測的標(biāo)注成本遠(yuǎn)高于圖像分類一個(gè)框不僅要畫對位置還得保證類別正確、邊界貼合、沒有漏標(biāo)?,F(xiàn)實(shí)項(xiàng)目中標(biāo)注員疲勞、任務(wù)理解偏差、跨人標(biāo)注尺度不統(tǒng)一都會(huì)讓數(shù)據(jù)集帶上一層“看不見的噪聲”。這種噪聲不會(huì)讓模型爆炸但會(huì)一點(diǎn)一點(diǎn)吃掉模型的上限。本文適合正在做檢測項(xiàng)目、遇到“指標(biāo)卡住上不去”“驗(yàn)證集表現(xiàn)和業(yè)務(wù)現(xiàn)場脫節(jié)”等問題的工程師參考也適合想給數(shù)據(jù)團(tuán)隊(duì)建立質(zhì)量檢查流程的朋友。1. 問題聚焦目標(biāo)檢測里的標(biāo)簽噪聲到底有多普遍1.1 噪聲從哪來標(biāo)注流程中的結(jié)構(gòu)性弱點(diǎn)先說一個(gè)我自己的觀察。參與過某個(gè)模擬項(xiàng)目X的檢測數(shù)據(jù)集建設(shè)三千多張圖像前后動(dòng)用了五六個(gè)標(biāo)注員分了三輪任務(wù)。當(dāng)時(shí)團(tuán)隊(duì)按常規(guī)流程走初標(biāo)、質(zhì)檢、抽檢。抽檢比例定的是10%結(jié)果質(zhì)檢員反饋“整體還行”但后來我用模型一測發(fā)現(xiàn)事情遠(yuǎn)沒有那么樂觀。問題出在三個(gè)環(huán)節(jié)。第一邊界框的畫法很難統(tǒng)一。同樣一輛車有人畫得緊貼車身有人習(xí)慣上下左右留一點(diǎn)邊這個(gè)偏差在小目標(biāo)上尤其明顯一個(gè)小框差四五個(gè)像素IoU 可能就從0.75跌到0.5以下。第二類別混淆非常隱蔽。遠(yuǎn)端的小目標(biāo)、逆光目標(biāo)、被部分遮擋的目標(biāo)標(biāo)注員大概率會(huì)憑第一印象歸類尤其是一些外觀相似但語義不同的類別誤標(biāo)率會(huì)明顯升高。第三漏標(biāo)幾乎不可能避免。密集場景下標(biāo)注員掃完一遍之后漏掉幾個(gè)小目標(biāo)是常態(tài)。后來我專門做過一次全量復(fù)核把三千張圖重新逐框排查了一遍結(jié)果類別誤標(biāo)率約2%邊界框偏移超過正常尺度的約1.2%漏標(biāo)約占0.8%。單看每個(gè)比例都不算高但疊加起來意味著有接近4%的標(biāo)注樣本存在不同程度的質(zhì)量問題。這些樣本放在一萬張的訓(xùn)練集里就是四百個(gè)噪聲樣本足以讓模型學(xué)到錯(cuò)誤的邊框回歸模式和類別關(guān)聯(lián)特征。1.2 為什么分類任務(wù)的置信學(xué)習(xí)不能直接套用置信學(xué)習(xí)在圖像分類里已經(jīng)很成熟了。它的核心是拿“模型輸出的預(yù)測概率”和“標(biāo)注的類別”做比對找出那些模型非常確信、但和標(biāo)注不一致的樣本。一張圖對應(yīng)一個(gè)標(biāo)簽邏輯清晰統(tǒng)計(jì)量也容易構(gòu)建。但目標(biāo)檢測是完全不同的結(jié)構(gòu)。一張圖里有多個(gè)目標(biāo)每個(gè)目標(biāo)有自己的邊界框和類別模型輸出的不是圖像級別的預(yù)測而是密密麻麻的候選框和對應(yīng)的類別概率。如果直接把這些候選框丟進(jìn)置信學(xué)習(xí)流程框架根本不知道拿哪個(gè)框去對應(yīng)哪個(gè)標(biāo)注。更麻煩的是檢測模型的輸出自帶一個(gè)數(shù)量極其龐大的背景類一張圖可能產(chǎn)生上千個(gè)候選框而真正的目標(biāo)標(biāo)注往往只有幾個(gè)類別分布極不平衡。所以目標(biāo)檢測場景使用置信學(xué)習(xí)必須解決一個(gè)前置問題把“檢測問題”壓縮成“樣本級別的分類問題”同時(shí)把邊界框信息保留下來供后續(xù)約束使用。這一步做不好后面所有統(tǒng)計(jì)都是空中樓閣。1.3 約束模型解決什么問題純置信學(xué)習(xí)能回答“哪個(gè)標(biāo)注最有可能是錯(cuò)的”但回答不了“為什么錯(cuò)”以及“該不該糾正”。這正是約束模型存在的理由。約束模型相當(dāng)于給統(tǒng)計(jì)篩選加上了人類對目標(biāo)檢測任務(wù)的結(jié)構(gòu)性先驗(yàn)。比如“幾何約束”知道一個(gè)框的寬高比、面積、中心點(diǎn)位置是否符合該類目標(biāo)的正常形態(tài)“一致性約束”知道同一個(gè)目標(biāo)內(nèi)部的預(yù)測區(qū)域是否和標(biāo)注框高度重疊“分布約束”知道該類別在整體數(shù)據(jù)集中的統(tǒng)計(jì)特征是否出現(xiàn)明顯偏離。這些約束疊加在置信學(xué)習(xí)的輸出上能顯著降低誤殺率。舉一個(gè)我實(shí)際遇到的例子。一張圖像里有個(gè)很小的、被標(biāo)成“轎車”的目標(biāo)模型給出的預(yù)測概率中幾個(gè)相近類別的分?jǐn)?shù)都很低。單看置信學(xué)習(xí)這個(gè)樣本會(huì)被標(biāo)記為“可疑”。但幾何約束告訴我們這個(gè)框確實(shí)很小小目標(biāo)本身的預(yù)測不確定度就高模型置信度低很可能只是尺度問題而不是標(biāo)注錯(cuò)誤。這時(shí)候約束模型會(huì)把這個(gè)樣本從“可疑列表”中拿掉避免人工復(fù)核去做無效勞動(dòng)。2. 檢測場景下置信學(xué)習(xí)的方案選型與約束設(shè)計(jì)2.1 置信學(xué)習(xí)的核心邏輯從計(jì)數(shù)矩陣到可疑樣本識別先把置信學(xué)習(xí)的基本邏輯說清楚否則后面沒法講。假設(shè)數(shù)據(jù)集里有N個(gè)標(biāo)注樣本每個(gè)樣本有一個(gè)標(biāo)注類別j模型對每個(gè)樣本輸出一個(gè)概率向量p_hat。置信學(xué)習(xí)會(huì)計(jì)算一個(gè)關(guān)鍵量置信度閾值t_j。對類別j來說這個(gè)閾值是“所有標(biāo)注為類別j的樣本的預(yù)測概率p_j(x_i)”的平均值。直觀理解就是模型對“這些樣本屬于類別j”這件事的平均信心水平。然后構(gòu)建計(jì)數(shù)矩陣C。C[o][j]表示“真實(shí)標(biāo)簽應(yīng)該是類別o但標(biāo)注被寫成了類別j”的樣本數(shù)量估計(jì)。具體做法是對每個(gè)樣本x_i看模型預(yù)測概率最高的類別y_i。如果y_i不等于標(biāo)注類別j而且p_{y_i}(x_i) t_j就把它計(jì)入C[y_i][j]的候選。也就是說模型非常自信地認(rèn)為它屬于另一個(gè)類別而標(biāo)注者偏偏寫了當(dāng)前類別這個(gè)樣本就有噪聲嫌疑。計(jì)數(shù)矩陣算完之后可以通過置信學(xué)習(xí)的方法估計(jì)整體的噪聲標(biāo)簽數(shù)量然后對每個(gè)樣本計(jì)算一個(gè)“可疑分?jǐn)?shù)”按照分?jǐn)?shù)從高到低生成待排查列表。我在項(xiàng)目里用的是開源庫實(shí)現(xiàn)但建議每一個(gè)使用這套流程的人都理解上面的邏輯因?yàn)楹罄m(xù)調(diào)閾值、調(diào)約束權(quán)重本質(zhì)上都是在調(diào)整“模型自信到什么程度才算可疑”這條線。2.2 檢測任務(wù)適配先匹配再統(tǒng)計(jì)檢測任務(wù)想要復(fù)用置信學(xué)習(xí)的框架第一個(gè)動(dòng)作是生成“預(yù)測-標(biāo)注”配對表。這個(gè)環(huán)節(jié)決定了整個(gè)流程的可靠性也最容易出錯(cuò)。我的做法分四步。第一步訓(xùn)練一個(gè)基線檢測器保存所有圖像最終的預(yù)測框和類別概率。第二步對每個(gè)標(biāo)注框GT計(jì)算它與所有預(yù)測框的IoU找到IoU最大的那個(gè)預(yù)測框。第三步判斷這個(gè)框是否足夠“匹配”一般取IoU 0.5作為匹配線。第四步對每個(gè)GT標(biāo)注生成一條記錄包含GT框坐標(biāo)、GT類別、匹配到的預(yù)測框坐標(biāo)、預(yù)測框的完整類別概率分布、最大概率類別、以及兩者IoU。這套流程跑完之后數(shù)據(jù)從“檢測格式”變成了“分類格式”一條記錄對應(yīng)一個(gè)標(biāo)注樣本標(biāo)注類別來自GT預(yù)測概率來自對應(yīng)預(yù)測框。后面的置信學(xué)習(xí)就可以直接在這些記錄上工作。還有一部分GT沒有匹配到任何預(yù)測框。這時(shí)候有兩種可能模型漏檢了或者這個(gè)標(biāo)注本身就是噪聲。我的處理方式是單獨(dú)打一個(gè)“未匹配”的標(biāo)簽在后續(xù)人工復(fù)核中單獨(dú)查看不在統(tǒng)計(jì)階段直接判死刑。處理完這個(gè)環(huán)節(jié)才進(jìn)入正式的置信學(xué)習(xí)計(jì)算。2.3 四類常用的約束條件與適用范圍配對表生成后就可以疊加約束條件了。我常用的約束有四類每一類的目標(biāo)和風(fēng)險(xiǎn)都不同。約束類別判斷規(guī)則適用場景主要風(fēng)險(xiǎn)置信度約束模型對標(biāo)注類別的概率低于閾值對另一個(gè)類別概率高于閾值所有檢測任務(wù)的基礎(chǔ)篩選對低置信樣本容易誤殺需要配合其他約束幾何約束框面積、寬高比、中心點(diǎn)位置超出該類別的常見范圍類別外觀形態(tài)相對固定的場景如車輛、行人、商品特殊姿態(tài)、遠(yuǎn)小目標(biāo)容易被誤傷一致性約束匹配預(yù)測框與GT框的IoU偏低或預(yù)測框類別分布不穩(wěn)定標(biāo)注框偏移明顯的場景IoU閾值設(shè)置不當(dāng)會(huì)導(dǎo)致大量樣本被標(biāo)記分布約束某樣本的預(yù)測行為與同類別絕大多數(shù)樣本顯著偏離類別分布不均衡、數(shù)據(jù)來源復(fù)雜類別樣本量過小時(shí)統(tǒng)計(jì)穩(wěn)定性差以幾何約束為例我在車輛檢測數(shù)據(jù)集上會(huì)統(tǒng)計(jì)所有“轎車”標(biāo)注框的寬高比分布正常情況下集中在1.2到2.0之間。如果某個(gè)標(biāo)注框的寬高比達(dá)到了3.5同時(shí)模型預(yù)測它屬于“卡車”的概率又很高這幾乎可以斷定是標(biāo)注類別錯(cuò)誤或者框畫錯(cuò)了。反過來如果某個(gè)類別本身就是長條形的比如“圍欄”那寬高比極端就是正常現(xiàn)象幾何約束就不能一視同仁。2.4 約束強(qiáng)度怎么調(diào)一個(gè)可量化的小框架約束條件搭配使用最怕的事情是權(quán)重拍腦袋。我在幾個(gè)項(xiàng)目里總結(jié)了一個(gè)相對可量化的參數(shù)框架不完美但比純靠感覺要強(qiáng)很多。實(shí)際操作中我會(huì)給每個(gè)樣本計(jì)算一個(gè)綜合可疑分?jǐn)?shù)。置信學(xué)習(xí)部分產(chǎn)出一個(gè)基礎(chǔ)分?jǐn)?shù)幾何約束產(chǎn)出一個(gè)幾何偏離度一致性約束產(chǎn)出一個(gè)匹配質(zhì)量分分布約束產(chǎn)出一個(gè)統(tǒng)計(jì)離群分。最后按照場景權(quán)重加權(quán)求和。權(quán)重怎么定看業(yè)務(wù)側(cè)最在意什么問題。如果框的位置不準(zhǔn)導(dǎo)致下游數(shù)據(jù)測量偏差大就把幾何約束和一致性約束的權(quán)重調(diào)高如果類別混淆更影響指標(biāo)就把置信學(xué)習(xí)基礎(chǔ)分?jǐn)?shù)權(quán)重調(diào)高。調(diào)權(quán)重的驗(yàn)證方式也很重要。建議每調(diào)整一組參數(shù)就從篩選出的可疑樣本里隨機(jī)抽三五十個(gè)讓人工做一次快速復(fù)核統(tǒng)計(jì)“篩選準(zhǔn)確率”。準(zhǔn)確率太高比如90%以上說明約束太保守可能漏掉了不少噪聲準(zhǔn)確率在60%左右通常比較健康說明既有明顯錯(cuò)標(biāo)也篩出了一些隱蔽問題人工復(fù)核的性價(jià)比最高。3. 實(shí)操流程從臟數(shù)據(jù)到可復(fù)用數(shù)據(jù)集3.1 環(huán)境準(zhǔn)備與基線模型訓(xùn)練整套流程跑下來硬件要求和普通檢測訓(xùn)練差不多不需要額外的資源。我用的是一臺單卡訓(xùn)練環(huán)境顯存夠跑基線模型就行。訓(xùn)練部分沒有什么特殊之處關(guān)鍵是幾個(gè)處理樣本的腳本要寫干凈。流程第一步是訓(xùn)練基線模型。建議直接用項(xiàng)目原來的訓(xùn)練配置和backbone不要為了這個(gè)流程重新設(shè)計(jì)模型結(jié)構(gòu)。目標(biāo)是用這個(gè)模型輸出的概率分布作為“數(shù)據(jù)質(zhì)量的探針”模型性能太差或太好都會(huì)影響篩選效果。太差時(shí)預(yù)測概率沒有區(qū)分度太好時(shí)又容易掩蓋標(biāo)注噪聲。訓(xùn)練收斂后用測試集或者驗(yàn)證集做一次完整推理導(dǎo)出所有圖像的預(yù)測框文件和概率向量。這里有一個(gè)小技巧輸出概率不要只保留最終分類結(jié)果要把每個(gè)類別的概率全部導(dǎo)出后續(xù)置信學(xué)習(xí)計(jì)算計(jì)數(shù)矩陣時(shí)用得上。我通常會(huì)保存為NumPy數(shù)組或者JSON文件字段結(jié)構(gòu)和2.2節(jié)里的配對表保持一致。3.2 生成“預(yù)測-標(biāo)注”配對表這個(gè)步驟是全流程的關(guān)鍵。下面給出一個(gè)簡化版的偽代碼說明配對邏輯pairs [] for image_id in dataset: gt_boxes dataset.get_gt(image_id) # 讀取真實(shí)標(biāo)注框 preds detector.predict(image_id) # 模型輸出的全部預(yù)測框 for gt in gt_boxes: best_iou 0.0 best_pred None for pred in preds: iou compute_iou(gt.box, pred.box) if iou best_iou: best_iou iou best_pred pred pair { image_id: image_id, gt_box: gt.box, gt_label: gt.label, pred_box: best_pred.box if best_iou 0.5 else None, pred_probs: best_pred.probs if best_iou 0.5 else None, max_prob_class: best_pred.probs.argmax() if best_iou 0.5 else unmatched, match_iou: best_iou } pairs.append(pair)整個(gè)過程要控制兩個(gè)參數(shù)IoU閾值和匹配策略。IoU閾值我通常取0.5這是檢測任務(wù)里區(qū)分“還算準(zhǔn)”和“完全不準(zhǔn)”的常見分界線。匹配策略上每個(gè)GT只取IoU最大的預(yù)測框而不是取Top-K做平均。原因是Top-K平均會(huì)把不同語義的預(yù)測概率混在一起反而破壞置信學(xué)習(xí)的統(tǒng)計(jì)基礎(chǔ)。3.3 置信學(xué)習(xí)篩選與約束過濾配對表生成后把它整理成一個(gè)標(biāo)準(zhǔn)的樣本表喂給置信學(xué)習(xí)流程。開源的實(shí)現(xiàn)可以直接用它會(huì)輸出每個(gè)樣本的可疑概率和類別并把噪聲樣本按照風(fēng)險(xiǎn)程度排序。拿到置信學(xué)習(xí)的輸出后開始疊加約束條件。以我之前做的一個(gè)商品檢測項(xiàng)目為例三個(gè)類別數(shù)據(jù)量不均衡其中“小瓶裝飲料”樣本量很大“促銷標(biāo)簽”樣本量很小。置信學(xué)習(xí)跑完之后第一輪篩出了約800個(gè)可疑樣本。這時(shí)候疊加幾何約束發(fā)現(xiàn)其中約150個(gè)是因?yàn)槟繕?biāo)太靠近圖像邊緣、模型預(yù)測置信度低而被誤判的直接排除。接著疊加一致性約束要求匹配預(yù)測框和GT框的IoU不能過低又排除約80個(gè)實(shí)際上“框畫得還行但模型確實(shí)沒學(xué)好”的樣本。篩選結(jié)果以表格形式保存字段包括圖像ID、框坐標(biāo)、GT類別、預(yù)測類別、最大概率、IoU、綜合可疑分、命中的約束列表。這個(gè)表就是人工復(fù)核的工作臺。我會(huì)額外加一列“篩選原因”用簡短的文字說明這個(gè)樣本為什么被標(biāo)記比如“類別誤標(biāo)概率高”或者“幾何形態(tài)離群”。3.4 可疑樣本的人工復(fù)核策略與數(shù)據(jù)修正自動(dòng)篩選的終點(diǎn)是人工復(fù)核的起點(diǎn)。這一步的質(zhì)量直接影響數(shù)據(jù)修正的結(jié)果。我的復(fù)核策略是雙人獨(dú)立初判異議樣本由經(jīng)驗(yàn)更豐富的人做最終裁決。每人看到一個(gè)可疑樣本時(shí)需要判斷四種處理方式之一修改類別、調(diào)整邊界框、刪除樣本、保持不變。這四種操作對應(yīng)的業(yè)務(wù)代價(jià)不同。修改類別最常見但要求復(fù)核員對類別邊界有清晰認(rèn)識調(diào)整邊界框需要仔細(xì)看目標(biāo)輪廓最耗時(shí)刪除樣本在檢測任務(wù)里要謹(jǐn)慎一個(gè)樣本可能同時(shí)含多個(gè)目標(biāo)刪掉一個(gè)框不影響其他框但如果整張圖都被處理就要確認(rèn)沒有誤刪其他有效信息。復(fù)核過程中我會(huì)記錄每條記錄的修改狀態(tài)并保存審計(jì)日志。日志里至少包含執(zhí)行人、執(zhí)行時(shí)間、原始標(biāo)注信息、修改后信息、修改原因。這樣即使后續(xù)出現(xiàn)問題也能追溯到源頭。3.5 清洗后的再訓(xùn)練與效果驗(yàn)證數(shù)據(jù)修正完成后用清洗后的數(shù)據(jù)重新訓(xùn)練一版模型。這里我強(qiáng)烈建議做A/B對比A組直接用原始數(shù)據(jù)訓(xùn)練B組用清洗后數(shù)據(jù)訓(xùn)練其他訓(xùn)練配置完全一致。對比時(shí)不要只盯整體指標(biāo)要看類別粒度上的變化。我曾經(jīng)在某個(gè)通道交通數(shù)據(jù)集上做過一次完整驗(yàn)證清洗前基線mAP為0.612清洗后mAP為0.671提升接近6個(gè)百分點(diǎn)??雌饋頋q幅不小但拆開看類別發(fā)現(xiàn)“摩托車”這個(gè)類別提升最多誤標(biāo)率降低帶來的收益最大而原本標(biāo)注質(zhì)量就比較好的“公交車”類別幾乎沒有變化。這說明清洗流程大概率是在修正真正的噪聲而不是通過改變數(shù)據(jù)分布來刷指標(biāo)。還要關(guān)注一個(gè)反向指標(biāo)如果清洗后某個(gè)類別的指標(biāo)不升反降要立刻排查是不是把有效樣本誤刪了。這種情況在“長尾類別”上容易發(fā)生因?yàn)闃颖颈緛砭蜕僬`刪一個(gè)的影響會(huì)被放大。4. 踩坑記錄與問題排查速查4.1 置信閾值設(shè)多少才合理置信學(xué)習(xí)里很多參數(shù)都有默認(rèn)值但默認(rèn)值不等于合理值。我在項(xiàng)目里最早直接跑默認(rèn)配置結(jié)果是可疑列表非常長超過數(shù)據(jù)總量的10%人工復(fù)核壓力巨大。后來我采用了一個(gè)更直觀的自適應(yīng)方案。先計(jì)算出每個(gè)類別的置信度閾值t_j然后不直接用t_j作為篩選線而是看類別置信度分布的10%分位數(shù)。換句話說只把那些“模型對它們的信心低到超出同類別90%樣本”的標(biāo)注挑出來。這樣做的好處是清洗強(qiáng)度可以量化調(diào)整分位數(shù)取5%篩選嚴(yán)格但不遺漏分位數(shù)取25%適合粗篩先圈出一個(gè)人工復(fù)核池再逐步收緊。4.2 類別極不平衡時(shí)篩選會(huì)偏類別不平衡是置信學(xué)習(xí)的共性難題。大類樣本多統(tǒng)計(jì)量穩(wěn)定小類樣本少幾個(gè)異常值就能擾動(dòng)整個(gè)類別的置信度閾值。在小類別上置信學(xué)習(xí)經(jīng)常會(huì)把正常樣本當(dāng)成可疑樣本。我的解法是拆分處理。先把樣本量充足的高頻類別跑完整置信學(xué)習(xí)流程樣本量較少的低頻類別單獨(dú)設(shè)定更寬松的閾值同時(shí)提高人工復(fù)核優(yōu)先級。比如某個(gè)類別只有五十個(gè)樣本我會(huì)直接把這五十個(gè)樣本全部列入復(fù)核列表而不是讓統(tǒng)計(jì)模型決定誰該被查。4.3 小目標(biāo)框的置信度普遍偏低小目標(biāo)在檢測模型里的置信度整體低于中大型目標(biāo)這是結(jié)構(gòu)性的現(xiàn)象因?yàn)樾∧繕?biāo)包含的視覺信息少特征表達(dá)不夠充分。如果置信學(xué)習(xí)不區(qū)分尺度小目標(biāo)標(biāo)注會(huì)被系統(tǒng)性誤傷。應(yīng)對方式是引入尺度感知的約束。我在數(shù)據(jù)集預(yù)處理階段按GT框面積把樣本分成小目標(biāo)、中目標(biāo)、大目標(biāo)三檔分別計(jì)算置信度閾值和幾何形態(tài)統(tǒng)計(jì)量互不干擾。這樣篩選時(shí)小目標(biāo)只需要和同類尺度下的樣本比不會(huì)被大目標(biāo)的高置信度帶偏。4.4 約束條件互相打架怎么辦多個(gè)約束同時(shí)生效時(shí)出現(xiàn)互相矛盾的結(jié)果是常態(tài)。最典型的情況是一個(gè)被幾何約束判為“形態(tài)異?!钡臉颖就瑫r(shí)又被置信約束判為“預(yù)測一致”兩邊的結(jié)論完全沖突。我的經(jīng)驗(yàn)是給約束設(shè)置優(yōu)先級而不是做加權(quán)求和完事。默認(rèn)情況下我對明顯影響數(shù)據(jù)可用性的硬約束優(yōu)先決斷。例如GT框和預(yù)測框的IoU低于0.3同時(shí)GT框形態(tài)又嚴(yán)重偏離類別統(tǒng)計(jì)此時(shí)基本認(rèn)定標(biāo)注本身有問題置信約束的“預(yù)測一致”已經(jīng)沒有參考價(jià)值。優(yōu)先級順序是幾何約束優(yōu)先于一致性約束一致性約束優(yōu)先于置信度約束。優(yōu)先級更高的約束先排除一批樣本剩下的再送人工復(fù)核。4.5 迭代清洗會(huì)不會(huì)把數(shù)據(jù)集洗空有朋友問過清洗清洗洗到最后數(shù)據(jù)集會(huì)不會(huì)越來越小甚至把有效信息都洗掉。這個(gè)擔(dān)憂很實(shí)在但不應(yīng)該成為不去清洗的理由。我建議設(shè)定一個(gè)保留率下限。對每個(gè)類別設(shè)定最低保留樣本數(shù)當(dāng)自動(dòng)篩選造成該類別的候選刪除量超過一定比例時(shí)停止自動(dòng)刪除只保留“復(fù)核后確認(rèn)有問題”的樣本。同時(shí)每一輪清洗后都要在驗(yàn)證集上重新評估如果發(fā)現(xiàn)指標(biāo)下降立刻檢查是不是清洗策略太過激進(jìn)。清洗的目標(biāo)不是清到零噪聲而是把噪聲控在一個(gè)可以接受的水平。5. 這套方案還能怎么擴(kuò)展5.1 結(jié)合主動(dòng)學(xué)習(xí)做低成本標(biāo)注傳統(tǒng)標(biāo)注流程成本高效率低。約束模型下的置信學(xué)習(xí)輸出可以天然地作為主動(dòng)學(xué)習(xí)的采樣依據(jù)。那些置信度低、約束條件觸發(fā)的樣本往往是模型最“不確定”的區(qū)域也是新模型提升最需要的訓(xùn)練數(shù)據(jù)。實(shí)操中我先把置信學(xué)習(xí)篩出的可疑樣本分成兩類一類是標(biāo)注質(zhì)量確實(shí)有問題直接修正一類是模型自己學(xué)不好的難例主動(dòng)增加它們的標(biāo)注密度或采集更多類似場景數(shù)據(jù)。兩者都能帶來模型效果提升但處理動(dòng)作完全不同。5.2 與半監(jiān)督學(xué)習(xí)聯(lián)動(dòng)清洗后的數(shù)據(jù)也可以喂給半監(jiān)督訓(xùn)練。具體做法是對置信學(xué)習(xí)判定為“高置信且預(yù)測一致”的未標(biāo)注數(shù)據(jù)打上偽標(biāo)簽作為額外的訓(xùn)練樣本。但這里有一個(gè)風(fēng)險(xiǎn)偽標(biāo)簽的錯(cuò)誤會(huì)隨著訓(xùn)練過程被放大。我的經(jīng)驗(yàn)是疊加一個(gè)區(qū)域級的一致性條件只保留模型多次推理結(jié)果穩(wěn)定的偽標(biāo)簽樣本并且把偽標(biāo)簽樣本在訓(xùn)練batch里的比例控制在20%以內(nèi)。用約束模型篩選過的偽標(biāo)簽噪聲比例會(huì)低很多半監(jiān)督的收益也更穩(wěn)定。5.3 從檢測擴(kuò)展到實(shí)例分割/多模態(tài)這套流程的底層邏輯在其他結(jié)構(gòu)化標(biāo)注任務(wù)里同樣適用。實(shí)例分割可以看成是“框加上一個(gè)mask”置信學(xué)習(xí)針對GT框跑一遍mask部分再做像素級對比多模態(tài)檢測則可以把文本描述和視覺特征的一致性也當(dāng)成一類約束條件。擴(kuò)展時(shí)最需要留意的還是約束條件的設(shè)計(jì)要與任務(wù)結(jié)構(gòu)對齊。分類任務(wù)里置信學(xué)習(xí)直接可用檢測任務(wù)里要先生成配對表分割任務(wù)里還要處理mask質(zhì)量評估多模態(tài)任務(wù)里則有跨模態(tài)一致性評估。每一步增加的復(fù)雜度都會(huì)帶來額外收益。我個(gè)人在實(shí)際操作中的體會(huì)是數(shù)據(jù)清洗這件事最怕的不是噪聲多而是把它當(dāng)成一次性工程。第一次做完以后把“數(shù)據(jù)體檢”變成一個(gè)常規(guī)檢查站每次新增數(shù)據(jù)都先跑一遍成本很低收益卻很穩(wěn)定。遇到新的數(shù)據(jù)源先用小模型快速跑一版然后做約束過濾把可疑樣本抽出來讓人工復(fù)核確認(rèn)后再進(jìn)入正式訓(xùn)練。這樣做下來模型的穩(wěn)定性明顯好很多訓(xùn)練過程中也不會(huì)因?yàn)殡S機(jī)噪聲導(dǎo)致反復(fù)調(diào)參。希望這套思路也能幫你少踩一些坑把精力放到真正有價(jià)值的地方。