據(jù)集實戰(zhàn):VOC/YOLO雙格式與YOLO訓練調(diào)優(yōu)指南)
1. 項目緣起與數(shù)據(jù)集整體設計思路1.1 為什么盯上了“無人機海面垃圾”這個方向做視覺檢測這行的朋友應該都有體會通用數(shù)據(jù)集刷到90%以上的mAP已經(jīng)很難帶來什么興奮感了真正讓人頭疼的是那些場景特殊、樣本稀缺、標注成本極高的垂直領域。海面漂浮垃圾檢測就是典型中的一個——它不像COCO、VOC那樣有幾十萬張標注圖等著你去調(diào)參也不像工業(yè)質(zhì)檢那樣有穩(wěn)定的光照和背景。你要面對的是動態(tài)水面反光、波浪紋理干擾、目標尺度劇烈變化、無人機視角下的透視畸變以及最要命的——正負樣本極度不平衡。我拿到這個數(shù)據(jù)集的時候第一反應是“9627張、單類別、VOCYOLO雙格式”這個體量在垂直領域里算是相當能打的了。要知道很多海面垃圾相關的公開數(shù)據(jù)集要么只有幾百張要么是多類別混標導致單類樣本被稀釋。單類別“垃圾”雖然粗粒度但對于海漂垃圾巡檢、水面清潔船路徑規(guī)劃、近岸環(huán)境監(jiān)測這類應用來說先解決“有沒有”的問題遠比“是什么垃圾”更緊迫。你不可能讓一架無人機在海上先分辨塑料瓶和泡沫箱再決定要不要上報實際工程中都是先框出來、傳回岸基、人工復核分類。這個數(shù)據(jù)集的核心價值在于它把無人機低空拍攝這個特定視角下的海面垃圾檢測問題做成了一個可以直接拿來訓練、驗證、對比的標準化基準。不管你是做學術研究要跑baseline還是做工程落地要快速驗證模型可行性這9627張圖能幫你省掉至少兩三個月的數(shù)據(jù)采集和標注周期。1.2 VOC與YOLO雙格式并存的工程意義很多剛?cè)腴T的同學會問為什么同一個數(shù)據(jù)集要提供VOC和YOLO兩種格式直接用YOLO格式不就行了嗎這個問題我在帶新人的時候被問過不下十次。答案其實很簡單VOC格式是“母版”YOLO格式是“派生版”。VOC格式用XML文件存儲標注信息每個目標用bndbox標簽記錄xmin, ymin, xmax, ymax四個絕對坐標值。這種格式的好處是信息完整、可讀性強、方便做數(shù)據(jù)增強和格式轉(zhuǎn)換。你拿到VOC格式的標注想轉(zhuǎn)成COCO、轉(zhuǎn)成YOLO、轉(zhuǎn)成CSV、甚至自己寫個腳本做統(tǒng)計分析都非常直接。而且VOC格式保留了圖像的原始尺寸信息對于后續(xù)要做多尺度訓練或者切片推理的場景來說這個信息至關重要。YOLO格式則是把標注歸一化成了class_id x_center y_center width height五個值全部是0到1之間的相對坐標。這種格式的好處是直接喂給YOLO系列模型就能訓練不需要在數(shù)據(jù)加載階段做額外的坐標變換訓練效率更高。但缺點是丟失了絕對尺寸信息如果你要做一些依賴原始像素尺寸的操作比如按目標實際像素面積過濾小目標就得反歸一化回去。這個數(shù)據(jù)集同時提供兩種格式說明制作者是懂工程實際的。我的建議是永遠保留VOC格式作為原始存檔每次訓練前用腳本動態(tài)生成YOLO格式。這樣當你需要調(diào)整類別映射、過濾某些樣本、或者做格式轉(zhuǎn)換實驗時不會因為反復轉(zhuǎn)換導致精度損失或信息丟失。1.3 單類別設計的利與弊單類別“垃圾”這個設計乍一看好像太粗糙了但仔細想想其實很合理。海面漂浮垃圾的形態(tài)差異極大——塑料瓶、泡沫板、漁網(wǎng)碎片、木板、海藻團有時候會被誤標——如果強行分成多個細類每個類的樣本量可能只有幾百張訓練出來的模型大概率過擬合。而且在實際巡檢場景中發(fā)現(xiàn)垃圾的位置比識別垃圾的種類更重要后續(xù)的清理決策可以由人工或更高層級的分類模型來完成。但單類別也有它的坑。最大的問題是類內(nèi)差異過大一個透明塑料瓶和一個黑色輪胎在視覺特征上幾乎沒有共性。模型要學會把它們都歸為“垃圾”需要非常大的樣本多樣性和足夠強的特征提取能力。這也是為什么這個數(shù)據(jù)集9627張的體量顯得尤為重要——樣本量不夠單類別反而比多類別更難訓因為模型沒有類別間的對比信號只能靠海量樣本來覆蓋類內(nèi)變化。我在實際訓練中發(fā)現(xiàn)對于這種類內(nèi)差異大的單類別檢測數(shù)據(jù)增強策略比模型結(jié)構(gòu)選擇更關鍵。后面我會專門講這塊的實操細節(jié)。2. 數(shù)據(jù)集核心細節(jié)解析與實操要點2.1 標注質(zhì)量評估與清洗策略拿到任何數(shù)據(jù)集第一件事不是急著跑訓練而是做標注質(zhì)量抽檢。我見過太多人直接拿數(shù)據(jù)集開訓結(jié)果mAP卡在0.5上不去排查半天才發(fā)現(xiàn)是標注框大量漏標、錯標、重疊框?qū)е碌?。對于這個海面垃圾數(shù)據(jù)集我建議按以下流程做質(zhì)量評估第一步隨機抽樣目視檢查。從9627張里隨機抽200張用LabelImg或者自己寫個可視化腳本把標注框畫出來逐張看。重點看三類問題漏標圖里有明顯垃圾但沒框、過框框的范圍遠大于實際目標、誤標把浪花反光、海鳥、船體陰影標成了垃圾。海面場景特別容易出現(xiàn)浪花被誤標的情況因為白色浪花和白色泡沫垃圾在低分辨率下確實很像。第二步統(tǒng)計標注框尺寸分布。用Python腳本讀一遍所有XML文件統(tǒng)計每個框的寬高像素值畫出直方圖。這個數(shù)據(jù)集的無人機拍攝高度決定了目標像素尺寸的分布范圍。如果發(fā)現(xiàn)大量框的寬高小于10像素說明存在大量極小目標訓練時需要特別注意輸入分辨率和特征金字塔的設計。如果發(fā)現(xiàn)有些框的寬高比極端異常比如寬高比大于10或小于0.1大概率是標注錯誤需要人工復核。第三步檢查類別標簽一致性。雖然只有一個類別但要確認所有XML里的name字段是否完全一致。我遇到過有的數(shù)據(jù)集里同時存在“garbage”、“trash”、“waste”三種寫法導致訓練時被當成三個類別處理。這個數(shù)據(jù)集標稱單類別但拿到手后還是用腳本掃一遍確認最穩(wěn)妥。注意標注清洗不要過度。有些框看起來“不太準”但只要IoU在0.5以上對訓練的影響其實有限。把大量時間花在微調(diào)標注框上不如多跑幾組對比實驗。我的經(jīng)驗是標注質(zhì)量從60分提到80分帶來的收益遠大于從80分提到95分。2.2 無人機視角下的圖像特性分析無人機低空拍攝和地面手持拍攝、衛(wèi)星遙感拍攝有本質(zhì)區(qū)別這些區(qū)別直接決定了模型設計和訓練策略的選擇。第一透視畸變與尺度變化。無人機通常以一定傾角拍攝海面導致圖像中的目標存在透視變形。靠近圖像邊緣的目標被拉伸靠近中心的目標相對正常。更麻煩的是同一類垃圾在不同飛行高度下像素尺寸可能相差幾十倍——低空5米拍的塑料瓶可能有200像素寬高空30米拍的同樣塑料瓶可能只有20像素。這種極端尺度變化要求模型必須有很強的多尺度檢測能力。第二水面反光與紋理干擾。海面不是均勻背景波浪、泡沫、陽光反射都會產(chǎn)生大量高頻紋理。這些紋理在淺層特征上和垃圾的邊緣特征非常相似容易導致誤檢。我在可視化模型特征圖時發(fā)現(xiàn)水面反光區(qū)域的激活值往往和真實垃圾區(qū)域相當這說明模型確實被干擾了。第三運動模糊。無人機在飛行中拍攝如果快門速度不夠快海面波浪和移動中的垃圾會產(chǎn)生運動模糊。這個數(shù)據(jù)集里應該有一部分圖像存在不同程度的模糊訓練時如果全部當清晰樣本處理模型對模糊目標的檢測能力會偏弱。第四光照條件多變。海面場景的光照從正午強光到陰天散射光動態(tài)范圍極大。強光下水面反光可能過曝陰影區(qū)垃圾可能欠曝。這要求訓練時必須有充分的光照增強。針對這些特性我在訓練這個數(shù)據(jù)集時采用的策略是輸入分辨率不低于640優(yōu)先用1280做高分辨率微調(diào)數(shù)據(jù)增強中必須包含隨機亮度對比度調(diào)整、運動模糊模擬、以及隨機透視變換。這些后面會展開講。2.3 VOC與YOLO格式轉(zhuǎn)換的實操細節(jié)雖然數(shù)據(jù)集已經(jīng)提供了兩種格式但實際訓練中你很可能需要自己再做一次轉(zhuǎn)換比如調(diào)整類別映射、過濾特定樣本、或者做訓練集/驗證集重新劃分。這里把轉(zhuǎn)換腳本的核心邏輯和踩過的坑說清楚。VOC轉(zhuǎn)YOLO的核心公式x_center (xmin xmax) / 2.0 / image_width y_center (ymin ymax) / 2.0 / image_height width (xmax - xmin) / image_width height (ymax - ymin) / image_height看起來很簡單但有幾個坑坑一坐標越界。有些標注框的xmax可能等于image_width轉(zhuǎn)換后x_center width/2 1.0剛好在邊界上。YOLO訓練時如果做了隨機裁剪增強這個框可能被裁掉一部分導致寬高變成負數(shù)。建議轉(zhuǎn)換后做一次clamp把所有值限制在[0, 1]范圍內(nèi)并且過濾掉寬或高小于0.001的框。坑二圖像尺寸不一致。VOC格式的XML里雖然有size標簽記錄寬高但有些標注工具寫進去的尺寸和實際圖像尺寸不一致。必須以實際讀取到的圖像尺寸為準不要信XML里的size標簽。我吃過這個虧用XML里的尺寸做歸一化結(jié)果訓練時發(fā)現(xiàn)框全部偏移??尤悇e映射表。單類別看似簡單但YOLO要求類別從0開始編號。如果VOC里的類別名是“garbage”你需要建一個{garbage: 0}的映射表。如果后續(xù)要擴展多類別這個映射表要提前規(guī)劃好不然后面改起來很麻煩??铀挠柧毤炞C集劃分。不要隨機劃分海面垃圾數(shù)據(jù)集如果隨機劃分可能出現(xiàn)同一段視頻的連續(xù)幀被分到訓練集和驗證集兩邊導致驗證集精度虛高。正確做法是按拍攝架次或時間段劃分確保驗證集的圖像來自訓練集未覆蓋的場景。如果數(shù)據(jù)集沒有提供架次信息至少按圖像文件名前綴做分組劃分。3. 從零到一YOLO訓練完整實操流程3.1 環(huán)境搭建與數(shù)據(jù)準備我用的訓練環(huán)境是Ubuntu 20.04 CUDA 11.3 PyTorch 1.10 Ultralytics YOLOv5/v8。這個組合在V100和3090上都跑過穩(wěn)定性沒問題。如果你用Windows建議直接上WSL2原生Windows下的DataLoader多進程效率會打折扣。數(shù)據(jù)目錄結(jié)構(gòu)建議這樣組織dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yamldata.yaml的內(nèi)容path: /path/to/dataset train: images/train val: images/val test: images/test nc: 1 names: [garbage]這里有個細節(jié)images和labels的目錄結(jié)構(gòu)必須嚴格對應YOLO加載數(shù)據(jù)時是根據(jù)圖像路徑替換images為labels、替換擴展名為.txt來找標注文件的。如果目錄名不一致訓練時會報“找不到標簽”的錯誤。數(shù)據(jù)準備階段還要做一件事統(tǒng)計訓練集和驗證集的樣本量、目標數(shù)量分布。我一般會跑一個腳本輸出每個子集有多少張圖、多少個標注框、平均每張圖幾個目標。這個統(tǒng)計信息對后續(xù)判斷模型表現(xiàn)是否合理非常重要。比如驗證集mAP突然比訓練集低很多如果驗證集的目標密度和訓練集差異大那可能是數(shù)據(jù)劃分問題而不是過擬合。3.2 模型選型與參數(shù)配置YOLOv5和YOLOv8我都試過最終在這個數(shù)據(jù)集上我傾向于YOLOv8m作為baseline。原因有三第一YOLOv8的C2f結(jié)構(gòu)和解耦頭在小目標檢測上比v5的C3結(jié)構(gòu)有優(yōu)勢第二v8的Anchor-Free設計省去了調(diào)Anchor的麻煩對于海面垃圾這種形狀極不規(guī)則的類別更友好第三v8的訓練腳本更簡潔超參數(shù)默認值在垂直領域數(shù)據(jù)集上表現(xiàn)更穩(wěn)。模型配置的關鍵參數(shù)參數(shù)推薦值說明imgsz640基線/ 1280高精度1280能顯著提升小目標召回但顯存占用翻倍batch16640/ 81280根據(jù)顯存調(diào)整V100 32G可以跑batch32640epochs200-300垂直領域數(shù)據(jù)集需要更多輪次收斂lr00.01初始學習率配合cosine調(diào)度lrf0.01最終學習率系數(shù)warmup_epochs3預熱輪次防止初期梯度爆炸box7.5框回歸損失權重cls0.5分類損失權重單類別可以適當降低dfl1.5分布焦點損失權重v8特有這里重點說imgsz的選擇。640是YOLO系列的默認值速度快、顯存友好但對于無人機高空拍攝的小目標640分辨率下可能只有幾個像素模型根本學不到有效特征。我的做法是先用640跑一輪baseline看驗證集的小目標召回率。如果小目標面積小于32x32像素的召回低于0.4就切到1280重新訓。1280下小目標的像素面積是640下的4倍特征信息豐富得多。代價是訓練時間大約增加2.5倍顯存占用增加3倍左右。還有一個容易被忽略的參數(shù)是anchor。雖然YOLOv8是Anchor-Free但如果你用YOLOv5一定要用kmeans重新聚類這個數(shù)據(jù)集的標注框。海面垃圾的寬高比分布和COCO差異很大用默認anchor會導致正樣本匹配率低。我實測過重新聚類anchor后YOLOv5s的mAP0.5能提升3-5個百分點。3.3 數(shù)據(jù)增強策略的針對性設計數(shù)據(jù)增強是這個小項目里最值得花時間打磨的環(huán)節(jié)。通用增強策略翻轉(zhuǎn)、縮放、色彩抖動當然要用但針對海面垃圾場景我額外加了幾個“特效”。第一隨機透視變換。無人機拍攝角度不固定透視變換能模擬不同傾角下的目標形變。在Albumentations里用Perspectivescale參數(shù)設0.05-0.1概率0.3。注意透視變換后要檢查標注框是否還在圖像范圍內(nèi)超出邊界的框要裁剪或丟棄。第二運動模糊模擬。用MotionBlurblur_limit設3-7概率0.2。這個增強能顯著提升模型對模糊目標的魯棒性。但概率不要太高否則清晰樣本的檢測精度會下降。第三水面反光模擬。這個沒有現(xiàn)成的庫我的做法是用RandomBrightnessContrast配合RandomGamma再加上局部的高光增強。具體來說隨機選圖像中10%-20%的區(qū)域把這些區(qū)域的亮度提升30%-50%模擬陽光反射。這個增強對降低水面反光誤檢非常有效。第四Mosaic與MixUp。YOLOv8默認開啟Mosaic概率1.0最后10個epoch關閉。Mosaic對海面垃圾檢測的幫助很大因為它能合成出目標密度更高的訓練樣本緩解正負樣本不平衡。MixUp我建議概率設0.1-0.15太高會導致訓練不穩(wěn)定。第五隨機裁剪與縮放。這個要小心。海面垃圾數(shù)據(jù)集中很多圖像的目標集中在圖像中央?yún)^(qū)域隨機裁剪可能把目標裁掉。我的做法是用RandomSizedBBoxSafeCrop確保裁剪后至少保留一個完整標注框。實操心得數(shù)據(jù)增強不是越多越好。我試過同時開15種增強結(jié)果模型收斂極慢驗證集精度還不如只開5種核心增強。增強策略要圍繞數(shù)據(jù)集的真實變化維度來設計海面場景的核心變化是光照、視角、模糊那就重點增強這三個維度。3.4 訓練過程監(jiān)控與調(diào)參訓練啟動后不要只盯著loss看。我一般同時監(jiān)控這幾個指標train/box_loss、train/cls_loss、train/dfl_loss三個損失要同步下降。如果box_loss降但cls_loss不降說明模型在學定位但學不會分類可能是類別標簽有問題。metrics/mAP0.5和mAP0.5:0.95mAP0.5到0.8以上算及格0.85以上算不錯。mAP0.5:0.95如果只有mAP0.5的一半左右說明定位精度不夠需要檢查標注框質(zhì)量。val/box_loss和val/cls_loss如果train loss持續(xù)降但val loss開始升就是過擬合了。這時候要么加數(shù)據(jù)增強要么加正則化weight_decay調(diào)大要么早停。學習率曲線cosine調(diào)度下學習率應該平滑下降。如果學習率震蕩檢查warmup設置和batch size是否匹配。我在這個數(shù)據(jù)集上遇到過一個典型問題前50個epoch mAP漲得很快到0.75左右就卡住了再訓100個epoch也只漲到0.78。排查后發(fā)現(xiàn)兩個原因一是學習率衰減太慢后期學習率還是太大模型在最優(yōu)解附近震蕩二是數(shù)據(jù)增強中的Mosaic一直開著導致后期模型看到的都是合成圖對真實分布的擬合不夠。解決方案是把cosine調(diào)度的周期縮短到150個epoch并且在最后20個epoch關閉Mosaic和MixUp。調(diào)整后mAP0.5最終到了0.84。4. 常見問題排查與避坑指南4.1 訓練不收斂或mAP異常低這是最常見的問題原因可能有很多按以下順序排查第一步檢查數(shù)據(jù)加載是否正確。寫個腳本隨機抽幾張訓練圖把標注框畫出來確認框的位置和類別都對。我遇到過有人把images和labels的路徑配反了訓練時加載的全是空標簽模型當然學不到東西。第二步檢查類別數(shù)和類別名。data.yaml里的nc必須和實際類別數(shù)一致names的順序必須和標注文件里的class_id對應。單類別的話nc: 1names: [garbage]class_id必須是0。第三步檢查輸入歸一化。YOLO默認會把圖像像素值從0-255歸一化到0-1。如果你自己改了數(shù)據(jù)加載邏輯確認歸一化沒做錯。我見過有人把圖像歸一化到-1到1結(jié)果模型完全不收斂。第四步檢查學習率。學習率太大會導致loss震蕩不下降太小會導致收斂極慢。YOLOv8的默認lr00.01在大多數(shù)數(shù)據(jù)集上沒問題但如果你的batch size特別小比如小于8學習率要相應調(diào)小。第五步檢查預訓練權重。用COCO預訓練權重初始化能顯著加速收斂。如果從零開始訓前幾十個epoch mAP為0是正常的不要慌。4.2 小目標漏檢嚴重海面垃圾數(shù)據(jù)集中小目標占比很高漏檢是主要誤差來源。提升小目標召回的手段按性價比排序提高輸入分辨率640提到1280小目標召回通常能提升10-20個百分點。這是最直接有效的方法。增加P2特征層YOLOv8默認用P3-P5做檢測加一個P2層 stride4專門檢測小目標。代價是計算量增加推理速度下降。調(diào)整Anchor尺寸如果用YOLOv5把最小的Anchor縮小匹配更多小目標。切片推理訓練時用640推理時把大圖切成640x640的小塊分別檢測再合并。這個方法對小目標效果極好但推理耗時成倍增加。Copy-Paste增強把小目標復制粘貼到其他圖像上增加小目標樣本密度。這個增強對小目標檢測提升明顯但要注意粘貼位置不要遮擋其他目標。4.3 水面反光導致的誤檢水面反光誤檢是海面場景的特有難題。模型會把陽光反射的高亮區(qū)域當成垃圾因為兩者在淺層特征上都是高對比度的邊緣紋理。解決方案方案一在訓練數(shù)據(jù)中增加負樣本。收集一批沒有垃圾但有強烈水面反光的圖像作為背景負樣本加入訓練集。YOLO訓練時這些圖像沒有對應的標注文件或者標注文件為空模型會學會抑制這些區(qū)域的激活。方案二在數(shù)據(jù)增強中模擬反光。前面提到的局部亮度增強就是干這個的。讓模型在訓練階段就見過各種反光模式推理時就不容易上當。方案三后處理過濾。如果誤檢框集中在圖像的上半部分天空/遠海區(qū)域可以在后處理階段根據(jù)框的位置做過濾。但這個方案比較粗暴可能誤殺真實目標。方案四換用更強的 backbone。反光和垃圾的區(qū)別在高層語義特征上更明顯用更大的模型YOLOv8l或x能提升區(qū)分能力。但推理速度會下降需要權衡。4.4 常見問題速查表問題現(xiàn)象可能原因排查方法解決方案loss不下降學習率過大/過小打印學習率曲線調(diào)整lr0加warmupmAP0.5高但mAP0.5:0.95低定位精度不夠可視化預測框檢查標注質(zhì)量加box loss權重驗證集mAP遠低于訓練集過擬合對比train/val loss加數(shù)據(jù)增強加正則化早停小目標漏檢多輸入分辨率不夠統(tǒng)計小目標占比提高imgsz加P2層水面反光誤檢多負樣本不足可視化誤檢區(qū)域加負樣本加反光增強訓練速度慢batch太小/圖像太大看GPU利用率減小imgsz用混合精度推理結(jié)果框重疊NMS閾值不當調(diào)整NMS IoU閾值降低NMS IoU閾值到0.5-0.65. 模型評估與部署落地要點5.1 評估指標的正確解讀mAP不是唯一指標。在實際部署中我更關注召回率Recall和誤檢率False Positive Rate。海面垃圾巡檢場景下漏檢一個垃圾的代價遠大于誤檢一個反光區(qū)域——漏檢意味著垃圾繼續(xù)漂浮污染環(huán)境誤檢只是多派一次人工復核。所以我的評估策略是在保證召回率不低于0.85的前提下盡量壓低誤檢率。具體做法是調(diào)整推理時的置信度閾值。默認conf0.25我會降到0.15甚至0.1先把召回拉滿然后看誤檢情況。如果誤檢太多再逐步提高閾值找到平衡點。另外按目標尺寸分層評估也很重要。把驗證集的目標按面積分成小32x32、中32x32到96x96、大96x96三檔分別算AP。如果小目標AP明顯低于中大目標說明模型對小目標檢測能力不足需要針對性優(yōu)化。5.2 模型導出與推理優(yōu)化訓練完的PyTorch模型要部署到實際系統(tǒng)中通常需要導出成ONNX或TensorRT。YOLOv8的導出命令yolo export modelbest.pt formatonnx opset12 simplifyTrue yolo export modelbest.pt formatengine halfTrue device0導出ONNX時注意opset版本12兼容性最好。simplifyTrue會做圖優(yōu)化去掉冗余算子。導出TensorRT引擎時halfTrue開啟FP16推理速度能提升30%-50%精度損失通常在1個百分點以內(nèi)。推理優(yōu)化方面如果部署在邊緣設備如Jetson系列建議用TensorRT DLA加速。如果部署在服務器端ONNX Runtime CUDA Execution Provider就夠用了。不要直接用PyTorch模型做推理速度慢且顯存占用高。5.3 實際部署中的經(jīng)驗技巧技巧一多尺度推理融合。推理時把圖像縮放到多個尺度如640、960、1280分別檢測然后用NMS融合結(jié)果。這個方法能提升小目標召回但推理耗時成倍增加。適合對實時性要求不高的巡檢場景。技巧二時序濾波。無人機視頻是連續(xù)的相鄰幀的檢測結(jié)果可以做時序平滑。如果某一幀檢測到垃圾但前后幀都沒有大概率是誤檢可以過濾掉。這個后處理能顯著降低誤檢率。技巧三地理圍欄過濾。如果無人機有GPS信息可以把檢測框映射到地理坐標然后根據(jù)已知的陸地/海域邊界過濾掉陸地上的誤檢。海面垃圾檢測中岸邊建筑、船只、浮標都可能被誤檢地理圍欄能有效過濾這些。技巧四模型量化。如果部署設備算力有限可以對模型做INT8量化。YOLOv8支持PTQ訓練后量化用幾百張校準圖就能完成。量化后模型體積縮小4倍推理速度提升2-3倍精度損失通常在2-3個百分點。對于海面垃圾檢測這種對精度要求不是極端苛刻的場景INT8量化完全可用。最后分享一個小技巧在實際部署前一定要用真實場景的視頻流做一次端到端測試而不是只看驗證集的mAP。驗證集是靜態(tài)圖像視頻流有幀間相關性、有運動模糊、有編碼壓縮偽影這些都會影響實際檢測效果。我見過太多模型在驗證集上mAP 0.9一到視頻流上就各種漏檢誤檢。用視頻流測試能提前暴露這些問題給你留出優(yōu)化時間。