標(biāo)注實(shí)戰(zhàn):X-AnyLabeling+autodistill+Grounded-SAM數(shù)據(jù)飛輪)
1. 自動(dòng)標(biāo)注這條鏈路到底解決了什么痛點(diǎn)做過視覺模型落地的朋友都清楚一個(gè)目標(biāo)檢測(cè)或者分割項(xiàng)目真正花時(shí)間的地方從來不是調(diào)模型結(jié)構(gòu)而是搞數(shù)據(jù)。標(biāo)注一批幾千張的圖純手工點(diǎn)框、描邊一個(gè)人干一周都未必能出活而且標(biāo)注質(zhì)量還參差不齊。更麻煩的是業(yè)務(wù)需求一變類別一改之前標(biāo)的數(shù)據(jù)可能直接作廢又得重頭來一遍。這種循環(huán)一旦形成團(tuán)隊(duì)基本就被拖死在數(shù)據(jù)準(zhǔn)備階段了。自動(dòng)標(biāo)注這套東西本質(zhì)上是想把這個(gè)循環(huán)打破。它的核心邏輯是先用一個(gè)泛化能力足夠強(qiáng)的模型比如開放詞匯檢測(cè)、分割模型對(duì)未標(biāo)注數(shù)據(jù)做一輪“預(yù)標(biāo)注”人工只需要在預(yù)標(biāo)注結(jié)果上做修正和確認(rèn)而不是從零開始畫。這樣一來單張圖的標(biāo)注耗時(shí)能從幾分鐘壓縮到幾十秒甚至幾秒而且隨著修正后的數(shù)據(jù)回流去微調(diào)模型下一輪預(yù)標(biāo)注的質(zhì)量會(huì)越來越高這就是大家常說的“數(shù)據(jù)飛輪”。我這次要拆的這條鏈路是X-AnyLabeling autodistill Grounded-SAM的組合。這三個(gè)東西各自定位很清晰Grounded-SAM 負(fù)責(zé)“看得懂”它能根據(jù)文本提示比如“person”“car”在圖上找出對(duì)應(yīng)目標(biāo)并給出分割掩碼autodistill 負(fù)責(zé)“批量跑”它把教師模型的推理能力封裝成流水線自動(dòng)給整個(gè)數(shù)據(jù)集打上標(biāo)簽X-AnyLabeling 負(fù)責(zé)“人工兜底”它是一個(gè)帶 AI 輔助的標(biāo)注客戶端能加載預(yù)標(biāo)注結(jié)果讓人快速修正、補(bǔ)漏、改類別。這套組合適合誰如果你手頭有一批未標(biāo)注的圖片想快速搞出一個(gè)可用的檢測(cè)或分割數(shù)據(jù)集或者你已經(jīng)有一個(gè)小規(guī)模標(biāo)注集想用自動(dòng)標(biāo)注把規(guī)模擴(kuò)起來再或者你在做垂直領(lǐng)域工業(yè)質(zhì)檢、遙感、醫(yī)療影像的定制模型需要反復(fù)迭代數(shù)據(jù)——那這條鏈路基本就是為你準(zhǔn)備的。哪怕你之前沒接觸過自動(dòng)標(biāo)注只要會(huì)裝 Python 環(huán)境、能跑命令行跟著走一遍就能出結(jié)果。下面我按實(shí)際操作的順序把整條鏈路拆開講。先講整體設(shè)計(jì)思路和選型理由再講每個(gè)環(huán)節(jié)的細(xì)節(jié)和坑然后是完整的實(shí)操流程最后是我踩過的那些問題和排查方法。2. 整體方案設(shè)計(jì)與選型邏輯拆解2.1 為什么是這三個(gè)工具的組合而不是單用一個(gè)很多人第一反應(yīng)是既然 Grounded-SAM 這么強(qiáng)直接拿它跑一遍不就行了為什么還要 autodistill 和 X-AnyLabeling這個(gè)問題我一開始也想過實(shí)際跑下來發(fā)現(xiàn)單用 Grounded-SAM 有三個(gè)繞不過去的坎。第一是批量處理能力弱。Grounded-SAM 官方給的 demo 基本是單張圖推理你要跑幾千張圖得自己寫循環(huán)、管理顯存、處理異常還要把結(jié)果存成標(biāo)注格式。autodistill 的價(jià)值就在這里它把“教師模型推理 結(jié)果轉(zhuǎn)標(biāo)注格式 數(shù)據(jù)集組織”這套流程標(biāo)準(zhǔn)化了你只需要指定輸入目錄、輸出目錄和教師模型它就能批量跑完輸出 COCO、YOLO 等常見格式。第二是結(jié)果需要人工校驗(yàn)。Grounded-SAM 再?gòu)?qiáng)也會(huì)有漏檢、誤檢、掩碼邊緣不準(zhǔn)的情況尤其是小目標(biāo)、遮擋目標(biāo)、類別邊界模糊的場(chǎng)景。如果直接把自動(dòng)標(biāo)注結(jié)果拿去訓(xùn)練噪聲會(huì)污染模型。X-AnyLabeling 就是解決這個(gè)問題的它能直接加載 autodistill 產(chǎn)出的標(biāo)注文件在界面上把框和掩碼顯示出來人工只需要拖拽調(diào)整、刪掉誤檢、補(bǔ)上漏檢效率比從零標(biāo)注高一個(gè)數(shù)量級(jí)。第三是迭代閉環(huán)。autodistill 支持用自動(dòng)標(biāo)注的結(jié)果去訓(xùn)練一個(gè)輕量學(xué)生模型比如 YOLO訓(xùn)練完的學(xué)生模型可以反過來做下一輪預(yù)標(biāo)注或者部署到邊緣設(shè)備。X-AnyLabeling 修正后的數(shù)據(jù)也可以導(dǎo)出繼續(xù)喂給下一輪。這三個(gè)工具串起來才形成完整的“預(yù)標(biāo)注—修正—訓(xùn)練—再預(yù)標(biāo)注”飛輪。2.2 Grounded-SAM 的工作原理用大白話講清楚Grounded-SAM 其實(shí)是兩個(gè)模型的拼接Grounding DINO和SAM。Grounding DINO 是一個(gè)開放詞匯檢測(cè)模型你給它一張圖和一段文本提示比如“cat . dog .”它能在圖上找出所有匹配這些詞的目標(biāo)輸出邊界框。SAMSegment Anything Model是一個(gè)分割模型你給它一個(gè)框或者一個(gè)點(diǎn)它能把目標(biāo)的精確輪廓摳出來。所以 Grounded-SAM 的流程是先用 Grounding DINO 根據(jù)文本找到目標(biāo)框再把框喂給 SAM 得到分割掩碼。這樣一來你不需要預(yù)先定義類別、不需要訓(xùn)練只要用自然語言描述你要找什么它就能標(biāo)出來。這個(gè)特性對(duì)于冷啟動(dòng)階段特別有用因?yàn)楹芏囗?xiàng)目一開始根本不知道數(shù)據(jù)里有哪些類別或者類別體系還沒定下來。但要注意Grounding DINO 的檢測(cè)精度受文本提示的寫法影響很大。比如你寫“person”它可能只檢出明顯的人你寫“person . human . pedestrian .”召回率會(huì)高一些但誤檢也會(huì)增加。這個(gè)平衡需要根據(jù)你的數(shù)據(jù)特點(diǎn)去調(diào)。2.3 autodistill 的定位把教師模型變成標(biāo)注流水線autodistill 的核心抽象是“教師模型”和“目標(biāo)模型”。教師模型負(fù)責(zé)打標(biāo)簽?zāi)繕?biāo)模型負(fù)責(zé)學(xué)習(xí)。你調(diào)用autodistill的接口指定教師模型比如 GroundedSAM和輸入圖片目錄它就會(huì)自動(dòng)跑推理、過濾低置信度結(jié)果、轉(zhuǎn)成標(biāo)注格式。它支持的教師模型很多除了 GroundedSAM還有 CLIP、DETIC、YOLO-World 等。目標(biāo)模型支持 YOLOv8、YOLOv5、RT-DETR 等。這意味著你可以用一個(gè)大模型打標(biāo)簽然后訓(xùn)練一個(gè)小模型部署這在工程上非常實(shí)用。autodistill 還有一個(gè)好處是結(jié)果格式統(tǒng)一。它輸出的標(biāo)注可以直接被 X-AnyLabeling 讀取也可以直接用于 YOLO 訓(xùn)練省去了格式轉(zhuǎn)換的麻煩。我試過手動(dòng)把 Grounded-SAM 的輸出轉(zhuǎn)成 YOLO 格式光是坐標(biāo)歸一化和類別映射就寫了一堆代碼還容易出錯(cuò)。autodistill 把這些臟活都封裝好了。2.4 X-AnyLabeling 為什么比普通標(biāo)注工具更適合這條鏈路X-AnyLabeling 是一個(gè)基于 Qt 的標(biāo)注客戶端支持檢測(cè)、分割、分類、姿態(tài)等多種任務(wù)。它最大的特點(diǎn)是內(nèi)置了 AI 輔助標(biāo)注能力可以加載 SAM、YOLO 等模型做交互式標(biāo)注。但在我們這條鏈路里它的核心作用是加載預(yù)標(biāo)注結(jié)果并高效修正。它支持直接打開 autodistill 輸出的 COCO JSON 或 YOLO TXT把框和掩碼渲染出來。你可以用快捷鍵快速切換圖片、刪除誤檢、調(diào)整框、修改類別。它還支持“自動(dòng)保存”修正完直接導(dǎo)出不需要額外轉(zhuǎn)換。相比 Labelme、CVAT 這些工具X-AnyLabeling 對(duì) AI 預(yù)標(biāo)注的兼容性更好操作也更順手。另外X-AnyLabeling 是跨平臺(tái)的Windows、Linux、macOS 都能跑。Linux 下如果遇到顯示問題通常和 Qt 的圖形后端有關(guān)后面我會(huì)講怎么處理。3. 環(huán)境搭建與核心細(xì)節(jié)解析3.1 硬件和基礎(chǔ)環(huán)境要求這套鏈路對(duì)硬件有一定要求主要是 Grounded-SAM 推理比較吃顯存。我的測(cè)試環(huán)境是 Ubuntu 22.04 NVIDIA RTX 309024GB 顯存 CUDA 12.1 Python 3.10。如果你顯存小一些比如 8GB也能跑但需要調(diào)小 batch size 或者用更小的模型變體?;A(chǔ)依賴包括Python 3.8 以上推薦 3.10PyTorch 2.0 以上帶 CUDA 支持CUDA 和 cuDNN版本要和 PyTorch 匹配Git、wget 等基礎(chǔ)工具安裝 PyTorch 的時(shí)候建議直接去官網(wǎng)查對(duì)應(yīng) CUDA 版本的安裝命令不要憑記憶寫。我見過太多人因?yàn)?PyTorch 和 CUDA 版本不匹配卡在torch.cuda.is_available()返回 False 上。3.2 三個(gè)工具的安裝順序和依賴沖突處理安裝順序建議是先裝 autodistill再裝 Grounded-SAM 相關(guān)依賴最后裝 X-AnyLabeling。原因是 autodistill 會(huì)拉取一些基礎(chǔ)依賴Grounded-SAM 對(duì) transformers、segment-anything 的版本有要求X-AnyLabeling 相對(duì)獨(dú)立。autodistill 的安裝pip install autodistill pip install autodistill-grounded-samGrounded-SAM 的依賴pip install groundingdino-py pip install segment-anything這里有個(gè)坑groundingdino-py在不同平臺(tái)上的編譯情況不一樣。Linux 下通常沒問題Windows 下可能需要裝 Visual Studio Build Tools。如果裝不上可以試試從源碼編譯或者用 conda 環(huán)境。X-AnyLabeling 的安裝有兩種方式一種是直接下載預(yù)編譯的安裝包另一種是從源碼跑。我推薦直接用預(yù)編譯包省事。Linux 下下載 AppImage 或者 tar.gzWindows 下下載 exe。如果要從源碼跑git clone https://github.com/CVHub520/X-AnyLabeling.git cd X-AnyLabeling pip install -r requirements.txt python anylabeling/app.py依賴沖突主要出現(xiàn)在 transformers 和 tokenizers 的版本上。Grounded-SAM 可能需要較新的 transformers而其他包可能鎖定了舊版本。我的做法是單獨(dú)建一個(gè)虛擬環(huán)境給 autodistill Grounded-SAMX-AnyLabeling 用另一個(gè)環(huán)境或者直接用預(yù)編譯包避免互相干擾。3.3 模型權(quán)重的下載和存放位置Grounded-SAM 需要兩個(gè)權(quán)重文件Grounding DINO 的權(quán)重和 SAM 的權(quán)重。Grounding DINO 權(quán)重wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pthSAM 權(quán)重推薦用 ViT-H精度最高但顯存占用也大wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth如果顯存不夠可以用 ViT-L 或 ViT-B精度會(huì)降一些但速度快很多。權(quán)重文件建議放在一個(gè)固定目錄比如~/models/然后在代碼里用絕對(duì)路徑引用。autodistill 的 GroundedSAM 類在初始化時(shí)可以指定權(quán)重路徑如果不指定它會(huì)嘗試自動(dòng)下載但自動(dòng)下載有時(shí)候會(huì)因?yàn)榫W(wǎng)絡(luò)問題失敗手動(dòng)下載更穩(wěn)。3.4 文本提示的設(shè)計(jì)技巧文本提示直接決定 Grounded DINO 的檢測(cè)結(jié)果。幾個(gè)實(shí)操經(jīng)驗(yàn)類別之間用.分隔比如person . car . dog .類別名盡量用常見英文單詞避免生僻詞如果某個(gè)類別召回率低可以加同義詞比如car . automobile . vehicle .如果誤檢多可以減少同義詞或者調(diào)低box_threshold提示末尾加.有助于模型識(shí)別邊界box_threshold和text_threshold是兩個(gè)關(guān)鍵參數(shù)。box_threshold控制檢測(cè)框的置信度閾值默認(rèn) 0.3 左右text_threshold控制文本匹配的閾值默認(rèn) 0.25 左右。實(shí)際調(diào)的時(shí)候先固定text_threshold調(diào)box_threshold觀察召回和誤檢的平衡。4. 完整實(shí)操流程與關(guān)鍵環(huán)節(jié)實(shí)現(xiàn)4.1 第一步準(zhǔn)備未標(biāo)注圖片目錄把所有待標(biāo)注的圖片放在一個(gè)目錄下比如~/data/unlabeled/。圖片格式支持 jpg、png 等常見格式。建議圖片命名規(guī)范一些避免中文和特殊字符后面處理起來省事。如果圖片數(shù)量很大比如上萬張建議先抽一個(gè)子集比如 500 張跑通流程確認(rèn)效果后再全量跑。全量跑的時(shí)候Grounded-SAM 的推理速度大概是每張圖 1-3 秒取決于分辨率和顯存一萬張圖大概需要幾個(gè)小時(shí)。4.2 第二步用 autodistill 跑批量預(yù)標(biāo)注核心代碼其實(shí)很短from autodistill_grounded_sam import GroundedSAM from autodistill.detection import CaptionOntology from autodistill.utils import plot ontology CaptionOntology({ person: person, car: car, dog: dog }) base_model GroundedSAM(ontologyontology) dataset base_model.label( input_folder./data/unlabeled, extension.jpg, output_folder./data/labeled )CaptionOntology是一個(gè)字典key 是你要的類別名value 是給 Grounded DINO 的文本提示。這里可以不一樣比如 key 用中文“人”value 用英文“person”autodistill 會(huì)自動(dòng)做映射。label方法會(huì)遍歷輸入目錄下所有指定擴(kuò)展名的圖片跑推理然后把結(jié)果存到輸出目錄。輸出格式默認(rèn)是 COCO JSON每張圖對(duì)應(yīng)一個(gè) JSON 文件或者一個(gè)總的 JSON取決于配置。跑完之后輸出目錄里會(huì)有圖片和對(duì)應(yīng)的標(biāo)注文件。你可以先用plot函數(shù)可視化幾張看看效果plot( image./data/unlabeled/001.jpg, detectionsdataset[0].detections )如果發(fā)現(xiàn)漏檢嚴(yán)重回去調(diào)文本提示和閾值如果誤檢多調(diào)高box_threshold。4.3 第三步用 X-AnyLabeling 加載預(yù)標(biāo)注并修正打開 X-AnyLabeling選擇“打開目錄”指向 autodistill 的輸出目錄。它會(huì)自動(dòng)識(shí)別 COCO JSON 或 YOLO TXT把標(biāo)注渲染出來。修正的時(shí)候幾個(gè)高效操作用A和D鍵切換上一張/下一張用Delete刪除選中的框拖拽框的邊角調(diào)整大小雙擊類別標(biāo)簽修改類別用CtrlS保存當(dāng)前修改如果發(fā)現(xiàn)某張圖漏檢了某個(gè)目標(biāo)可以用 X-AnyLabeling 內(nèi)置的 SAM 模型手動(dòng)補(bǔ)一個(gè)點(diǎn)一下目標(biāo)SAM 會(huì)自動(dòng)生成掩碼然后你選類別就行。這個(gè)功能在補(bǔ)漏的時(shí)候特別快。修正完所有圖片后導(dǎo)出標(biāo)注。X-AnyLabeling 支持導(dǎo)出 COCO、YOLO、VOC 等格式選你訓(xùn)練時(shí)需要的格式。4.4 第四步用修正后的數(shù)據(jù)訓(xùn)練學(xué)生模型如果你只是想得到一個(gè)可用的數(shù)據(jù)集到第三步就結(jié)束了。但如果你想形成飛輪可以繼續(xù)用 autodistill 訓(xùn)練一個(gè) YOLO 學(xué)生模型from autodistill_yolov8 import YOLOv8 target_model YOLOv8(yolov8n.pt) target_model.train(./data/labeled/data.yaml, epochs50)訓(xùn)練完之后學(xué)生模型可以拿來做下一輪預(yù)標(biāo)注速度比 Grounded-SAM 快很多精度在垂直領(lǐng)域上往往也更好因?yàn)樗呀?jīng)學(xué)到了你的數(shù)據(jù)分布。4.5 第五步迭代與數(shù)據(jù)飛輪飛輪的運(yùn)轉(zhuǎn)方式是用 Grounded-SAM 對(duì)新的未標(biāo)注數(shù)據(jù)做預(yù)標(biāo)注用 X-AnyLabeling 修正把修正后的數(shù)據(jù)加入訓(xùn)練集重新訓(xùn)練學(xué)生模型用學(xué)生模型替代 Grounded-SAM 做下一輪預(yù)標(biāo)注或者兩者結(jié)合每一輪迭代預(yù)標(biāo)注的質(zhì)量都會(huì)提升人工修正的工作量會(huì)下降。我實(shí)測(cè)下來第一輪修正大概要改 30%-40% 的框第三輪之后基本降到 10% 以下。5. 常見問題與排查技巧實(shí)錄5.1 Grounded-SAM 推理報(bào)顯存不足這是最常見的問題。解決方法換小模型SAM 用 ViT-B 或 ViT-LGrounding DINO 用 Swin-T調(diào)小輸入分辨率Grounded-SAM 默認(rèn)用 800x1333可以改成 600x800分批推理autodistill 支持設(shè)置 batch size調(diào)小一些用 CPU 推理慢但能跑適合小數(shù)據(jù)集如果顯存剛好卡在邊界可以試試torch.cuda.empty_cache()在每張圖推理后清理緩存。5.2 autodistill 輸出格式和 X-AnyLabeling 不兼容autodistill 默認(rèn)輸出 COCO JSONX-AnyLabeling 是支持的。但如果你的 autodistill 版本較老可能輸出格式有差異。排查方法是先看輸出目錄里有什么文件再用 X-AnyLabeling 打開試試。如果不識(shí)別可以用 autodistill 的轉(zhuǎn)換工具轉(zhuǎn)成 YOLO 格式X-AnyLabeling 對(duì) YOLO TXT 的支持更穩(wěn)定。5.3 X-AnyLabeling 在 Linux 下打不開或界面異常Linux 下常見的問題是 Qt 圖形后端不兼容。解決方法export QT_QPA_PLATFORMxcb如果還是不行試試export QT_DEBUG_PLUGINS1看具體報(bào)錯(cuò)。另外AppImage 需要 FUSE 支持如果系統(tǒng)沒裝可以加--appimage-extract-and-run參數(shù)。5.4 文本提示寫了但檢測(cè)不到目標(biāo)排查順序確認(rèn)類別名是英文常見詞調(diào)低box_threshold到 0.2 試試加同義詞比如person . human .確認(rèn)圖片里確實(shí)有該目標(biāo)換 Grounding DINO 的權(quán)重版本試試如果某個(gè)類別始終檢測(cè)不好可能是 Grounding DINO 對(duì)這個(gè)概念本身就不敏感這種情況只能靠人工補(bǔ)標(biāo)或者換其他教師模型。5.5 自動(dòng)標(biāo)注結(jié)果噪聲太大訓(xùn)練效果差自動(dòng)標(biāo)注的噪聲主要來自漏檢和誤檢。處理策略設(shè)置置信度閾值過濾低置信度的框?qū)γ娣e過小的框做過濾比如小于 10x10 像素對(duì)長(zhǎng)寬比異常的框做過濾人工修正時(shí)重點(diǎn)檢查這些可疑框另外訓(xùn)練的時(shí)候可以用 label smoothing 或者噪聲魯棒損失函數(shù)減輕噪聲影響。5.6 常見問題速查表問題可能原因解決方法顯存不足模型太大或分辨率太高換小模型、降分辨率、分批推理檢測(cè)不到目標(biāo)文本提示不合適調(diào)閾值、加同義詞、換權(quán)重誤檢太多閾值太低或提示太寬泛調(diào)高 box_threshold、減少同義詞X-AnyLabeling 打不開Qt 后端問題設(shè)置 QT_QPA_PLATFORMxcb標(biāo)注格式不兼容版本差異轉(zhuǎn)成 YOLO 格式訓(xùn)練效果差標(biāo)注噪聲大過濾低質(zhì)量框、人工修正5.7 幾個(gè)我踩過的坑第一個(gè)坑是權(quán)重路徑寫錯(cuò)。Grounded-SAM 初始化的時(shí)候如果不指定權(quán)重路徑它會(huì)嘗試從網(wǎng)上下載但有時(shí)候下載的權(quán)重版本不對(duì)導(dǎo)致推理結(jié)果異常。后來我統(tǒng)一手動(dòng)下載權(quán)重用絕對(duì)路徑引用問題就沒了。第二個(gè)坑是類別映射搞混。autodistill 的CaptionOntology里key 和 value 的對(duì)應(yīng)關(guān)系要搞清楚。key 是最終標(biāo)注文件里的類別名value 是給模型的提示。我有一次把 key 寫成中文value 寫成英文結(jié)果標(biāo)注文件里全是中文類別訓(xùn)練的時(shí)候又得轉(zhuǎn)一遍。建議一開始就統(tǒng)一用英文類別名。第三個(gè)坑是X-AnyLabeling 自動(dòng)保存沒開。修正了幾百?gòu)垐D結(jié)果沒保存白干。一定要在設(shè)置里把自動(dòng)保存打開或者養(yǎng)成隨手 CtrlS 的習(xí)慣。第四個(gè)坑是圖片分辨率不一致。Grounded-SAM 對(duì)分辨率敏感如果數(shù)據(jù)集里圖片分辨率差異很大檢測(cè)效果會(huì)不穩(wěn)定。建議先統(tǒng)一 resize 到一個(gè)合理范圍比如長(zhǎng)邊 1333。6. 一些提升效率的實(shí)操心得6.1 預(yù)標(biāo)注結(jié)果的可視化檢查在跑完 autodistill 之后不要直接進(jìn) X-AnyLabeling 修正先用腳本隨機(jī)抽幾十張圖把標(biāo)注畫出來看一眼。這樣能快速發(fā)現(xiàn)系統(tǒng)性問題比如某個(gè)類別整體漏檢、框普遍偏大偏小等。如果問題普遍存在先調(diào)提示和閾值重跑比一張張修效率高得多。可視化腳本可以用 OpenCV 或者 PIL 寫把框和類別畫在圖上存到一個(gè)臨時(shí)目錄快速翻看。6.2 分批處理和斷點(diǎn)續(xù)跑如果數(shù)據(jù)集很大autodistill 跑一半崩了重跑很浪費(fèi)時(shí)間。我的做法是把數(shù)據(jù)集分成多個(gè)子目錄每個(gè)子目錄單獨(dú)跑跑完一個(gè)再跑下一個(gè)。這樣即使某個(gè)批次出問題也只影響那一批。另外autodistill 的label方法本身不支持?jǐn)帱c(diǎn)續(xù)跑但你可以自己寫個(gè)簡(jiǎn)單的判斷如果輸出目錄里已經(jīng)有對(duì)應(yīng)的 JSON 文件就跳過。這樣重跑的時(shí)候只處理沒跑過的圖。6.3 用學(xué)生模型加速后續(xù)輪次第一輪用 Grounded-SAM 跑速度慢但泛化好。第一輪修正完訓(xùn)練出學(xué)生模型后第二輪就可以用學(xué)生模型做預(yù)標(biāo)注速度快十倍以上精度在垂直領(lǐng)域上往往還更好。這時(shí)候 Grounded-SAM 只在學(xué)生模型不確定的圖上兜底比如置信度在 0.3-0.5 之間的圖再跑一遍 Grounded-SAM 做交叉驗(yàn)證。6.4 標(biāo)注質(zhì)量的一致性檢查多人協(xié)作標(biāo)注的時(shí)候一致性是個(gè)大問題。X-AnyLabeling 支持導(dǎo)出標(biāo)注你可以寫腳本統(tǒng)計(jì)每個(gè)類別的框數(shù)量、平均大小、位置分布看看有沒有異常。比如某個(gè)人標(biāo)的“car”框普遍比別人大一圈可能就是理解不一致需要統(tǒng)一標(biāo)準(zhǔn)。6.5 數(shù)據(jù)飛輪的啟動(dòng)策略飛輪最難的是啟動(dòng)階段因?yàn)榈谝惠嗩A(yù)標(biāo)注質(zhì)量差人工修正工作量大容易讓人放棄。我的建議是第一輪只選 200-500 張圖不要貪多類別體系盡量精簡(jiǎn)先做核心類別修正的時(shí)候優(yōu)先保證召回漏檢的補(bǔ)上誤檢的可以先留著后面再過濾第一輪訓(xùn)練出的學(xué)生模型不要期望太高能到 0.5 mAP 就算成功第二輪開始預(yù)標(biāo)注質(zhì)量會(huì)明顯提升這時(shí)候再擴(kuò)大數(shù)據(jù)量這套鏈路我前后跑了三個(gè)項(xiàng)目從工業(yè)零件檢測(cè)到遙感目標(biāo)提取基本都能在兩周內(nèi)從零搞出一個(gè)可用的數(shù)據(jù)集。最耗時(shí)的部分永遠(yuǎn)是人工修正但相比純手工標(biāo)注效率提升至少在 5 倍以上。如果你正在被數(shù)據(jù)標(biāo)注拖后腿建議先拿 100 張圖跑一遍全流程感受一下自動(dòng)標(biāo)注的實(shí)際效果再?zèng)Q定要不要規(guī)?;?。