數(shù)據(jù)集構(gòu)建與YOLOv8訓(xùn)練部署實(shí)戰(zhàn)——4300張圖片全流程解析)
做了幾年目標(biāo)檢測(cè)項(xiàng)目我越來(lái)越覺(jué)得數(shù)據(jù)集的構(gòu)建過(guò)程比模型訓(xùn)練本身更考驗(yàn)?zāi)托?。這次這套貓狗檢測(cè)數(shù)據(jù)集總共4300張YOLO格式標(biāo)注圖片就是我在做寵物識(shí)別項(xiàng)目時(shí)從零開(kāi)始攢起來(lái)的。整個(gè)過(guò)程踩過(guò)不少坑也走了很多彎路今天把從數(shù)據(jù)采集、標(biāo)注規(guī)范到Y(jié)OLO訓(xùn)練部署的完整鏈路整理出來(lái)希望能幫到正在做類(lèi)似寵物識(shí)別、貓狗檢測(cè)項(xiàng)目的朋友。1. 為什么我不直接用開(kāi)源貓狗數(shù)據(jù)集而要自己攢這4300張1.1 公開(kāi)數(shù)據(jù)集的最大問(wèn)題不是數(shù)據(jù)量而是長(zhǎng)相差太多很多人做寵物識(shí)別第一反應(yīng)就是去Kaggle找個(gè)貓狗數(shù)據(jù)集下載這沒(méi)錯(cuò)但實(shí)際跑起來(lái)你很快會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題公開(kāi)數(shù)據(jù)集里的圖和真實(shí)應(yīng)用場(chǎng)景里的圖完全是兩個(gè)世界。Kaggle那個(gè)經(jīng)典的貓狗大戰(zhàn)數(shù)據(jù)集Dogs vs. Cats有25000張圖數(shù)據(jù)量絕對(duì)夠但里面的圖片大部分是十幾年前網(wǎng)友上傳的,分辨率低、主體占比大、背景干凈貓咪和狗基本都在畫(huà)面正中間。你用這種數(shù)據(jù)訓(xùn)練出來(lái)的模型拿到真實(shí)的寵物自動(dòng)喂食器、小區(qū)流浪貓監(jiān)控或者寵物社交App的拍圖識(shí)別場(chǎng)景里效果會(huì)明顯下滑。真實(shí)場(chǎng)景是復(fù)雜的貓咪躲在沙發(fā)角落、狗在草地上狂奔、強(qiáng)逆光、晚上只有微弱燈光、多只寵物同框、部分身體被遮擋、甚至只露個(gè)屁股。所以我決定自建數(shù)據(jù)集時(shí)目標(biāo)就定得很明確不求量大但求場(chǎng)景全、貼近真實(shí)。4300張圖聽(tīng)起來(lái)不算多但只要能覆蓋真實(shí)場(chǎng)景的變化訓(xùn)練效果會(huì)比盲目堆量好得多。1.2 這個(gè)數(shù)據(jù)集要解決什么問(wèn)題這套數(shù)據(jù)集只做兩個(gè)類(lèi)別的檢測(cè)dog和cat。檢測(cè)任務(wù)和分類(lèi)任務(wù)有個(gè)本質(zhì)區(qū)別分類(lèi)是給整張圖判斷這是什么檢測(cè)要回答的是圖里有幾只寵物每只在哪是多大的框。所以我標(biāo)注的時(shí)候不是給整張圖打一個(gè)標(biāo)簽而是要框出每一只貓和狗。實(shí)際使用中這套數(shù)據(jù)可以支撐以下場(chǎng)景寵物自動(dòng)喂食器里識(shí)別寵物靠近區(qū)分貓狗啟動(dòng)不同出糧策略小區(qū)或門(mén)店的寵物統(tǒng)計(jì)統(tǒng)計(jì)某段時(shí)間內(nèi)出現(xiàn)的貓狗數(shù)量寵物社交產(chǎn)品用戶(hù)上傳照片后自動(dòng)識(shí)別寵物并打上標(biāo)簽智能攝像頭寵物異常行為警報(bào)比如貓上桌、狗扒門(mén)這類(lèi)確定好這些問(wèn)題之后整個(gè)數(shù)據(jù)集項(xiàng)目的脈絡(luò)就清晰了采集什么場(chǎng)景的圖、標(biāo)注到什么粒度、訓(xùn)練時(shí)用什么策略、驗(yàn)證時(shí)重點(diǎn)看哪些指標(biāo)全部圍繞這幾個(gè)應(yīng)用場(chǎng)景來(lái)定。2. 4300張圖的誕生采集篩選、標(biāo)注規(guī)范與格式轉(zhuǎn)換2.1 數(shù)據(jù)來(lái)源與合規(guī)意識(shí)數(shù)據(jù)來(lái)源我主要用了三類(lèi)按占比排列自采圖片自己用手機(jī)、相機(jī)在不同時(shí)間早中晚、夜間開(kāi)燈/關(guān)燈、不同地點(diǎn)室內(nèi)客廳、陽(yáng)臺(tái)、戶(hù)外草地、樓道、車(chē)內(nèi)拍攝的寵物照片大約占四成可商用授權(quán)的圖庫(kù)素材專(zhuān)門(mén)篩選了允許商用和修改的圖片平臺(tái)避免版權(quán)風(fēng)險(xiǎn)開(kāi)源數(shù)據(jù)集中的精選子集從部分開(kāi)放許可證的數(shù)據(jù)集中挑選圖片但不盲目全收只挑場(chǎng)景或者畫(huà)質(zhì)合格的那部分注意數(shù)據(jù)合規(guī)這件事我是認(rèn)真做了功課的。訓(xùn)練數(shù)據(jù)一旦用于商業(yè)項(xiàng)目圖片的授權(quán)問(wèn)題會(huì)直接影響產(chǎn)品能否上線(xiàn)。建議大家都按照要么自己拍、要么明確可商用授權(quán)的標(biāo)準(zhǔn)來(lái)卡數(shù)據(jù)來(lái)源。2.2 篩選標(biāo)準(zhǔn)的細(xì)化采集到原始圖片后我做了三輪篩選每一輪淘汰率都不低第一輪是清晰度篩查。模糊圖、嚴(yán)重過(guò)曝圖、運(yùn)動(dòng)拖影圖直接刪。檢測(cè)模型對(duì)模糊極其敏感訓(xùn)練數(shù)據(jù)里模糊圖太多模型學(xué)到的特征是模糊的紋理推理時(shí)反而會(huì)對(duì)清晰目標(biāo)不敏感。這一輪大概刪了10%。第二輪是重復(fù)圖去重。我用的是感知哈希pHash算法做相似度計(jì)算相似度超過(guò)0.9的只保留一張。如果不做去重訓(xùn)練集里會(huì)有大量近乎重復(fù)的樣本模型相當(dāng)于反復(fù)看同一張圖數(shù)據(jù)多樣性下降還容易過(guò)擬合。第三輪是語(yǔ)義檢查。這一步很關(guān)鍵。公開(kāi)數(shù)據(jù)集里的貓狗圖片偶爾會(huì)有標(biāo)簽錯(cuò)亂比如把狐貍標(biāo)成dog、把猞猁之類(lèi)的標(biāo)成cat。這些錯(cuò)誤標(biāo)簽混進(jìn)訓(xùn)練集會(huì)直接拉低模型精度。我手動(dòng)抽查了每批圖片的標(biāo)簽準(zhǔn)確性對(duì)存疑的圖片單獨(dú)篩出來(lái)人工復(fù)核。最終4300張圖的類(lèi)別分布如下類(lèi)別圖片數(shù)張實(shí)例總數(shù)只dog23503120cat19502680單張圖里多目標(biāo)的樣本大約占30%這個(gè)比例我個(gè)人建議要刻意保持。如果全是單寵圖片模型面對(duì)多只寵物同框時(shí)很容易漏檢。2.3 標(biāo)注工具的選型與標(biāo)注規(guī)范標(biāo)注工具我對(duì)比過(guò)幾個(gè)最后按項(xiàng)目情況選擇了x-anylabeling選它的原因是操作效率高、支持自動(dòng)保存、也支持YOLO/voc/pascal coco格式直接導(dǎo)出。LabelImg雖然經(jīng)典但多年沒(méi)維護(hù)了在高分屏下的體驗(yàn)比較一般。標(biāo)注規(guī)范是保證數(shù)據(jù)質(zhì)量的核心不能邊標(biāo)邊改。我在動(dòng)手前定了一套規(guī)則團(tuán)隊(duì)協(xié)作時(shí)嚴(yán)格按照這套執(zhí)行目標(biāo)完整可見(jiàn)就框全身不追求貼到極致但要保證目標(biāo)主體軀干頭部在框內(nèi)遮擋超過(guò)70%的實(shí)例不標(biāo)注屬于無(wú)法判斷的樣本只露出頭部或只露出背部的模糊半遮擋實(shí)例不標(biāo)注避免給模型引入噪聲兩只寵物緊挨著但邊界清晰時(shí)分別單獨(dú)標(biāo)注完全不清晰的遠(yuǎn)處目標(biāo)不標(biāo)注這里有個(gè)經(jīng)驗(yàn)之談標(biāo)注框不需要往死里貼合目標(biāo)邊緣。YOLO的損失計(jì)算是基于預(yù)測(cè)框和真實(shí)框的IoU標(biāo)注框差幾個(gè)像素對(duì)最終精度影響很小但為了摳幾個(gè)像素浪費(fèi)大量時(shí)間就完全沒(méi)有必要了。重要的是把該框的都框了、不該框的別亂框這件事做對(duì)。2.4 從標(biāo)注格式到Y(jié)OLO訓(xùn)練格式的轉(zhuǎn)換標(biāo)注工具導(dǎo)出的格式通常是VOC XML或COCO JSON而YOLO訓(xùn)練需要的是txt文件每行對(duì)應(yīng)一個(gè)目標(biāo)格式是類(lèi)別ID x_center y_center width height這四個(gè)坐標(biāo)值全部是歸一化到0~1之間的比例值不是像素值。舉個(gè)例子一張寬960、高640的圖中某個(gè)目標(biāo)的框左上角在(192, 128)右下角在(672, 512)那么x_center (192 672) / 2 / 960 0.45 y_center (128 512) / 2 / 640 0.5 width (672 - 192) / 960 0.5 height (512 - 128) / 640 0.6對(duì)應(yīng)的txt行就是0 0.45 0.5 0.5 0.6這個(gè)轉(zhuǎn)換邏輯不復(fù)雜但如果圖片集比較大建議直接寫(xiě)腳本批量處理而不是用標(biāo)注工具自帶的導(dǎo)出功能。原因有兩個(gè)一是可以順手做數(shù)據(jù)集的隨機(jī)劃分二是可以在轉(zhuǎn)換時(shí)統(tǒng)一檢查坐標(biāo)越界、空標(biāo)注文件等問(wèn)題。數(shù)據(jù)劃分我用的是train/val的比例隨機(jī)打亂后按9:1分配。這個(gè)比例對(duì)4300張圖來(lái)說(shuō)比較合理測(cè)試集拆出來(lái)太多會(huì)導(dǎo)致訓(xùn)練數(shù)據(jù)吃緊太少又很難評(píng)估真實(shí)效果。劃分完確認(rèn)一下每個(gè)集合里dog和cat的比例均衡避免出現(xiàn)驗(yàn)證集里全是狗的情況。3. YOLOv8訓(xùn)練前的目錄與配置文件90%的人會(huì)在這里栽跟頭3.1 版本選型為什么是YOLOv8現(xiàn)在說(shuō)到Y(jié)OLO其實(shí)社區(qū)里已經(jīng)有很多分支從YOLOv5到Y(jié)OLOv8、YOLOv9甚至YOLO11都在發(fā)展。我選擇YOLOv8而不是其他版本主要是這三個(gè)原因生態(tài)成熟Ultralytics官方維護(hù)文檔豐富安裝部署簡(jiǎn)單pip裝一下就能跑預(yù)訓(xùn)練權(quán)重豐富官方提供了n/s/m/l/x五個(gè)規(guī)格的預(yù)訓(xùn)練模型可以直接在COCO預(yù)訓(xùn)練權(quán)重基礎(chǔ)上做遷移學(xué)習(xí)收斂速度遠(yuǎn)超從頭訓(xùn)練驗(yàn)證推理靈活訓(xùn)練完可以方便地導(dǎo)出ONNX、TensorRT等格式部署到邊緣設(shè)備時(shí)選擇多資料下載方面YOLOv8的預(yù)訓(xùn)練模型權(quán)重可以直接從Ultralytics官方GitHub倉(cāng)庫(kù)鏈接下載也可以直接讓代碼自動(dòng)下載。對(duì)國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境不太穩(wěn)定的情況可以手動(dòng)下載后放到指定目錄然后訓(xùn)練時(shí)指定本地權(quán)重路徑。3.2 標(biāo)準(zhǔn)的目錄結(jié)構(gòu)與數(shù)據(jù)集配置文件YOLOv8訓(xùn)練要求數(shù)據(jù)集目錄有非常明確的結(jié)構(gòu)建議一次性搭好避免訓(xùn)練時(shí)報(bào)路徑錯(cuò)誤pet-dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── pet.yaml特別注意images目錄和labels目錄下的文件名要一一對(duì)應(yīng)比如images/train/0001.jpg必須對(duì)應(yīng)labels/train/0001.txt。如果出現(xiàn)txt缺失或者圖片缺失訓(xùn)練時(shí)要么報(bào)錯(cuò)要么數(shù)據(jù)加載量會(huì)莫名變少很難排查。pet.yaml的內(nèi)容如下path: ./pet-dataset train: images/train val: images/val nc: 2 names: 0: dog 1: cat這里最容易被忽略的是path字段建議用絕對(duì)路徑。如果寫(xiě)相對(duì)路徑很多新手會(huì)默認(rèn)從項(xiàng)目根目錄開(kāi)始解析結(jié)果花了半小時(shí)找行程錯(cuò)誤最后發(fā)現(xiàn)是路徑相對(duì)位置理解錯(cuò)了。3.3 核心訓(xùn)練參數(shù)怎么定我這次訓(xùn)練的基準(zhǔn)配置放在了下面大家可以作為起步參考model: yolov8s.pt data: pet.yaml epochs: 100 batch: 16 imgsz: 640 optimizer: AdamW lr0: 0.0005模型規(guī)格選了yolov8s而不是yolov8n。n雖然速度最快但小模型對(duì)小型寵物目標(biāo)的特征提取能力有限s在城市級(jí)推理場(chǎng)景和精度之間更均衡輸入分辨率640是默認(rèn)選擇。寵物目標(biāo)絕大多數(shù)情況下不算特別小的目標(biāo)640分辨率足夠batch值要看顯卡顯存來(lái)定。個(gè)人實(shí)測(cè)在6GB顯存下yolov8s640分辨率batch設(shè)為16剛好能跑如果顯存緊張batch降到8再配合梯度累積效果也不錯(cuò)優(yōu)化器選了AdamW。YOLOv8默認(rèn)是SGD但AdamW在中小型數(shù)據(jù)集上收斂更穩(wěn)不用太焦慮學(xué)習(xí)率設(shè)置的問(wèn)題。缺點(diǎn)是顯存占用會(huì)略高不過(guò)這個(gè)數(shù)據(jù)集規(guī)模下影響不大4. 訓(xùn)練曲線(xiàn)、混淆矩陣與三個(gè)容易翻車(chē)的細(xì)節(jié)訓(xùn)練真正跑起來(lái)之后比起哇AI好神奇你更需要盯著的是訓(xùn)練曲線(xiàn)和一系列評(píng)估指標(biāo)。我這邊訓(xùn)練的最終結(jié)果如下指標(biāo)數(shù)值mAP0.50.961mAP0.5:0.950.872Precision0.943Recall0.927這個(gè)結(jié)果對(duì)我來(lái)說(shuō)是達(dá)到預(yù)期的。但過(guò)程中其實(shí)不是一帆風(fēng)順我踩了幾個(gè)坑每一個(gè)都能讓訓(xùn)練成果打折扣下面展開(kāi)說(shuō)。4.1 第一個(gè)坑訓(xùn)練中BN層崩潰訓(xùn)練到大概第40輪左右我突然發(fā)現(xiàn)loss變成nan了。當(dāng)時(shí)第一反應(yīng)是學(xué)習(xí)率太大但調(diào)低之后重啟訓(xùn)練跑到一半又會(huì)出現(xiàn)。排查之后發(fā)現(xiàn)根因是batch size偏小加上部分圖片退化異常。BNBatch Normalization層在batch過(guò)小的時(shí)候統(tǒng)計(jì)的均值和方差波動(dòng)極大一旦某次迭代的方差算出來(lái)是0BN層就會(huì)輸出nan接下來(lái)所有梯度都被污染。這類(lèi)問(wèn)題的主要對(duì)策按優(yōu)先級(jí)排列把batch size從8提升到16檢查是否有個(gè)別圖片文件損壞我在數(shù)據(jù)清洗時(shí)篩過(guò)一輪但偶爾還是有一兩張大圖解碼異常如果確實(shí)只能用小batch可以把BN層的momentum調(diào)大一點(diǎn)減少對(duì)當(dāng)前batch統(tǒng)計(jì)值的依賴(lài)4.2 第二個(gè)坑混淆矩陣的總和不是100%訓(xùn)練結(jié)束看confusion matrix的時(shí)候有人會(huì)發(fā)現(xiàn)每一行的比例加起來(lái)不是100%就開(kāi)始懷疑是不是模型出了問(wèn)題。其實(shí)這個(gè)現(xiàn)象在YOLO的混淆矩陣?yán)锸钦5摹>唧w解釋是YOLO的混淆矩陣在計(jì)算時(shí)每個(gè)預(yù)測(cè)框會(huì)對(duì)應(yīng)一個(gè)最高置信度的類(lèi)別但置信度低于閾值的目標(biāo)會(huì)被歸到background那一行或列。也就是說(shuō)矩陣中顯示的是歸一化后的分布比例出現(xiàn)行和不為1是因?yàn)橛幸徊糠诸A(yù)測(cè)框被判定為了background并沒(méi)有在dog或cat類(lèi)別里顯示出來(lái)。所以看到confusion matrix總和不為1不要慌。應(yīng)該先看background那一行占了多大比例如果background占比明顯偏高說(shuō)明你的置信度閾值設(shè)得太高或模型存在較多漏檢如果dog、cat之間的交叉誤判很少模型就是正常的。4.3 第三個(gè)坑類(lèi)別分布不均帶來(lái)的收斂慢我最初的數(shù)據(jù)里dog和cat圖片數(shù)的比例差不多是6:4雖然不算極端但訓(xùn)練時(shí)發(fā)現(xiàn)dog類(lèi)收斂明顯比cat慢。原因是dog類(lèi)別實(shí)例多模型在每輪迭代中見(jiàn)到dog的樣本頻率更高權(quán)重更新也更頻繁。這里我沒(méi)有急著給cat類(lèi)強(qiáng)行復(fù)制圖片而是給損失函數(shù)里的類(lèi)別權(quán)重做了調(diào)整在用Ultralytics框架訓(xùn)練時(shí)可以通過(guò)給數(shù)據(jù)集配置文件或者訓(xùn)練代碼傳入類(lèi)別權(quán)重參數(shù)讓模型在計(jì)算分類(lèi)損失時(shí)對(duì)cat類(lèi)的錯(cuò)誤更加敏感。調(diào)整之后cat類(lèi)別的精度在后續(xù)幾個(gè)epoch里明顯追了上來(lái)。5. 從驗(yàn)證集到真實(shí)攝像頭實(shí)測(cè)效果與部署時(shí)的幾個(gè)建議訓(xùn)練階段指標(biāo)漂亮只是一半最終能不能用要看真實(shí)場(chǎng)景。我訓(xùn)練完之后做了兩輪實(shí)測(cè)。第一輪是用手機(jī)拍視頻模擬真實(shí)用戶(hù)使用場(chǎng)景。測(cè)試內(nèi)容包括家里兩只貓?jiān)诓煌块g走動(dòng)樓下小區(qū)里遛狗的路人夜間走廊有微弱燈光時(shí)貓穿過(guò)貓從攝像頭側(cè)前方快速跑過(guò)第二輪是拿了一套完全沒(méi)參與訓(xùn)練的圖片大概120張由朋友幫忙拍攝做盲測(cè)。這輪測(cè)試非常有價(jià)值暴露了單純看mAP看不到的問(wèn)題。盲測(cè)中我發(fā)現(xiàn)的一個(gè)明顯短板是當(dāng)寵物在畫(huà)面中占比非常小的時(shí)候比如畫(huà)面寬度640像素中寵物只占80像素漏檢率明顯上升。這個(gè)不是標(biāo)注問(wèn)題而是模型天然對(duì)小目標(biāo)不敏感。如果你也要做類(lèi)似場(chǎng)景給幾個(gè)實(shí)際建議部署時(shí)盡量讓寵物在畫(huà)面中的比例大一些鏡頭安裝角度不要太高推理分辨率不要低于訓(xùn)練分辨率我用640訓(xùn)練推理也盡量保持640不要為了速度隨便降到416如果是低算力設(shè)備部署我建議導(dǎo)出ONNX后用TensorRT做INT8量化精度損失可以控制在2%以?xún)?nèi)但速度提升往往非常明顯推理側(cè)還有一個(gè)讓我印象很深的問(wèn)題NMS閾值不要輕易動(dòng)。我把NMS的IoU閾值從默認(rèn)的0.7改到0.5之后原本兩條狗緊挨著的場(chǎng)景檢測(cè)框會(huì)突然消失一個(gè)。原因很簡(jiǎn)單兩個(gè)框重疊面積大NMS直接把低置信度那個(gè)框抑制掉了。所以非必要不動(dòng)NMS閾值動(dòng)之前先在真實(shí)數(shù)據(jù)上測(cè)過(guò)再說(shuō)。6. 數(shù)據(jù)集不會(huì)一次做完版本迭代與錯(cuò)誤樣例復(fù)盤(pán)6.1 收集失敗case才是數(shù)據(jù)迭代的起點(diǎn)模型部署到真實(shí)環(huán)境后你會(huì)發(fā)現(xiàn)誤檢和漏檢的出現(xiàn)模式很有規(guī)律。比如我碰到的幾個(gè)典型錯(cuò)誤案例毛絨玩具狗被識(shí)別成dog置信度還不低貓背包、貓窩上的印花貓被判成cat逆光情況下把垃圾桶旁邊的一團(tuán)塑料袋誤判成cat這些錯(cuò)誤案例如果只是看一眼就完事那數(shù)據(jù)集永遠(yuǎn)止步于4300張。正確做法是把每一個(gè)錯(cuò)誤case都收集到一個(gè)專(zhuān)門(mén)的目錄里隔一段時(shí)間人工復(fù)核并補(bǔ)充標(biāo)注然后以增量訓(xùn)練的方式更新模型。我自己的迭代節(jié)奏是每?jī)芍苁占淮五e(cuò)誤case每次補(bǔ)充100-200張圖。經(jīng)過(guò)三輪迭代之后模型對(duì)毛絨玩具、印花圖案這類(lèi)偽目標(biāo)的抗干擾能力提升明顯誤檢率幾乎降了一半。這一步投入的時(shí)間不多但收效非??捎^。6.2 給數(shù)據(jù)版本留好記錄后續(xù)會(huì)瘋狂感謝自己數(shù)據(jù)集做了3個(gè)月之后你就明白版本管理不是可選項(xiàng)而是必需品。我見(jiàn)過(guò)有人數(shù)據(jù)集文件重命名后又找不到舊版最后只能重新標(biāo)注白白浪費(fèi)了幾十個(gè)小時(shí)。按我現(xiàn)在的習(xí)慣每次數(shù)據(jù)調(diào)整都會(huì)記錄三件事改動(dòng)的時(shí)間、改動(dòng)的文件范圍、改動(dòng)的原因。比如v2.1 2025-03-12新增120張夜間場(chǎng)景圖修復(fù)17張標(biāo)簽坐標(biāo)偏移刪除8張重復(fù)圖這樣等模型出了問(wèn)題需要回滾數(shù)據(jù)版本時(shí)你手里永遠(yuǎn)有一本清清楚楚的賬。6.3 數(shù)據(jù)增強(qiáng)要不要加加多狠才合適訓(xùn)練YOLO時(shí)官方默認(rèn)會(huì)開(kāi)啟mosaic、翻轉(zhuǎn)、色彩變換等數(shù)據(jù)增強(qiáng)。一開(kāi)始我為了防止過(guò)擬合把mosaic概率調(diào)得比較高但后來(lái)發(fā)現(xiàn)寵物目標(biāo)如果被mosaic切得太碎模型在小目標(biāo)上的表現(xiàn)反而變差。特別是貓這種喜歡縮成一團(tuán)的動(dòng)物身體本來(lái)就不大被Mosaic一裁切標(biāo)注框可能就剩原來(lái)的一半了。最終我把mosaic概率從默認(rèn)的1.0降到了0.5同時(shí)把copy_paste增強(qiáng)概率適度調(diào)高一點(diǎn)。調(diào)整之后模型對(duì)完整目標(biāo)的檢測(cè)效果更穩(wěn)定因?yàn)槟P徒K于能看到完整的貓了。這個(gè)參數(shù)的調(diào)整原理其實(shí)很簡(jiǎn)單數(shù)據(jù)增強(qiáng)的目的是增加多樣性但如果增強(qiáng)手段破壞了目標(biāo)本身的完整性模型學(xué)到的就只是殘缺特征。這一步調(diào)參花了大概三天時(shí)間做對(duì)比實(shí)驗(yàn)但效果是實(shí)實(shí)在在的。我建議你做類(lèi)似項(xiàng)目時(shí)一定要自己跑幾組增強(qiáng)參數(shù)對(duì)比別嫌麻煩默認(rèn)參數(shù)在寵物這種非剛性目標(biāo)上并不一定是最佳選擇。