量數(shù)據(jù)集建設(shè)指南:從數(shù)據(jù)清洗到標(biāo)注管控的完整路徑)
簡(jiǎn)介圍繞人工智能高質(zhì)量數(shù)據(jù)集建設(shè)的系統(tǒng)性研究文檔適合AI領(lǐng)域研究者、數(shù)據(jù)工程師及政策規(guī)劃人員參考針對(duì)數(shù)據(jù)質(zhì)量參差不齊、標(biāo)注不規(guī)范等現(xiàn)實(shí)問(wèn)題給出系統(tǒng)化應(yīng)對(duì)思路。文檔從數(shù)據(jù)集定義與特點(diǎn)入手梳理數(shù)據(jù)采集與預(yù)處理、數(shù)據(jù)標(biāo)注與質(zhì)量控制、數(shù)據(jù)存儲(chǔ)與管理等關(guān)鍵要素進(jìn)而從政策法規(guī)與標(biāo)準(zhǔn)制定、技術(shù)研發(fā)與創(chuàng)新、產(chǎn)學(xué)研合作與資源共享、人才培養(yǎng)與激勵(lì)機(jī)制四個(gè)維度展開(kāi)實(shí)施路徑并輔以國(guó)內(nèi)外案例對(duì)比與挑戰(zhàn)應(yīng)對(duì)策略。全文為docx格式共1個(gè)文件壓縮包約68KB目錄結(jié)構(gòu)完整便于按章節(jié)定位閱讀。已有107人瀏覽學(xué)習(xí)閱讀者由此可掌握高質(zhì)量數(shù)據(jù)集建設(shè)的理論框架、操作要點(diǎn)和長(zhǎng)期規(guī)劃建議適合作為課題研究、方案設(shè)計(jì)或教學(xué)培訓(xùn)的參考資料。1. 為什么高質(zhì)量數(shù)據(jù)集成了人工智能項(xiàng)目真正的瓶頸先講個(gè)我自己的真實(shí)經(jīng)歷。前兩年幫一家制造企業(yè)做缺陷檢測(cè)算法工程師換了三版模型結(jié)構(gòu)召回率死活卡在87%上不去。后來(lái)把訓(xùn)練數(shù)據(jù)從頭到尾翻了一遍發(fā)現(xiàn)問(wèn)題根本不在模型一千多張標(biāo)注圖里有將近三成的小缺陷框偏移了一兩個(gè)像素還有幾十張圖壓根標(biāo)注錯(cuò)了缺陷類(lèi)別。把數(shù)據(jù)重新清洗、重新標(biāo)注之后同樣一套模型結(jié)構(gòu)召回率直接干到94%。從那以后我就形成了一個(gè)習(xí)慣項(xiàng)目效果不對(duì)先查數(shù)據(jù)再調(diào)模型。這個(gè)順序基本沒(méi)讓我踩過(guò)大坑?,F(xiàn)在聊“人工智能高質(zhì)量數(shù)據(jù)集建設(shè)”很多團(tuán)隊(duì)其實(shí)已經(jīng)意識(shí)到數(shù)據(jù)的重要性但真正落到執(zhí)行層面問(wèn)題一堆數(shù)據(jù)來(lái)源雜、格式亂、標(biāo)注標(biāo)準(zhǔn)不統(tǒng)一、臟數(shù)據(jù)沒(méi)人管、版本迭代靠手動(dòng)覆蓋。這些問(wèn)題處理不好后面所有環(huán)節(jié)都在給前面填坑。尤其是做視覺(jué)方向的團(tuán)隊(duì)天天跟YOLO、COCO格式、VOC格式打交道數(shù)據(jù)集的質(zhì)量直接決定了你訓(xùn)練出的模型能不能上線。這篇文章就是想把“高質(zhì)量數(shù)據(jù)集”這件事掰開(kāi)揉碎講講從需求分析、數(shù)據(jù)采集、清洗整理、標(biāo)注管控到版本管理的完整實(shí)施路徑。適合正在搭數(shù)據(jù)流程的算法工程師、帶數(shù)據(jù)標(biāo)注團(tuán)隊(duì)的負(fù)責(zé)人、以及做人工智能課程設(shè)計(jì)或者大作業(yè)的學(xué)生參考。內(nèi)容不繞彎子全是實(shí)操層面的東西你拿過(guò)去可以直接對(duì)應(yīng)到自己項(xiàng)目里用。先說(shuō)一個(gè)生活化的類(lèi)比。數(shù)據(jù)集之于人工智能模型就像食材之于廚師。你請(qǐng)一個(gè)米其林大廚來(lái)給他一筐爛菜葉、過(guò)期肉他也做不出像樣的席面。反過(guò)來(lái)食材新鮮、搭配合理哪怕廚師手藝普通一點(diǎn)做出來(lái)的菜也差不到哪去。模型崩了、效果不對(duì)、上線表現(xiàn)拉胯絕大多數(shù)時(shí)候不是算法不行是喂進(jìn)去的“食材”不行。那什么樣的數(shù)據(jù)集算“高質(zhì)量”我自己的標(biāo)準(zhǔn)是六個(gè)維度準(zhǔn)確性、多樣性、一致性、時(shí)效性、完整性、安全性。準(zhǔn)確性就是標(biāo)注和真值要對(duì)不要有錯(cuò)標(biāo)漏標(biāo)多樣性講究的是場(chǎng)景、光線、角度、樣本形態(tài)要足夠豐富一致性要求不同標(biāo)注員、不同批次標(biāo)注的標(biāo)準(zhǔn)統(tǒng)一不能同一類(lèi)東西一個(gè)人框成矩形另一個(gè)人框成多邊形時(shí)效性指的是數(shù)據(jù)要貼合當(dāng)前真實(shí)分布不能拿三年前的舊數(shù)據(jù)硬套現(xiàn)在的場(chǎng)景完整性是指覆蓋邊界情況極端樣本和長(zhǎng)尾案例不能缺安全性則強(qiáng)調(diào)數(shù)據(jù)不能涉及侵權(quán)、隱私和敏感內(nèi)容。這六個(gè)詞看著簡(jiǎn)單每一條展開(kāi)都是在真實(shí)項(xiàng)目中反復(fù)踩出來(lái)的教訓(xùn)。2. 建設(shè)高質(zhì)量數(shù)據(jù)集的整體路徑拆解2.1 先做需求拆解別急著追熱點(diǎn)找數(shù)據(jù)很多人一上來(lái)就問(wèn)“哪里能下載現(xiàn)成的數(shù)據(jù)集”我通常都會(huì)潑一盆冷水?,F(xiàn)成數(shù)據(jù)集比如MNIST手寫(xiě)數(shù)字、KITTI自動(dòng)駕駛、COCO2017這些經(jīng)典集合練手學(xué)模型完全沒(méi)問(wèn)題但放到真實(shí)業(yè)務(wù)場(chǎng)景里幾乎不可能直接滿足需求。原因很簡(jiǎn)單你的業(yè)務(wù)場(chǎng)景和數(shù)據(jù)分布跟公開(kāi)數(shù)據(jù)集的采集環(huán)境差別太大。用COCO預(yù)訓(xùn)練的模型做工業(yè)質(zhì)檢泛化效果往往慘不忍睹核心就是數(shù)據(jù)分布對(duì)不上。所以第一步永遠(yuǎn)是需求拆解。拿一個(gè)問(wèn)題清單去問(wèn)業(yè)務(wù)方模型要識(shí)別哪些類(lèi)別在什么環(huán)境下運(yùn)行光照、角度、距離目標(biāo)物體有什么形態(tài)變化可接受哪些錯(cuò)誤漏檢更嚴(yán)重還是誤報(bào)更嚴(yán)重這些問(wèn)題直接決定了數(shù)據(jù)采集的方向和標(biāo)注策略。舉個(gè)例子做X光安檢物品檢測(cè)你需要考慮的不是“我找個(gè)通用目標(biāo)檢測(cè)數(shù)據(jù)集來(lái)微調(diào)”而是“安檢機(jī)成像下物體的遮擋、堆疊、變形情況嚴(yán)重不同材質(zhì)物品在X光下的紋理和灰度差異極大”。如果需求拆解不到位很可能你辛辛苦苦標(biāo)注了幾千張圖發(fā)現(xiàn)類(lèi)別分布嚴(yán)重失衡或者采集場(chǎng)景單一導(dǎo)致模型上現(xiàn)場(chǎng)直接失靈。需求拆解做完之后數(shù)據(jù)規(guī)模、類(lèi)別數(shù)量、場(chǎng)景覆蓋、標(biāo)注精度要求、數(shù)據(jù)格式這些指標(biāo)也就順勢(shì)定下來(lái)了。2.2 數(shù)據(jù)獲取自采、公開(kāi)數(shù)據(jù)集與合作數(shù)據(jù)怎么選需求明確之后數(shù)據(jù)從哪來(lái)常見(jiàn)的路子有三條自己采集、用公開(kāi)數(shù)據(jù)集打底、從合作方拿數(shù)據(jù)。三條路各有取舍。自己采集最貼近真實(shí)場(chǎng)景但成本最高。一套工業(yè)相機(jī)加光源系統(tǒng)就能花掉不少預(yù)算還要考慮人員、場(chǎng)地、時(shí)間成本。公開(kāi)數(shù)據(jù)集成本低比如做通用目標(biāo)檢測(cè)可以用COCO2017做預(yù)訓(xùn)練做遙感識(shí)別可以用DOTA數(shù)據(jù)集做醫(yī)學(xué)圖像有各種專(zhuān)病數(shù)據(jù)集但問(wèn)題在于公開(kāi)數(shù)據(jù)的場(chǎng)景和標(biāo)注標(biāo)準(zhǔn)未必匹配你的業(yè)務(wù)需求一般適合做底座或者做預(yù)訓(xùn)練不適合直接做最終訓(xùn)練集。合作數(shù)據(jù)通常質(zhì)量不錯(cuò)但要重點(diǎn)處理數(shù)據(jù)的格式統(tǒng)一和權(quán)限合規(guī)問(wèn)題別拿到手才發(fā)現(xiàn)標(biāo)注風(fēng)格五花八門(mén)或者沒(méi)法確認(rèn)數(shù)據(jù)來(lái)源是否干凈。我的建議是搞組合策略公開(kāi)數(shù)據(jù)集做底座解決模型前期收斂問(wèn)題自采數(shù)據(jù)做核心覆蓋業(yè)務(wù)真實(shí)場(chǎng)景合作數(shù)據(jù)做補(bǔ)充用來(lái)擴(kuò)邊界場(chǎng)景和長(zhǎng)尾案例。組合策略比單一渠道穩(wěn)妥得多也方便后面做數(shù)據(jù)配比調(diào)整。2.3 清洗、去重、整理這步千萬(wàn)別省數(shù)據(jù)拿回來(lái)不是直接就能喂給模型的清洗整理這一步?jīng)Q定后面所有流程的體驗(yàn)。我見(jiàn)過(guò)不少團(tuán)隊(duì)原始數(shù)據(jù)下載完直接扔給標(biāo)注員結(jié)果標(biāo)注員光處理亂七八糟的格式就耗掉一半時(shí)間成本翻倍還容易出錯(cuò)。清洗主要做四件事。第一是去重相近視角、相近場(chǎng)景的重復(fù)樣本會(huì)放大模型對(duì)特定模式的過(guò)擬合用感知哈希或者特征向量的方式做相似度去重是比較常用的手段。第二是去臟模糊、過(guò)曝、損壞、帶水印的圖該刪就刪不要心疼臟數(shù)據(jù)留著只會(huì)拉低訓(xùn)練效果。第三是格式統(tǒng)一無(wú)論來(lái)源是手機(jī)拍攝、監(jiān)控截圖、掃描件還是傳感器導(dǎo)出最終都要統(tǒng)一成同一套命名規(guī)則和文件格式。第四是元數(shù)據(jù)補(bǔ)齊每張樣本至少應(yīng)該記錄來(lái)源、場(chǎng)景、采集時(shí)間、光線條件這些信息方便后面分析錯(cuò)誤案例時(shí)回溯問(wèn)題根源。我見(jiàn)過(guò)太多團(tuán)隊(duì)在這個(gè)環(huán)節(jié)上偷懶結(jié)果訓(xùn)練時(shí)發(fā)現(xiàn)數(shù)據(jù)里混著格式錯(cuò)誤的文件或者同一類(lèi)物體兩種標(biāo)注方式并存最后只能回頭重新清洗。這中間的返工成本遠(yuǎn)大于一開(kāi)始就把流程做干凈的成本。3. 標(biāo)注與質(zhì)量管控決定成果天花板的環(huán)節(jié)3.1 標(biāo)注規(guī)范怎么定才可執(zhí)行標(biāo)注規(guī)范是數(shù)據(jù)質(zhì)量管控的“法律文件”但很多團(tuán)隊(duì)的標(biāo)注規(guī)范寫(xiě)得太粗什么“把目標(biāo)框出來(lái)”這種話等于沒(méi)寫(xiě)。真正能落地的標(biāo)注規(guī)范必須對(duì)每個(gè)類(lèi)別給出明確的邊界定義。以目標(biāo)檢測(cè)的標(biāo)注為例你至少要規(guī)定清楚這幾件事物體被遮擋超過(guò)多少比例不需要標(biāo)注物體在圖像邊緣只露出一部分時(shí)框的邊界怎么切兩個(gè)物體緊密重疊時(shí)各自框的邊界怎么卡模糊到什么程度算不可標(biāo)注每個(gè)類(lèi)別有沒(méi)有容易混淆的近似類(lèi)別區(qū)別標(biāo)準(zhǔn)是什么這些問(wèn)題不定義清楚標(biāo)注員的自由發(fā)揮空間一大一致性一定崩。具體操作上我建議規(guī)范里帶兩樣?xùn)|西一是正反例圖每個(gè)類(lèi)別配一兩張標(biāo)準(zhǔn)標(biāo)注圖和兩張錯(cuò)誤標(biāo)注圖直觀展示“對(duì)”和“錯(cuò)”的區(qū)別二是常見(jiàn)疑難case的截圖把容易踩坑的點(diǎn)集中列出來(lái)。標(biāo)注規(guī)范不是寫(xiě)一次就完事應(yīng)該每跑完一批數(shù)據(jù)就復(fù)盤(pán)一次把新出現(xiàn)的分歧點(diǎn)補(bǔ)充進(jìn)去形成持續(xù)更新的機(jī)制。3.2 質(zhì)量抽檢與一致性校驗(yàn)怎么做標(biāo)注完成之后必須設(shè)置質(zhì)量檢查環(huán)節(jié)不能直接進(jìn)訓(xùn)練管道。最常用的是分層抽樣抽檢按標(biāo)注員、按類(lèi)別、按場(chǎng)景維度分別抽一定比例的數(shù)據(jù)檢查標(biāo)注的準(zhǔn)確率。如果某一類(lèi)或者某一位標(biāo)注員的錯(cuò)誤率超標(biāo)這一批數(shù)據(jù)全部退回重做。一致性校驗(yàn)更復(fù)雜一些。做法是拿同一批數(shù)據(jù)給兩個(gè)不同標(biāo)注員各標(biāo)一遍對(duì)比兩者之間的差異常見(jiàn)的指標(biāo)是IoU交并比和類(lèi)別一致性比率。如果兩個(gè)標(biāo)注員對(duì)同一目標(biāo)的框交并比低于閾值或者類(lèi)別判斷不一致說(shuō)明規(guī)范理解有分歧需要拉齊標(biāo)準(zhǔn)。這類(lèi)工作現(xiàn)在被歸到“人工智能訓(xùn)練師”的核心技能里確實(shí)名副其實(shí)因?yàn)槟P捅憩F(xiàn)的分水嶺往往就在這里。另外建議給標(biāo)注員做能力畫(huà)像記錄每個(gè)人在哪些類(lèi)別的表現(xiàn)更穩(wěn)定、哪些類(lèi)別的錯(cuò)誤更頻繁。標(biāo)注質(zhì)量不是平均的有人對(duì)遮擋場(chǎng)景特別敏感有人對(duì)模糊目標(biāo)的判斷更準(zhǔn)確把任務(wù)分給擅長(zhǎng)的人整體質(zhì)量能上一個(gè)大臺(tái)階。3.3 數(shù)據(jù)版本管理與迭代機(jī)制數(shù)據(jù)集一旦開(kāi)始迭代沒(méi)有版本管理就是災(zāi)難。我見(jiàn)過(guò)有人把數(shù)據(jù)集文件夾命名成“final_final_v3”過(guò)兩天又改成“final_v3_改”最后整個(gè)團(tuán)隊(duì)都搞不清哪個(gè)是當(dāng)前有效版本。這跟代碼管理不搞Git是一個(gè)道理。數(shù)據(jù)集版本管理至少要記錄這些信息數(shù)據(jù)來(lái)源、樣本數(shù)量、類(lèi)別分布、標(biāo)注規(guī)范版本、已知問(wèn)題、變更記錄。推薦用DVC這類(lèi)專(zhuān)門(mén)管理數(shù)據(jù)的工具或者至少做一個(gè)標(biāo)準(zhǔn)化的目錄結(jié)構(gòu)和版本說(shuō)明文件。每次迭代都要能明確回答“這版數(shù)據(jù)跟上一版相比改了什么、為什么改、對(duì)模型有什么影響”。還有一個(gè)容易忽略的點(diǎn)數(shù)據(jù)集和模型實(shí)驗(yàn)要強(qiáng)關(guān)聯(lián)。每跑一輪訓(xùn)練必須記清楚用了哪個(gè)數(shù)據(jù)版本這樣模型效果突然變化時(shí)能快速定位是數(shù)據(jù)問(wèn)題還是模型問(wèn)題。我自己就吃過(guò)這虧模型效果莫名變好查了半天是數(shù)據(jù)集悄悄多了兩百?gòu)垐D訓(xùn)練腳本自動(dòng)全量讀取了實(shí)驗(yàn)記錄瞬間作廢。4. 實(shí)操案例一個(gè)目標(biāo)檢測(cè)數(shù)據(jù)集從0到1的完整過(guò)程4.1 場(chǎng)景設(shè)定與數(shù)據(jù)盤(pán)點(diǎn)拿一個(gè)具體的例子來(lái)說(shuō)。假設(shè)我們要做X光安檢場(chǎng)景下的違禁品檢測(cè)類(lèi)別包括刀具、槍支、液體、打火機(jī)等。這個(gè)場(chǎng)景的難點(diǎn)在于X光成像跟自然光圖像差別很大物體堆疊嚴(yán)重、輪廓重疊、不同材質(zhì)灰度差異大、很多物品在透視視角下形狀嚴(yán)重畸變。需求拆解階段就要明確檢測(cè)精度優(yōu)先還是召回優(yōu)先安檢場(chǎng)景必然是漏檢零容忍所以標(biāo)注標(biāo)準(zhǔn)要更細(xì)致哪怕目標(biāo)很小、遮擋很?chē)?yán)重只要人類(lèi)標(biāo)注員能辨認(rèn)出來(lái)就必須標(biāo)。這個(gè)決策直接影響數(shù)據(jù)規(guī)模和標(biāo)注成本的估算。數(shù)據(jù)盤(pán)點(diǎn)階段我們先把已有數(shù)據(jù)分成三類(lèi)A類(lèi)是歷史安檢機(jī)的真實(shí)過(guò)包圖像B類(lèi)是用實(shí)驗(yàn)設(shè)備專(zhuān)門(mén)采集的模擬圖像C類(lèi)是網(wǎng)上找到的公開(kāi)數(shù)據(jù)集。底數(shù)是A類(lèi)B類(lèi)約兩千張標(biāo)注完整度參差不齊公開(kāi)數(shù)據(jù)集只用來(lái)做預(yù)訓(xùn)練底座。盤(pán)完之后發(fā)現(xiàn)兩個(gè)問(wèn)題一是液體類(lèi)樣本占比太低只有百分之三左右長(zhǎng)尾嚴(yán)重二是擊穿場(chǎng)景多個(gè)物體堆疊導(dǎo)致邊緣模糊的樣本幾乎沒(méi)有。這兩個(gè)缺口就直接寫(xiě)進(jìn)采集計(jì)劃里作為第二階段重點(diǎn)補(bǔ)充方向。4.2 標(biāo)注格式選擇與轉(zhuǎn)換VOC、COCO與YOLO標(biāo)注格式這件事看著簡(jiǎn)單實(shí)際上一堆坑。YOLO系列暗黑風(fēng)格訓(xùn)練要用txt格式每個(gè)txt對(duì)應(yīng)一張圖每行是“類(lèi)別 x_center y_center width height”坐標(biāo)全部歸一化到圖像尺寸COCO數(shù)據(jù)集是json格式所有標(biāo)注集中在一個(gè)大json文件里結(jié)構(gòu)層級(jí)多新手很容易看暈VOC用的是XML文件夾一個(gè)文件對(duì)應(yīng)一張圖的標(biāo)注。三者之間互轉(zhuǎn)是家常便飯我建議團(tuán)隊(duì)里固定一個(gè)數(shù)據(jù)格式轉(zhuǎn)換腳本別每次手動(dòng)轉(zhuǎn)容易轉(zhuǎn)出一堆坐標(biāo)錯(cuò)誤。這里穩(wěn)妥的做法是統(tǒng)一用COCO格式做內(nèi)部存儲(chǔ)標(biāo)準(zhǔn)需要訓(xùn)練YOLO時(shí)再轉(zhuǎn)成txt格式。原因在于COCO格式除了標(biāo)注框還支持分割、關(guān)鍵點(diǎn)、屬性描述等更豐富的信息擴(kuò)展性好而且主流的開(kāi)源工具都提供了COCO格式的讀寫(xiě)庫(kù)方便做統(tǒng)計(jì)分析。以YOLO訓(xùn)練為例最終的數(shù)據(jù)集目錄結(jié)構(gòu)一般長(zhǎng)這樣dataset/ ├── images/ │ ├── train/ # 訓(xùn)練圖像 │ └── val/ # 驗(yàn)證圖像 ├── labels/ │ ├── train/ # 對(duì)應(yīng)的YOLO格式標(biāo)簽 │ └── val/ ├── data.yaml # 類(lèi)別名、路徑配置data.yaml的核心內(nèi)容就是類(lèi)別列表和路徑指向path: ./dataset train: images/train val: images/val names: 0: knife 1: gun 2: liquid 3: lighter這一步看起來(lái)簡(jiǎn)單但目錄路徑和類(lèi)別索引一旦寫(xiě)錯(cuò)前面全部白干。YOLO的類(lèi)別索引是從0開(kāi)始的跟COCO的類(lèi)別ID未必對(duì)應(yīng)轉(zhuǎn)換腳本里最容易埋雷的就是這個(gè)一定要專(zhuān)門(mén)做一次校驗(yàn)。4.3 訓(xùn)練集、驗(yàn)證集、測(cè)試集的劃分原則數(shù)據(jù)集劃分看著簡(jiǎn)單實(shí)則是最容易引入“數(shù)據(jù)泄露”的環(huán)節(jié)。最典型的錯(cuò)誤是同一個(gè)物體在連續(xù)幀里反復(fù)出現(xiàn)如果你按單張圖片隨機(jī)劃分同一個(gè)物體的不同幀可能同時(shí)出現(xiàn)在訓(xùn)練集和驗(yàn)證集里驗(yàn)證結(jié)果虛高一到真實(shí)場(chǎng)景馬上現(xiàn)原形。尤其在視頻抽幀場(chǎng)景下必須先按視頻序列分組再基于組做劃分而不是按單幀劃分。通常的比例是7:2:1訓(xùn)練集七成、驗(yàn)證集兩成、測(cè)試集一成。注意測(cè)試集是最終模型驗(yàn)收用的訓(xùn)練過(guò)程中絕對(duì)不能碰否則你匯報(bào)的指標(biāo)都是“表演”性質(zhì)的自嗨。劃分之后還要做一個(gè)類(lèi)別分布檢查看一下各個(gè)類(lèi)別在訓(xùn)練、驗(yàn)證、測(cè)試三個(gè)集合里的比例是否大致一致。如果驗(yàn)證集里某個(gè)類(lèi)別樣本數(shù)極少那模型在這個(gè)類(lèi)別上的評(píng)估結(jié)果本身就是不穩(wěn)定的不具備說(shuō)服力。5. 高質(zhì)量數(shù)據(jù)集建設(shè)中的典型問(wèn)題與避坑指南5.1 類(lèi)別不平衡不僅是數(shù)量問(wèn)題還是難度問(wèn)題類(lèi)別不平衡是數(shù)據(jù)集建設(shè)里最普遍的問(wèn)題。許多人的第一反應(yīng)是增加少數(shù)類(lèi)的樣本數(shù)量但對(duì)目標(biāo)檢測(cè)任務(wù)來(lái)說(shuō)光加數(shù)量不夠還要關(guān)注難度分布。假設(shè)你的數(shù)據(jù)里有1000張“刀具”樣本但其中900張都是刀具在畫(huà)面中央、輪廓清晰的情況剩下100張才是小目標(biāo)、遮擋、重疊這種難例那模型訓(xùn)練出來(lái)的效果仍然是“只會(huì)標(biāo)容易的”。難例挖掘是數(shù)據(jù)建設(shè)里很關(guān)鍵的一步要把那些模型預(yù)測(cè)置信度低、或者loss明顯高于平均值的樣本找出來(lái)檢查是不是難例不足定向補(bǔ)數(shù)據(jù)。某些分類(lèi)任務(wù)可以用重采樣或者換loss權(quán)重來(lái)緩解數(shù)量不平衡比如focal loss這類(lèi)方案就是專(zhuān)門(mén)針對(duì)難例問(wèn)題的。但注意這些手段是彌補(bǔ)數(shù)據(jù)本身的缺陷不是替代數(shù)據(jù)建設(shè)。數(shù)據(jù)側(cè)先把難例補(bǔ)上來(lái)模型側(cè)再用策略適配兩條腿走路才穩(wěn)。5.2 數(shù)據(jù)泄露最隱蔽的性能虛高來(lái)源數(shù)據(jù)泄露是讓人印象最深刻的翻車(chē)現(xiàn)場(chǎng)。之前在給一個(gè)視頻行為識(shí)別項(xiàng)目做數(shù)據(jù)集時(shí)某個(gè)實(shí)習(xí)生把同一個(gè)視頻的連續(xù)幀拆開(kāi)后同時(shí)分到了訓(xùn)練集和驗(yàn)證集模型訓(xùn)練的驗(yàn)證集準(zhǔn)確率一直在94%以上但到了現(xiàn)場(chǎng)直接滑坡到60%多。排查到最后才定位到問(wèn)題視頻幀高度相似模型在驗(yàn)證階段“看到了”和訓(xùn)練集幾乎一樣的畫(huà)面。類(lèi)似的場(chǎng)景還有做增強(qiáng)時(shí)先對(duì)整個(gè)數(shù)據(jù)集做標(biāo)準(zhǔn)化統(tǒng)計(jì)再劃分訓(xùn)練驗(yàn)證集導(dǎo)致驗(yàn)證集信息間接混入了訓(xùn)練過(guò)程或者做預(yù)處理時(shí)用了全局的數(shù)值統(tǒng)計(jì)結(jié)果這在嚴(yán)格意義上是另一種形式的信息泄露。正確做法是先劃分?jǐn)?shù)據(jù)集再基于訓(xùn)練集單獨(dú)計(jì)算統(tǒng)計(jì)量。5.3 偏見(jiàn)問(wèn)題數(shù)據(jù)采集的覆蓋度決定模型的公平性人工智能偏見(jiàn)不是模型自己產(chǎn)生的更多時(shí)候是數(shù)據(jù)集里埋進(jìn)去的。假如做一個(gè)人臉識(shí)別系統(tǒng)訓(xùn)練數(shù)據(jù)里絕大多數(shù)是某個(gè)年齡段或某種膚色的人臉模型對(duì)少數(shù)群體的識(shí)別準(zhǔn)確率一定偏低。數(shù)據(jù)建設(shè)階段就要有意識(shí)地去統(tǒng)計(jì)樣本在不同維度上的分布比如年齡段、性別、場(chǎng)景、光線、地區(qū)等針對(duì)覆蓋度低的維度做定向采集。這里要特別提醒做數(shù)據(jù)采集的團(tuán)隊(duì)不要為了“省事”只從網(wǎng)上爬圖——網(wǎng)絡(luò)圖片往往集中反映某類(lèi)群體的特征覆蓋度極其有限而且版權(quán)合規(guī)風(fēng)險(xiǎn)也需要提前評(píng)估。真實(shí)場(chǎng)景采集、合作方數(shù)據(jù)、定向拍攝這些渠道雖然成本高但從多樣性和合規(guī)性角度看都更值得投入。5.4 安全合規(guī)數(shù)據(jù)建設(shè)不可繞過(guò)的底線不論做什么場(chǎng)景的數(shù)據(jù)集安全合規(guī)都是底線問(wèn)題。涉及個(gè)人信息的數(shù)據(jù)要做好脫敏處理涉及行業(yè)數(shù)據(jù)的使用要確認(rèn)授權(quán)范圍涉及敏感場(chǎng)景的采集要注意安全邊界。數(shù)據(jù)集的存儲(chǔ)和分發(fā)同樣要有控制不要明文存放原始數(shù)據(jù)訓(xùn)練服務(wù)器、標(biāo)注平臺(tái)的數(shù)據(jù)訪問(wèn)權(quán)限也要做最小化管控。這一塊我在實(shí)踐中的原則是寧可多問(wèn)一句、多驗(yàn)證一次也不要心存僥幸。商業(yè)項(xiàng)目里因?yàn)閿?shù)據(jù)合規(guī)翻車(chē)的案例實(shí)在太多真出了事?lián)p失的不僅是錢(qián)還有整個(gè)團(tuán)隊(duì)的聲譽(yù)。6. 把數(shù)據(jù)集當(dāng)成產(chǎn)品來(lái)做而不是一次性消耗品做完幾個(gè)大型數(shù)據(jù)項(xiàng)目之后我最大的體會(huì)是數(shù)據(jù)集建設(shè)不能當(dāng)成一次性任務(wù)它應(yīng)該是一個(gè)持續(xù)進(jìn)化的產(chǎn)品。模型上線后要不斷收集錯(cuò)例、挖掘難例、補(bǔ)充新場(chǎng)景、校正標(biāo)注規(guī)范讓數(shù)據(jù)集的版本跟著業(yè)務(wù)變化一起迭代。我建議團(tuán)隊(duì)從第一天就建立“數(shù)據(jù)復(fù)盤(pán)”機(jī)制每次模型效果不佳的時(shí)候不要只想著調(diào)參而是把對(duì)應(yīng)的bad case拉出來(lái)分析是數(shù)據(jù)問(wèn)題還是模型問(wèn)題。數(shù)據(jù)層面可以做的動(dòng)作有很多補(bǔ)樣本、修正標(biāo)注、調(diào)整類(lèi)別定義、增加場(chǎng)景覆蓋。模型層面再去考慮改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)或調(diào)loss。這個(gè)流程走順了團(tuán)隊(duì)對(duì)數(shù)據(jù)的敏感度會(huì)明顯提升不再盲目迷信模型結(jié)構(gòu)。另一個(gè)值得養(yǎng)成的習(xí)慣是數(shù)據(jù)文檔化。不要覺(jué)得數(shù)據(jù)集建完了丟給訓(xùn)練腳本就完事一份包含數(shù)據(jù)來(lái)源、標(biāo)注規(guī)范、已知問(wèn)題、變更歷史的數(shù)據(jù)集說(shuō)明文檔對(duì)團(tuán)隊(duì)協(xié)作和知識(shí)沉淀都非常重要。數(shù)據(jù)科學(xué)家換人、標(biāo)注團(tuán)隊(duì)更替都是靠這份文檔才接得上的。工具鏈方面如果團(tuán)隊(duì)預(yù)算允許可以考慮引入數(shù)據(jù)管理平臺(tái)做標(biāo)注任務(wù)分配、質(zhì)量抽檢、版本管理的一體化流程。預(yù)算有限的團(tuán)隊(duì)用LabelImg這類(lèi)開(kāi)源標(biāo)注工具加Git管理規(guī)范和腳本也夠用。關(guān)鍵是流程要清晰、標(biāo)準(zhǔn)要落地工具只是輔助?;仡^再看人工智能訓(xùn)練師這個(gè)職業(yè)畫(huà)像為什么現(xiàn)在越來(lái)越受重視底層邏輯就是業(yè)界終于意識(shí)到模型的迭代速度再快也代替不了對(duì)數(shù)據(jù)本身的深刻理解。把數(shù)據(jù)集當(dāng)成產(chǎn)品來(lái)做本質(zhì)上就是把人工智能項(xiàng)目的護(hù)城河挖深——算法可以復(fù)現(xiàn)模型可以開(kāi)源但一套經(jīng)過(guò)深度清洗、精細(xì)標(biāo)注、持續(xù)迭代的高質(zhì)量數(shù)據(jù)集才是別人短時(shí)間內(nèi)抄不走的核心資產(chǎn)。最后再分享一個(gè)小技巧每次標(biāo)注規(guī)范更新或者數(shù)據(jù)處理邏輯調(diào)整之后至少用一周時(shí)間做一次跟舊版本的結(jié)果對(duì)比。不要相信“改完肯定更好”的直覺(jué)一切以數(shù)據(jù)和模型指標(biāo)的實(shí)測(cè)結(jié)果為準(zhǔn)。這套方法論聽(tīng)著不炫酷但就是它讓我在好幾個(gè)項(xiàng)目里避開(kāi)了大坑希望對(duì)你也有用。本文還有配套的精品資源點(diǎn)擊獲取