據(jù)集實戰(zhàn):從標(biāo)注校驗到Y(jié)OLO模型訓(xùn)練避坑指南)
簡介面向無人機視覺與計算機視覺研究者、開發(fā)者的行人檢測數(shù)據(jù)集旨在為無人機航拍場景下的行人識別與避障提供高質(zhì)量訓(xùn)練材料。整個壓縮包共1895個文件包含630張jpg原圖、630個xml邊界框標(biāo)注、634個txt標(biāo)簽說明并附1個py預(yù)處理/轉(zhuǎn)換腳本包體約206.8MB。數(shù)據(jù)已劃分訓(xùn)練集、測試集和驗證集圖像與標(biāo)注一一對應(yīng)覆蓋從數(shù)據(jù)準(zhǔn)備、格式轉(zhuǎn)換到模型訓(xùn)練、評估的完整鏈路可直接用于YOLO、Faster R-CNN、SSD等主流檢測框架免去自行采集和標(biāo)注的繁瑣工作。讀者既能據(jù)此驗證航拍視角下的檢測效果也能通過對比實驗分析不同模型性能同時學(xué)習(xí)PASCAL VOC風(fēng)格標(biāo)注與txt標(biāo)簽的組織方式。目前已有3956人學(xué)習(xí)下載適合無人機巡檢、安防監(jiān)控、智慧交通等場景下的算法研究與工程實踐。1. 無人機行人檢測數(shù)據(jù)集標(biāo)注好了不等于直接能用關(guān)鍵看這四件事一個“已標(biāo)注”的無人機行人檢測數(shù)據(jù)集聽起來像是拿到了現(xiàn)成的答案解壓、訓(xùn)練、出模型三步走完。但我在本地跑過幾個公開渠道能找到的無人機視角行人檢測數(shù)據(jù)集之后最大的感受是標(biāo)注好只是起點能不能讓模型真的在無人機畫面上把人檢出來取決于標(biāo)注質(zhì)量、視角分布、目標(biāo)尺寸和場景覆蓋這四件事。這也是為什么同樣用“已標(biāo)注”的數(shù)據(jù)集有人三天跑出能用的模型有人折騰兩周還在跟漏檢和誤檢搏斗。這篇文章要解決的就是把你從“拿到數(shù)據(jù)集”帶到“模型能落地”這段路。適合正在做無人機巡檢、安防監(jiān)控、智慧城市相關(guān)項目的開發(fā)者也適合剛?cè)腴T目標(biāo)檢測、想用現(xiàn)成數(shù)據(jù)集快速驗證算法思路的同學(xué)。我會從數(shù)據(jù)集的構(gòu)成和標(biāo)注規(guī)范講起然后給出一套從數(shù)據(jù)校驗到模型訓(xùn)練的可復(fù)現(xiàn)流程最后把高手才會注意的邊界條件和踩坑點拆開講。2. 數(shù)據(jù)集構(gòu)成與標(biāo)注規(guī)范先弄清楚“已標(biāo)注”到底標(biāo)注了什么拿到任何一個“已標(biāo)注”的無人機行人檢測數(shù)據(jù)集第一件事不是解壓跑腳本而是先看清楚它的目錄結(jié)構(gòu)和標(biāo)注格式。很多翻車現(xiàn)場都是從這里開始的看起來是同一套標(biāo)注格式實際用的時候才發(fā)現(xiàn)坐標(biāo)系統(tǒng)、類別編號、圖片尺寸記錄方式對不上白白浪費一下午。2.1 數(shù)據(jù)來源與場景分布先判斷它適不適合你的任務(wù)無人機視角的行人檢測和普通監(jiān)控攝像頭視角有本質(zhì)區(qū)別。監(jiān)控攝像頭大多是俯仰角固定、目標(biāo)尺度相對穩(wěn)定無人機是俯視視角行人在畫面里通常是小目標(biāo)占比不到整張圖的百分之幾而且會隨飛行高度和速度發(fā)生劇烈的尺度變化。數(shù)據(jù)里如果大多數(shù)圖片的拍攝高度在30米以下、行人占比大那你拿去做50米高度的巡檢任務(wù)就會出現(xiàn)明顯漏檢。我一般拿到數(shù)據(jù)集先做三件事統(tǒng)計圖片分辨率分布、統(tǒng)計標(biāo)注框面積分布、統(tǒng)計每張圖的平均目標(biāo)數(shù)。這三個數(shù)字直接決定這個數(shù)據(jù)集適不適合當(dāng)前任務(wù)。標(biāo)注框面積分布特別值得看——如果絕大多數(shù)框的長邊小于64像素訓(xùn)練時需要重點考慮小目標(biāo)檢測策略如果數(shù)據(jù)和實際作業(yè)高度落差太大優(yōu)先找同場景的數(shù)據(jù)集或者自己補采。2.2 標(biāo)注格式與目錄結(jié)構(gòu)VOC、YOLO還是COCO常見的無人機行人檢測數(shù)據(jù)集有三種標(biāo)注形態(tài)Pascal VOC格式的XML文件、YOLO格式的TXT文件、COCO格式的JSON文件。三種格式的坐標(biāo)表達方式不同VOC和COCO都是絕對像素坐標(biāo)且用xmin、ymin、xmax、ymax這類方式記錄YOLO格式用的是歸一化的中心點坐標(biāo)和寬高。圖片尺寸記錄這件事也容易踩坑VOC的XML里帶有圖片寬高可以直接校驗YOLO的TXT不帶尺寸信息如果原始圖片被縮放標(biāo)注坐標(biāo)會全軍覆沒。我習(xí)慣用下面這條命令先摸清目錄結(jié)構(gòu)再決定怎么下手# 查看數(shù)據(jù)集目錄樹限制層級為3 cd dataset_root tree -L 3 -d # 統(tǒng)計圖片數(shù)量、XML/TXT/JSON標(biāo)注文件數(shù)量 find . -name *.jpg | wc -l find . -name *.xml | wc -l輸出結(jié)果能告訴你數(shù)據(jù)集是原始結(jié)構(gòu)還是已經(jīng)做了劃分。如果是劃分好的通常有train、val、test三個目錄但不少數(shù)據(jù)集只分了兩部分需要自己再切一次驗證集。# 統(tǒng)計標(biāo)注框尺寸分布的Python腳本片段 # 這里按照YOLO格式的txt標(biāo)注為例 import os from collections import Counter img_width, img_height 1920, 1080 size_bins Counter() label_dir labels/train for f in os.listdir(label_dir): if not f.endswith(.txt): continue with open(os.path.join(label_dir, f)) as fp: for line in fp: _, cx, cy, w, h line.strip().split() pixel_w float(w) * img_width pixel_h float(h) * img_height if pixel_w 32 or pixel_h 32: size_bins[tiny] 1 elif pixel_w 96 or pixel_h 96: size_bins[small] 1 else: size_bins[large] 1 print(size_bins)這段腳本的關(guān)鍵作用是提前暴露目標(biāo)尺度分布。如果tiny類占比超過一半后面訓(xùn)練必須啟用多尺度訓(xùn)練和更高分辨率的輸入圖。代碼里img_width和img_height需要改成你手里數(shù)據(jù)的真實值不確定的話用Python的PIL庫批量讀取一張圖確認(rèn)。標(biāo)注文件的格式如果是VOC或者COCO解析邏輯要相應(yīng)改成XML或JSON取值但判斷思路是一樣的。3. 把數(shù)據(jù)集跑起來從解壓到可視化校驗的一條龍操作數(shù)據(jù)集的目錄結(jié)構(gòu)摸清了標(biāo)注格式也確認(rèn)了接下來不能直接進訓(xùn)練。先做可視化校驗這是整個流程里最便宜的一道后悔藥把標(biāo)注框畫到原圖上人眼看一遍就能發(fā)現(xiàn)坐標(biāo)偏移、類別錯標(biāo)、框沒貼住目標(biāo)這些問題。省下的是后面訓(xùn)練半天發(fā)現(xiàn)loss不下降的排查時間。3.1 先做數(shù)據(jù)劃分與文件完整性檢查訓(xùn)練前一定要劃分?jǐn)?shù)據(jù)。不要直接拿所有圖片訓(xùn)練否則你連模型過擬合還是欠擬合都判斷不了。常見做法是訓(xùn)練集、驗證集、測試集按7:2:1劃分。如果數(shù)據(jù)集本身劃分好了檢查一遍文件是否齊整——圖片和標(biāo)注文件一一對應(yīng)是這步的重點。# 檢查圖片與標(biāo)注文件是否一一對應(yīng) import os from pathlib import Path def check_pairs(img_dir, label_dir): imgs {Path(f).stem for f in os.listdir(img_dir) if f.endswith((.jpg, .jpeg, .png))} labels {Path(f).stem for f in os.listdir(label_dir) if f.endswith(.txt)} img_only imgs - labels label_only labels - imgs print(f缺標(biāo)注的圖片數(shù): {len(img_only)}) print(f缺圖片的標(biāo)注數(shù): {len(label_only)}) # 打印前5個缺標(biāo)注的圖片名方便定位 for name in list(img_only)[:5]: print(missing label:, name) check_pairs(images/train, labels/train)這段代碼用意是暴露配對問題。很多數(shù)據(jù)集從網(wǎng)盤下載后會出現(xiàn)文件缺失或文件名被截斷直接用完整的數(shù)據(jù)集訓(xùn)練會讓模型在加載時報錯或者默認(rèn)跳過某些圖片。缺標(biāo)注的圖片一定要從訓(xùn)練集里剔除否則訓(xùn)練過程中會隨機報錯而且報錯信息往往不直觀只顯示一個DataLoader worker崩潰。剔除缺標(biāo)注圖片的方法不復(fù)雜把上面腳本里img_only里的文件移到另一個目錄或者生成一個保留清單。我一般直接把訓(xùn)練清單寫成文本訓(xùn)練腳本讀取這個清單來加載圖片這樣比物理移動文件更靈活后面增刪樣本也方便。3.2 用可視化腳本給標(biāo)注框畫出來坐標(biāo)對不對一眼便知校驗標(biāo)注正確性最快的方式就是畫框。下面這段腳本讀取YOLO格式標(biāo)注并畫在圖上輸出到preview目錄。代碼里做了坐標(biāo)越界判斷這是從踩坑里學(xué)來的不少數(shù)據(jù)集的標(biāo)注框有極小概率越界如果不加保護后續(xù)變成COCO或VOC格式時數(shù)值會異常。# 可視化YOLO標(biāo)注輸出效果預(yù)覽圖 import cv2 import os import numpy as np def draw_yolo_boxes(img_path, label_path, out_dir): img cv2.imread(img_path) h, w img.shape[:2] colors [(0, 255, 0), (0, 0, 255), (255, 0, 0)] with open(label_path) as fp: for line in fp: parts line.strip().split() if len(parts) ! 5: continue cls int(parts[0]) cx, cy, bw, bh map(float, parts[1:]) # 反歸一化還原像素坐標(biāo) x1 int((cx - bw / 2) * w) y1 int((cy - bh / 2) * h) x2 int((cx bw / 2) * w) y2 int((cy bh / 2) * h) # 越界裁剪 x1, y1 max(0, x1), max(0, y1) x2, y2 min(w, x2), min(h, y2) cv2.rectangle(img, (x1, y1), (x2, y2), colors[cls % len(colors)], 2) cv2.putText(img, fcls-{cls}, (x1, max(0, y1 - 5)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, colors[cls % len(colors)], 1) os.makedirs(out_dir, exist_okTrue) cv2.imwrite(os.path.join(out_dir, os.path.basename(img_path)), img) # 遍歷前50張訓(xùn)練圖做預(yù)覽 img_dir images/train label_dir labels/train for i, fname in enumerate(os.listdir(img_dir)): if i 50: break stem os.path.splitext(fname)[0] lbl os.path.join(label_dir, stem .txt) if os.path.exists(lbl): draw_yolo_boxes(os.path.join(img_dir, fname), lbl, preview)從預(yù)覽圖里最容易發(fā)現(xiàn)的幾個問題框整體偏移說明坐標(biāo)歸一化基準(zhǔn)不對某些框?qū)捀邽?說明標(biāo)注文件損壞類別編號大量超出預(yù)期說明數(shù)據(jù)集里可能混入了其他類別的樣本。這批預(yù)覽圖務(wù)必肉眼過一遍至少抽看訓(xùn)練集、驗證集、測試集各一部分。我見過有人在這個環(huán)節(jié)發(fā)現(xiàn)整個數(shù)據(jù)集的標(biāo)注都沒有貼住行人而是框住了背景這種問題不提前發(fā)現(xiàn)訓(xùn)練再久也不會有好結(jié)果。4. 用數(shù)據(jù)集訓(xùn)練檢測模型完整流程與關(guān)鍵參數(shù)校驗沒問題就到了正式訓(xùn)練環(huán)節(jié)。多數(shù)人拿到“已標(biāo)注”的無人機行人檢測數(shù)據(jù)集目標(biāo)是把模型訓(xùn)練到一個能用的水平。這個部分我以YOLO系列為例展開這也是目前無人機目標(biāo)檢測里最主流的方案兼顧速度和精度。訓(xùn)練流程上覆蓋從選模型到判讀訓(xùn)練曲線的完整路徑。4.1 模型選型與數(shù)據(jù)格式適配模型選型的核心邏輯是算力有限就優(yōu)先考慮YOLO系列的輕量版本需要極致精度且推理設(shè)備允許大模型再往上加。無人機場景通常是在嵌入式設(shè)備或者邊緣計算盒子上跑推理參數(shù)規(guī)模太大會帶來幀率壓力。經(jīng)驗值是在30萬像素級別的輸入分辨率下輕量版能做到實時標(biāo)準(zhǔn)版有明顯精度優(yōu)勢但速度下降明顯。數(shù)據(jù)格式適配這一步是把第3章校驗通過的YOLO格式TXT和圖片組織成訓(xùn)練框架要求的目錄結(jié)構(gòu)。不同框架對數(shù)據(jù)組織方式要求不同但訓(xùn)練集和驗證集的圖、標(biāo)分別放兩個目錄是最通用的做法# YOLO系訓(xùn)練框架通用的數(shù)據(jù)目錄布局 datasets/ drone_person/ images/ train/ # 訓(xùn)練集圖片 val/ # 驗證集圖片 labels/ train/ # 訓(xùn)練集標(biāo)注txt val/ # 驗證集標(biāo)注txt data.yaml # 數(shù)據(jù)配置文件data.yaml是訓(xùn)練入口里面記錄類別數(shù)、類別名和路徑。寫這個文件時有個高頻坑路徑最好寫絕對路徑或者使用相對當(dāng)前工作目錄的路徑不要寫一個看起來對但實際不存在的路徑。# data.yaml 內(nèi)容示例 path: /home/user/datasets/drone_person train: images/train val: images/val nc: 1 names: [person]這個文件的難點不在格式在于理解path字段的基準(zhǔn)意義。很多框架會基于path拼接train和val的路徑如果你把train寫成/home/user/datasets/...這種絕對路徑框架會拼出一串錯誤的地址。建議先寫相對路徑images/train然后在命令行驗證路徑拼接結(jié)果??蚣軉訒r會打印實際加載的圖片路徑掃一眼就能確認(rèn)。4.2 訓(xùn)練啟動與參數(shù)調(diào)整訓(xùn)練啟動命令看著簡單但參數(shù)怎么設(shè)直接決定結(jié)果上限。我常用的訓(xùn)練命令如下# 以YOLO系框架為例啟動訓(xùn)練 yolo train \ modelyolov8s.pt \ datadata.yaml \ epochs100 \ imgsz1280 \ batch16 \ lr00.01 \ mosaic0.5逐個說參數(shù)考慮imgsz1280是應(yīng)對無人機小目標(biāo)的關(guān)鍵設(shè)置。很多現(xiàn)成教程默認(rèn)給640但無人機畫面里的行人只有幾十個像素分辨率太低會直接抹掉細(xì)節(jié)。顯存夠就上1280不夠就降到960。mosaic0.5是馬賽克增強的概率無人機行人數(shù)據(jù)集如果場景比較單一把增強概率降下來能避免訓(xùn)練分布和真實分布偏離太多。lr0初始學(xué)習(xí)率0.01是一個穩(wěn)妥起點如果訓(xùn)練曲線震蕩明顯就降到0.005。# 訓(xùn)練后驗證模型效果 yolo val \ modelruns/detect/train/weights/best.pt \ datadata.yaml這里的best.pt是訓(xùn)練過程中在驗證集上精度最高的模型權(quán)重不是最后一輪的last.pt。用best做驗證能反映真實可用精度。驗證輸出里主要看mAP50、mAP50-95這兩個指標(biāo)。對無人機行人檢測來說mAP50的意義更大因為行人檢測的判斷標(biāo)準(zhǔn)通常框得差不多就行不需要像素級精確mAP50-95考察的是更嚴(yán)格的框質(zhì)量如果這個數(shù)值過低而mAP50不低說明模型的框定位偏粗糙可以考慮在后續(xù)迭代里調(diào)整回歸損失的權(quán)重。4.3 訓(xùn)練曲線的判讀方法訓(xùn)練過程輸出兩張關(guān)鍵曲線loss曲線和驗證指標(biāo)曲線。loss曲線里訓(xùn)練loss下降而驗證loss不降反升是過擬合的典型信號兩個loss都在下降但速度很慢大概率是學(xué)習(xí)率太小或者數(shù)據(jù)增強過重。驗證指標(biāo)曲線里mAP50在前20個epoch快速上升、后面緩慢爬升是正常節(jié)奏如果前10個epoch完全沒有上升跡象回查數(shù)據(jù)yaml和標(biāo)簽格式可能更高效。我一般會盯著前20個epoch的loss曲線做判斷而不是等100個epoch全跑完。前20輪如果訓(xùn)練loss和驗證loss同步下降這組參數(shù)就是健康的讓它繼續(xù)跑就行如果驗證loss在20輪內(nèi)出現(xiàn)了持續(xù)上升就可以直接停掉調(diào)參不浪費后面的幾十輪時間。這也是遇到過太多次訓(xùn)練數(shù)小時、結(jié)果發(fā)現(xiàn)標(biāo)簽坐標(biāo)是反的過程之后養(yǎng)成的習(xí)慣。5. 無人機行人檢測避坑指南五個高頻問題與排查路徑這個數(shù)據(jù)集方向上幾乎每個坑都會讓訓(xùn)練時間翻倍。以下五條是從實際操作里反復(fù)踩出來的每條都按現(xiàn)象、原因、解決三個層次來寫。5.1 小目標(biāo)漏檢嚴(yán)重模型幾乎對遠(yuǎn)處的行人無感現(xiàn)象訓(xùn)練后的模型對近距離行人檢測效果尚可但畫面里的遠(yuǎn)距離行人大量漏檢甚至完全不報。驗證集上mAP50不低但實際飛高之后效果立刻劣化。原因訓(xùn)練數(shù)據(jù)里小目標(biāo)樣本占比高但模型輸入分辨率不足網(wǎng)絡(luò)下采樣后小目標(biāo)特征被卷積層抹掉了。多數(shù)模型的下采樣倍率是32倍輸入640時一個32像素的行人在最終特征圖上只有1個像素點幾乎不可能被檢出。解決三步走。第一步把imgsz提升到1280讓同樣一個行人占據(jù)更多像素第二步開啟多尺度訓(xùn)練讓模型見過不同尺寸的行人第三步如果仍然漏檢用基于錨點的檢測頭并單獨調(diào)高小目標(biāo)層的權(quán)重。5.2 標(biāo)注框和圖片分辨率對不上坐標(biāo)明顯偏移現(xiàn)象可視化預(yù)覽時所有框集體向左上偏移而且遠(yuǎn)處小目標(biāo)的框偏得格外明顯。原因數(shù)據(jù)集里圖片原始分辨率是4000x3000但標(biāo)注坐標(biāo)是基于縮略圖1500x1000做的訓(xùn)練時直接讀取原始圖片導(dǎo)致坐標(biāo)換算錯誤。這類問題在從網(wǎng)盤下載的多個來源混合數(shù)據(jù)集里特別常見。解決檢查圖片的真實尺寸并用它作為反歸一化的基準(zhǔn)。不要信文件命名里的尺寸信息用Python的PIL或OpenCV讀一遍。如果發(fā)現(xiàn)混用批量將圖片統(tǒng)一縮放到標(biāo)注坐標(biāo)對應(yīng)的尺寸或者把標(biāo)注坐標(biāo)重新?lián)Q算到圖片實際尺寸。5.3 負(fù)樣本太少誤檢成群出現(xiàn)現(xiàn)象模型把屋頂、車輛、樹冠頻繁識別成行人而且誤檢位置集中在某些特定紋理區(qū)域。原因數(shù)據(jù)集中絕大多數(shù)圖片都包含行人純背景幀幾乎沒有。模型學(xué)到的是“有紋理的局部區(qū)域像行人”而不是真正區(qū)分行人的結(jié)構(gòu)特征。解決從無人的巡檢視頻里抽幀加入20%到30%作為負(fù)樣本標(biāo)注文件留空即可。這是成本最低又最有效的防誤檢手段。加入負(fù)樣本后模型會學(xué)會“在沒有行人時輸出空檢測”而不是硬找出一個框。5.4 類別不平衡導(dǎo)致訓(xùn)練不收斂現(xiàn)象損失函數(shù)持續(xù)震蕩驗證mAP在一兩個點之間來回跳模型輸出的類別概率傾向于某一類比如背景類。原因數(shù)據(jù)集中某些類別樣本極少檢測頭對這類目標(biāo)的梯度貢獻被大類別淹沒。在行人數(shù)據(jù)集里這往往表現(xiàn)為“行人和騎行的人混在一起但其中一類數(shù)量很少”。解決最簡單的做法是給不同類別設(shè)置不同的loss權(quán)重或者在采樣器里做類別重采樣。另一個可行方案是把稀有類別合并到大類別里——如果你的任務(wù)不要求區(qū)分這兩個子類合并是更務(wù)實的做法。5.5 訓(xùn)練集和驗證集分布不一致現(xiàn)象訓(xùn)練loss下降漂亮驗證集mAP也很高但模型在真實場景里表現(xiàn)稀爛。換了一批圖片測試后精度掉了一半以上。原因數(shù)據(jù)劃分時沒有做隨機化或者是按時間順序切分導(dǎo)致驗證集和訓(xùn)練集場景高度相似驗證結(jié)果虛高。更隱蔽的情況是如果數(shù)據(jù)集里包含同一個場景的連續(xù)幀隨機劃分會讓相似的畫面同時出現(xiàn)在訓(xùn)練集和驗證集嚴(yán)重的“數(shù)據(jù)泄露”會讓指標(biāo)失真。解決按視頻序列劃分?jǐn)?shù)據(jù)同一個視頻來源的幀只能出現(xiàn)在一個集合里。只需要在劃分前按文件名前綴分組再對組進行劃分就能避免這個問題。這樣評估結(jié)果才真正反映模型面對新場景時的表現(xiàn)。6. 把數(shù)據(jù)集的價值最大化三個讓模型更進一步的技巧當(dāng)你已經(jīng)在“已標(biāo)注”的數(shù)據(jù)集上跑通了基線模型接下來這三個技巧能讓模型的實用性和精度再上一個臺階。這三個技巧用到最多的場景是模型已經(jīng)能用、但距離實際作業(yè)要求還差一口氣的時候。第一個技巧是多尺度訓(xùn)練與推理聯(lián)動。訓(xùn)練時開啟多尺度每輪迭代隨機從某個尺度范圍內(nèi)采樣輸入尺寸讓模型適應(yīng)行人尺度的變化。推理時用TTA測試時增強把原圖和縮放后的圖分別送進模型推理再融合結(jié)果。這個組合能讓小目標(biāo)檢測的mAP提升大約3到5個點代價是推理耗時增加。實測中TTA對無人機場景的收益特別明顯因為行人的絕對尺寸在飛行高度變化時會劇烈波動。第二個技巧是利用偽標(biāo)注迭代優(yōu)化。把已訓(xùn)練模型拿到目標(biāo)場景的新視頻上跑一遍推理得到一批帶置信度的檢測結(jié)果人工篩選高置信度框作為偽標(biāo)注加入訓(xùn)練集。這個過程能顯著提升模型在新場景的適應(yīng)能力。篩選標(biāo)準(zhǔn)要高置信度至少0.8以上并且經(jīng)過人工抽檢確認(rèn)。一輪偽標(biāo)注迭代大約能讓新場景的recall提升10%以上。我在項目中試過用這個方法讓模型的場景遷移成本降低了七成但要注意每輪迭代后都要重新劃分?jǐn)?shù)據(jù)集避免數(shù)據(jù)泄露。第三個技巧是可視化特征圖來定位失敗原因。訓(xùn)練結(jié)束后選取一張漏檢圖片把網(wǎng)絡(luò)中間層的特征圖可視化出來觀察小目標(biāo)區(qū)域在網(wǎng)絡(luò)深層是否還有響應(yīng)。如果響應(yīng)微弱說明網(wǎng)絡(luò)在這個尺度上已經(jīng)丟失了目標(biāo)信息如果響應(yīng)強烈但最終輸出沒有框則問題多半出在檢測頭或者后處理階段。這類排查比盲調(diào)參數(shù)高效得多能直接把優(yōu)化方向從“玄學(xué)調(diào)參”變成“針對修復(fù)”。我自己的教訓(xùn)是每次拿到新數(shù)據(jù)集先花一個小時做第2、3章的校驗再開始訓(xùn)練這樣后面省下的時間通常是三倍以上。哪怕數(shù)據(jù)是官方發(fā)布的“精品數(shù)據(jù)集”也值得走一遍這個流程。希望幫到你。本文還有配套的精品資源點擊獲取