控數(shù)據(jù)集:異常行為檢測訓(xùn)練與部署實(shí)戰(zhàn))
前言做安防監(jiān)控算法這行的人應(yīng)該都體會過那種痛苦模型調(diào)了半天loss降不下去檢測效果卻一塌糊涂。回頭排查往往問題不是出在模型結(jié)構(gòu)而是出在數(shù)據(jù)集上。異常行為檢測這個方向更是重災(zāi)區(qū)——網(wǎng)上公開的數(shù)據(jù)集要么是實(shí)驗(yàn)室環(huán)境擺拍要么是攝像頭角度單一要么就是樣本量小到根本不夠訓(xùn)一個像樣的模型。所以我看到9100張YOLO安防監(jiān)控數(shù)據(jù)集這種項(xiàng)目時第一反應(yīng)不是數(shù)據(jù)又多了一個而是想認(rèn)真拆一拆這批數(shù)據(jù)到底覆蓋了什么、標(biāo)注質(zhì)量靠不靠譜、有沒有直接拿來訓(xùn)練的價值。這篇文章不打算寫成數(shù)據(jù)集宣傳稿而是從一個做檢測落地的工程師視角把異常行為檢測的整個鏈路捋一遍數(shù)據(jù)集長什么樣、標(biāo)簽體系怎么設(shè)計、YOLO訓(xùn)練時有哪些坑、推理部署時怎么控制誤報漏報。如果你正準(zhǔn)備入坑安防監(jiān)控異常行為識別或者已經(jīng)在YOLOv8/v11上跑過幾個模型但效果不理想這篇文章應(yīng)該能幫你省掉不少試錯時間。1. 異常行為檢測的核心思路與場景解析1.1 異常行為到底在檢測什么很多人一聽到異常行為檢測下意識會覺得這是個動作識別問題得用3D CNN或者Transformer處理視頻序列。但在真實(shí)安防場景里絕大多數(shù)異常事件用單幀目標(biāo)檢測就能覆蓋掉大半。打架、摔倒、聚集、闖入禁區(qū)、翻越圍欄這些行為在單幀圖像里都有非常明確的視覺特征人物姿態(tài)異常、人體重疊度高、出現(xiàn)在不該出現(xiàn)的區(qū)域、跨越了不該跨越的邊界線。這就是為什么YOLO類檢測器在安防領(lǐng)域依然占主導(dǎo)地位。它不需要理解視頻的時序邏輯只需要做到及時發(fā)現(xiàn)畫面里的危險信號。我們把異常行為拆成幾個可檢測的粒度個體級異常單個人表現(xiàn)出危險動作比如摔倒、倒地不動、爬行。交互級異常多個人之間發(fā)生沖突比如打架、推搡、聚集。區(qū)域級異常人出現(xiàn)在禁止區(qū)域或者跨越了隔離帶。遺留物異常無人看管的包裹、箱子在公共場所停留過久。把這四類拆清楚之后數(shù)據(jù)集該怎么設(shè)計其實(shí)也就清楚了。9100張圖聽著不少但如果只是籠統(tǒng)地標(biāo)一個異常那模型學(xué)到的其實(shí)是某種模糊的視覺模式換成新場景立馬失效。真正有效的方法是按行為類別分開標(biāo)注每一類都給足樣本量。1.2 數(shù)據(jù)集在異常行為檢測鏈路中的定位先潑一盆冷水9100張圖像對于做行為識別來說不算充裕但對于做目標(biāo)檢測來說完全夠用。關(guān)鍵在于你怎么用它。比如COCO數(shù)據(jù)集有33萬張圖但其中跟安防場景相關(guān)的類別其實(shí)很少。而9100張如果全部是監(jiān)控視角下的異常行為畫面信息密度反而高得多。數(shù)據(jù)驅(qū)動的檢測項(xiàng)目有個基本規(guī)律模型能學(xué)到什么取決于數(shù)據(jù)里反復(fù)出現(xiàn)什么。YOLO系列模型本身的特征提取能力很強(qiáng)真正決定上限的是訓(xùn)練數(shù)據(jù)的分布質(zhì)量。9100張圖如果來自多個不同場景、多個不同攝像頭角度、覆蓋一天中不同時段的光線條件那它的有效信息量可能超過3萬張單一場景的重復(fù)數(shù)據(jù)。我給這個數(shù)據(jù)集的定位是用目標(biāo)檢測的思路解決行為識別的問題。先檢測出異常行為的主體區(qū)域人或物再結(jié)合一些后續(xù)處理軌跡分析、區(qū)域判斷來形成完整的異常報警。這也是目前工業(yè)界最成熟的方案比端到端的視頻行為識別更可控、更容易落地。1.3 場景適配從模型到產(chǎn)品的最小閉環(huán)安防監(jiān)控項(xiàng)目檢驗(yàn)?zāi)P偷姆绞胶苤苯尤拥秸鎸?shí)場景里看誤報率和漏報率。9100張數(shù)據(jù)集能幫你完成訓(xùn)練階段的任務(wù)但模型上線前通常還需要做兩件事第一場景適配。監(jiān)控相機(jī)的視角通常比較高俯視角度大人體目標(biāo)尺寸小而且經(jīng)常有遮擋。如果你拿網(wǎng)絡(luò)公開的日常圖片訓(xùn)練出來的模型去跑監(jiān)控視頻會發(fā)現(xiàn)大量漏檢。好數(shù)據(jù)的標(biāo)準(zhǔn)之一就是視角接近真實(shí)安裝位置。第二指標(biāo)評估。光看mAP是不夠的要看你關(guān)心的異常類別在特定場景下的精確率和召回率。安防場景里誤報的代價很高——保安被狼來了太多次真正出事的時候就沒人信了。所以訓(xùn)練目標(biāo)函數(shù)、置信度閾值、NMS參數(shù)都要圍繞著你實(shí)際場景的漏報/誤報容忍度來調(diào)。2. 9100張數(shù)據(jù)集的構(gòu)成拆解與標(biāo)注質(zhì)量分析2.1 數(shù)據(jù)規(guī)模與行為類別的平衡性拿到一個數(shù)據(jù)集我第一件事是畫類別分布直方圖。9100張圖如果按照8個行為類別來標(biāo)注理想情況下每個類別1100多張。但真實(shí)情況往往不是這樣——某幾個類別容易采集比如人員聚集異常奔跑樣本就特別多而翻越圍欄高空拋物這類動作轉(zhuǎn)瞬即逝樣本就少得可憐。類別不平衡在異常行為檢測里是個硬傷。YOLO訓(xùn)練時占比較多的類別會主導(dǎo)anchor匹配和loss計算少數(shù)類容易被壓制。解決思路有幾個對樣本少的類別做離線增強(qiáng)比如水平翻轉(zhuǎn)、隨機(jī)光度擾動、小幅度旋轉(zhuǎn)。調(diào)整損失函數(shù)里的類別權(quán)重。YOLOv8/v11都支持通過cls參數(shù)配置類別權(quán)重。如果某類極端稀疏考慮遷移學(xué)習(xí)——用相似的公開數(shù)據(jù)做預(yù)訓(xùn)練再用自建數(shù)據(jù)微調(diào)。我習(xí)慣先把9100張數(shù)據(jù)隨機(jī)分成訓(xùn)練集、驗(yàn)證集、測試集比如8:1:1并且保證每個行為類別在三份數(shù)據(jù)里的比例基本一致。這個步驟雖然基礎(chǔ)但很多人圖省事直接用隨機(jī)分割結(jié)果驗(yàn)證集和訓(xùn)練集高度相似評估指標(biāo)虛高一上線就露餡。2.2 YOLO標(biāo)注格式的檢查要點(diǎn)YOLO格式的核心是歸一化的中心點(diǎn)坐標(biāo)加寬高class_id x_center y_center width height所有數(shù)值都是0到1之間的小數(shù)。拿到標(biāo)注文件后我通常會做幾個快速校驗(yàn)import os from pathlib import Path labels_dir Path(labels) err_count 0 for label_path in labels_dir.glob(*.txt): with open(label_path) as f: for line in f: parts line.strip().split() if len(parts) ! 5: err_count 1 continue _, xc, yc, w, h parts xc, yc, w, h map(float, (xc, yc, w, h)) if xc 0 or xc 1 or yc 0 or yc 1: err_count 1 continue if w 0 or h 0 or w 2 or h 2: err_count 1 continue print(f異常行數(shù): {err_count})這個腳本能幫你篩查出標(biāo)注邊界越界、坐標(biāo)為負(fù)、寬高為零這類低級錯誤。9100張圖的數(shù)據(jù)集不算大跑一遍全域校驗(yàn)也就幾分鐘的事但能避免訓(xùn)練中途程序崩潰或者模型學(xué)歪掉。另外要看檢查一下標(biāo)注框的質(zhì)量框有沒有過大或過小。異常行為檢測里標(biāo)注框通常是人物邊界框或者異常交互區(qū)域。如果標(biāo)注框把整個人連帶背景一起框住模型學(xué)到的特征就會被背景干擾如果框太小只框了頭部或者軀干模型又學(xué)不到完整的姿態(tài)信息。經(jīng)驗(yàn)做法是框貼合人物主體上下邊緣盡量貼近頭頂和腳底。2.3 數(shù)據(jù)清洗低質(zhì)量樣本處理策略9100張圖聽著很多但里面一定混著一些臟數(shù)據(jù)。安防監(jiān)控數(shù)據(jù)常見的臟類型我列在下面問題類型表現(xiàn)處理建議模糊幀運(yùn)動模糊、焦距不準(zhǔn)訓(xùn)練集移除或做降質(zhì)增強(qiáng)場景重復(fù)連續(xù)幀高度相似抽樣去重避免模型過擬合遮擋嚴(yán)重目標(biāo)被欄桿/車輛大面積遮擋保留少量提升魯棒性光照極端逆光、夜間噪點(diǎn)保留并配合數(shù)據(jù)增強(qiáng)標(biāo)注錯誤類別標(biāo)錯、框位置偏移排查修正必要時人工復(fù)核我對重復(fù)幀特別敏感。采集視頻抽幀時如果每秒抽幾十幀相鄰幀間的差異極小9100張圖里可能只有幾千個有效場景。這種情況訓(xùn)練出來的模型泛化性會很差。建議按幀間相似度做一次去重用感知哈?;蛘吆唵蔚赜嬎阆噜弾瑱z測框的IoU把過于相似的樣本去掉。2.4 類別體系設(shè)計建議如果你拿到的數(shù)據(jù)集只有籠統(tǒng)的異常標(biāo)簽建議自己動手重新清洗和細(xì)分。可以參考以下類別體系打架斗毆人員摔倒人群異常聚集違反區(qū)域闖入翻越圍欄遺留物檢測注意類別的可區(qū)分性。比如打架斗毆和人群聚集在視覺上很接近標(biāo)注時容易混淆訓(xùn)練時模型也會困惑。我的做法是把打架斗毆定義為有肢體接觸、動作幅度大的交互行為把人群聚集定義為超過5人靜止或緩慢移動的密集區(qū)域。邊界要寫清楚最好在數(shù)據(jù)集的標(biāo)注說明文檔里附上每個類別的判定規(guī)則和示例圖。3. 基于9100張數(shù)據(jù)集的YOLO訓(xùn)練實(shí)操3.1 模型選型從YOLOv8到Y(jié)OLO11針對安防監(jiān)控場景我會優(yōu)先考慮兩個版本YOLOv8n/s和YOLO11n/s。不是說越大越好監(jiān)控場景的推理設(shè)備通常是一臺工控機(jī)或者邊緣盒子算力有限而且要同時跑多路視頻流。在實(shí)時性和精度之間找平衡點(diǎn)小模型反而更實(shí)用。9100張圖的規(guī)模訓(xùn)YOLOv8n是完全夠的。模型參數(shù)量小不容易過擬合配合馬賽克增強(qiáng)能學(xué)到比較魯棒的特征。如果你的設(shè)備配置高或者不要求實(shí)時而是準(zhǔn)實(shí)時分析比如每500毫秒推理一次YOLO11m也可以試精度會有小幅提升。還有個經(jīng)驗(yàn)預(yù)訓(xùn)練權(quán)重一定要用。別從隨機(jī)初始化開始訓(xùn)YOLO官方提供的COCO預(yù)訓(xùn)練權(quán)重已經(jīng)讓模型學(xué)會了通用的目標(biāo)特征你只需要在它的基礎(chǔ)上微調(diào)。安防場景里的行人和COCO里的person類別高度相關(guān)遷移效果非常好。國內(nèi)下載官方權(quán)重如果速度慢可以用鏡像站或者從ultralytics/assets的Github Releases下載。3.2 數(shù)據(jù)集組織與YAML配置訓(xùn)練前先整理目錄結(jié)構(gòu)。YOLO標(biāo)準(zhǔn)的數(shù)據(jù)集目錄長這樣dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yaml注意圖片文件和標(biāo)簽文件必須同名同前綴只是擴(kuò)展名不同。比如圖片叫frame_000123.jpg標(biāo)簽就叫frame_000123.txt。這個匹配關(guān)系搞錯的話訓(xùn)練時會瘋狂報Image not found或者Label not found。data.yaml里要寫清楚路徑和類別數(shù)path: /data/anomaly/ train: images/train val: images/val names: 0: fight 1: fall 2: gather 3: intrusion 4: fence_climb等一下path字段不建議寫絕對路徑。如果你換了一臺機(jī)器、換了一個數(shù)據(jù)集目錄絕對路徑就失效了。建議用相對路徑讓訓(xùn)練腳本通過工作目錄來定位數(shù)據(jù)集。3.3 訓(xùn)練超參數(shù)設(shè)置與調(diào)整心得我在YOLOv8上訓(xùn)練安防異常行為檢測數(shù)據(jù)集時常用的一組參數(shù)長這樣yolo detect train \ modelyolov8n.pt \ datadata.yaml \ epochs100 \ imgsz640 \ batch16 \ lr00.01 \ lrf0.01 \ momentum0.937 \ weight_decay0.0005 \ warmup_epochs3.0 \ warmup_momentum0.8 \ box7.5 \ cls0.5 \ dfl1.5 \ augmentTrue \ mosaic1.0 \ close_mosaic10幾個參數(shù)背后的邏輯我解釋一下imgsz640YOLOv8默認(rèn)輸入640x640監(jiān)控畫面通常裁剪或縮放后輸入這個尺寸。目標(biāo)太小的話建議在訓(xùn)練時用imgsz960配合高分辨率推理代價是顯存翻倍、推理變慢。mosaic1.0馬賽克增強(qiáng)能夠利用四張圖拼接生成更豐富的上下文對提高小目標(biāo)檢測能力有幫助。但訓(xùn)練后期要關(guān)掉close_mosaic10表示最后10個epoch關(guān)閉馬賽克讓模型適應(yīng)真實(shí)的單圖分布。box7.5, cls0.5box損失權(quán)重高是因?yàn)榘卜缊鼍皩Χㄎ痪让舾?。如果框的位置偏了后續(xù)的軌跡分析和區(qū)域判斷都會出錯。epochs1009100張圖的話100個epoch完全足夠訓(xùn)練時間通常在幾個小時到十幾個小時之間取決于你用的顯卡。V100、A100、3090、4090這些顯卡都能勝任。3.4 訓(xùn)練過程中的監(jiān)控與診斷訓(xùn)練不是把命令丟進(jìn)去等結(jié)果就完了。我建議至少盯住四個指標(biāo)第一是訓(xùn)練集和驗(yàn)證集的loss曲線。如果train loss持續(xù)下降但val loss先降后升說明模型開始過擬合了。這時候可以提前停止或者加大數(shù)據(jù)增強(qiáng)強(qiáng)度。第二是precision和recall的平衡。異常行為檢測場景里recall低意味著漏報這是安防絕對不能接受的precision低意味著誤報會讓保安疲于奔命。我一般通過調(diào)整最終推理時的置信度閾值來找到一個雙方都能接受的平衡點(diǎn)。第三是每類的AP值。YOLO訓(xùn)練日志里會輸出每個類別的mAP50和mAP50-95。如果某個類別的AP明顯低于其他類別優(yōu)先去查訓(xùn)練數(shù)據(jù)里這個類別的樣本量和標(biāo)注一致性。第四是混淆矩陣。訓(xùn)練結(jié)束后的confusion_matrix.png能直觀展示哪些類別容易被互相混淆。比如fall和lie如果大量互相誤判說明標(biāo)注邊界有問題或者圖像特征本身太相似需要考慮合并類別或者增加細(xì)粒度標(biāo)注。3.5 數(shù)據(jù)增強(qiáng)策略的取舍YOLO默認(rèn)的馬賽克、隨機(jī)仿射變換、色彩空間擾動對安防場景基本夠用。但有幾點(diǎn)要特別注意不要做強(qiáng)翻轉(zhuǎn)。監(jiān)控場景中翻越圍欄這個動作左右翻轉(zhuǎn)后語義不變可以做但打架斗毆里的左右手動作翻轉(zhuǎn)后其實(shí)也沒關(guān)系。真正的問題是文字類、方向敏感的目標(biāo)會受影響。安防場景里問題不大但留著這個選項(xiàng)時需要多留意。裁剪增強(qiáng)要保守。監(jiān)控畫面中人物通常很小過度裁剪容易把目標(biāo)切掉。光照增強(qiáng)大膽開。監(jiān)控場景的夜間、逆光、黃昏光線變化很大HSV擾動范圍可以調(diào)大一些模擬不同時段的光照條件。我實(shí)測下來的結(jié)論是對于9100張規(guī)模的數(shù)據(jù)集mosaic增強(qiáng)帶來的收益非常明顯能有效緩解樣本量不足的問題。但要注意mosaic拼接后畫面比例和真實(shí)場景差異較大所以前面才說要在最后10個epoch關(guān)掉。4. 模型部署與推理加速實(shí)戰(zhàn)4.1 導(dǎo)出與轉(zhuǎn)換ONNX和TensorRT訓(xùn)練完模型后第一步是驗(yàn)證它在實(shí)際推理框架里的表現(xiàn)。YOLO官方的export功能非常方便yolo export modelruns/train/exp/weights/best.pt formatonnx opset12如果目標(biāo)設(shè)備是NVIDIA GPU建議進(jìn)一步轉(zhuǎn)成TensorRT引擎。TensorRT的FP16推理比ONNX Runtime的FP32通常能快一倍以上而且占用顯存更少在邊緣設(shè)備上顯著降低延遲yolo export modelbest.pt formatengine halfTrue device0我在之前一個項(xiàng)目中用TensorRT FP16部署了YOLOv8s模型輸入尺寸640x640在Jetson Orin NX上能達(dá)到約45 FPS的推理速度。對比ONNX Runtime的FP32那個環(huán)境只有大約28 FPS。對于16路攝像頭并發(fā)流場景單幀45 FPS意味著你可以在每路視頻里以很高的時間分辨率做檢測漏掉短暫時機(jī)事件的概率大幅下降。4.2 推理時的預(yù)處理與后處理注意事項(xiàng)推理階段有兩個容易被忽視的細(xì)節(jié)第一輸入圖像的變換要和訓(xùn)練時保持一致。如果你訓(xùn)練時用了imgsz640并在訓(xùn)練流水線里縮放了圖像推理時也要先做letterbox等比例縮放加灰邊填充保證輸入尺寸匹配。很多人直接用OpenCV的resize硬拉結(jié)果目標(biāo)變形檢測精度驟降。第二NMS參數(shù)需要按場景重新標(biāo)定。YOLO默認(rèn)的conf_thres0.25和iou_thres0.45在通用場景下表現(xiàn)尚可但安防場景往往需要更低的置信度閾值來保證召回率。我習(xí)慣的做法是先跑一段真實(shí)場景的離線視頻用預(yù)測框和真實(shí)風(fēng)險事件做對比畫出PR曲線然后選擇一個精確率可以接受比如70%以上且召回率達(dá)到目標(biāo)比如90%以上的置信度閾值。4.3 誤報控制從單幀檢測到短時確認(rèn)單幀檢測模型在安防場景里最大的問題是閃爍——同一事件這一幀檢測到下一幀沒檢測到再下一幀又出現(xiàn)了。這種情況如果直接觸發(fā)報警體驗(yàn)會非常差。我的解決方案是做時間維度的滑動窗口確認(rèn)當(dāng)某一幀檢測到異常行為時不立即報警而是在一個短時間窗口比如1到3秒內(nèi)持續(xù)跟蹤同類檢測結(jié)果。如果連續(xù)幾個幀有間隔也可以都檢測到該行為再觸發(fā)報警。中間任何一幀未檢測到就重置計數(shù)。這種策略能顯著減少偶發(fā)誤報。9100張靜態(tài)圖訓(xùn)練出來的模型天然對時間上下文不敏感部署時配合滑動窗口邏輯才能彌補(bǔ)這個短板。另外還可以利用檢測框的動作軌跡做二次過濾。比如摔倒的檢測結(jié)果如果伴隨人物中心坐標(biāo)的急劇下降則判定為真實(shí)摔倒如果檢測框長時間靜止不動結(jié)合倒地類別做聯(lián)合判斷。這就是我在前面提到的鏈路式方案目標(biāo)檢測提供局部證據(jù)時間序列分析和規(guī)則邏輯負(fù)責(zé)全局決策。4.4 硬件選型與多路并發(fā)部署上先算一筆賬假設(shè)你要跑16路1080p視頻每路每秒分析2幀相當(dāng)于抽幀分析總推理量是32幀/秒。以YOLOv8s在Jetson Orin NX上45 FPS的能力一臺設(shè)備就能撐住。但注意實(shí)際項(xiàng)目中還需要考慮解碼開銷、前后處理、日志存儲建議留出30%的算力冗余。如果要求每路全覆蓋不掉幀也就是16路x25 FPS 400 FPS級別的推理需求那就得上服務(wù)器GPU了。一塊RTX 4090跑YOLOv8s約能到200-300 FPSTensorRT FP16建議配兩塊或者直接用一塊A100。工程上的另一種常見做法是前端攝像頭做移動偵測檢測到動靜時才傳幀到后端檢測服務(wù)這樣能把平均推理負(fù)載降到極低的水平。5. 踩坑實(shí)錄與常見問題排查5.1 訓(xùn)練不收斂或loss波動大癥狀train loss在高位震蕩val loss不下降。排查步驟依次來先看數(shù)據(jù)集標(biāo)注是不是有明顯錯誤例如框內(nèi)沒有目標(biāo)、錯標(biāo)類別再看學(xué)習(xí)率是不是偏高最后看batch size是不是太小導(dǎo)致梯度噪聲太大。9100張圖的數(shù)據(jù)量下學(xué)習(xí)率lr00.01搭配batch16是相對安全的起點(diǎn)。如果用了batch4而lr沒降很可能遇到這個問題。還有一個很容易忽略的原因標(biāo)簽文件格式不符合YOLO要求。比如有人從CVAT導(dǎo)出時格式?jīng)]選對坐標(biāo)還是像素值而不是歸一化值。訓(xùn)練時程序不會直接報錯但loss的表現(xiàn)會非常怪異。5.2 模型在真實(shí)場景里檢出率大幅下降這種訓(xùn)練集猛如虎上線原地杵的情況90%是數(shù)據(jù)分布不一致造成的。排查方向攝像頭視角不同。訓(xùn)練數(shù)據(jù)如果是平視視角換成俯視視角后目標(biāo)外觀差異巨大。圖像分辨率和編碼方式不同。監(jiān)控攝像頭的視頻壓縮率很高容易出現(xiàn)模糊和馬賽克而數(shù)據(jù)集里的圖片通常是清晰的。時間分布偏置。數(shù)據(jù)集如果全是白天的畫面模型到了晚上就罷工。解決方案就一個核心思路用貼近目標(biāo)場景的數(shù)據(jù)做微調(diào)。拿9100張數(shù)據(jù)集做預(yù)訓(xùn)練階段再部署前采集目標(biāo)場景的一段視頻一兩千幀就夠做增量訓(xùn)練或微調(diào)。這個流程我用過很多次效果在絕大多數(shù)情況下都遠(yuǎn)遠(yuǎn)好于直接拿公開數(shù)據(jù)集訓(xùn)練后扔上線。5.3 帶時序特征的異常類別漏報率高比如翻越圍欄在單幀畫面里可能只是一個人出現(xiàn)在欄桿附近姿態(tài)特征并不明顯。對于這類問題單幀檢測器確實(shí)力不從心。一種補(bǔ)救方案是給檢測模型增加上下文幀輸入比如用兩個幀當(dāng)前幀0.5秒前幀做雙流檢測或者直接用輕量級時序模型例如LSTM或簡單的1D卷積對檢測結(jié)果序列建模。但這里要強(qiáng)調(diào)時序模型對數(shù)據(jù)集規(guī)模的要求更高9100張靜態(tài)圖并不足以支撐這類模型需要增加視頻序列樣本。如果啟動階段沒有大量時序數(shù)據(jù)先用規(guī)則來補(bǔ)償往往更現(xiàn)實(shí)——例如檢測到人員出現(xiàn)在圍欄相鄰區(qū)域后再輔以跨線檢測實(shí)時軌跡點(diǎn)與圍欄線段的距離計算來共同決策。5.4 常見問題的快速速查表下面整理了一些我在安防異常檢測項(xiàng)目里遇到的典型問題以及對應(yīng)的處理思路現(xiàn)象可能原因處理建議訓(xùn)練mAP很高但實(shí)拍無效數(shù)據(jù)分布不一致采集目標(biāo)場景數(shù)據(jù)微調(diào)白天效果好夜間差訓(xùn)練集光照分布單一擴(kuò)充夜間數(shù)據(jù)HSV增強(qiáng)摔倒類召回率低目標(biāo)尺度小、遮擋多提高輸入分辨率增強(qiáng)小目標(biāo)樣本誤報集中在固定區(qū)域場景背景干擾如燈箱、圖案增加該場景的負(fù)樣本模型在視頻里閃爍單幀檢測不穩(wěn)定加時間窗口確認(rèn)邏輯GPU顯存不足batch/尺寸設(shè)置過大降低batch或imgz開啟AMP混合精度6. 數(shù)據(jù)集的后續(xù)擴(kuò)展與進(jìn)階思路6.1 從靜態(tài)檢測到時序識別的進(jìn)化路徑9100張數(shù)據(jù)集是你啟動項(xiàng)目的重要起點(diǎn)但坦白講想要把異常行為檢測做得更進(jìn)一步必須考慮時序信息。單幀檢測永遠(yuǎn)看不到過程而很多異常行為恰恰是過程性的定義——摔倒是一個由站立到倒地的動作變化打架是雙方距離不斷縮小的交互過程。推薦的路線是先跑通單幀檢測再逐步加入時序模塊??梢杂肶OLO的檢測結(jié)果序列作為輸入特征訓(xùn)練一個輕量級的時序分類頭。這種方案的好處是兩階段解耦目標(biāo)檢測階段可以繼續(xù)復(fù)用9100張數(shù)據(jù)集的力量時序階段只需要少量的視頻片段標(biāo)注即可啟動工程上門檻比端到端視頻行為識別低很多。6.2 多模態(tài)與多維度融合的探索方向安防場景的異常行為檢測已經(jīng)開始從純視覺走向多模態(tài)融合。比如音頻信息在打架斗毆檢測中很有價值——呼救聲、砸擊聲都是強(qiáng)烈的異常信號。還有紅外熱成像在夜間場景下可以彌補(bǔ)可見光視頻的不足。如果你拿到了9100張YOLO安防監(jiān)控數(shù)據(jù)集這類資源不要只把它當(dāng)作訓(xùn)練材料可以順帶梳理出它的元信息場景類別、光照條件、視角類型、目標(biāo)密集程度等做成一個多標(biāo)簽的任務(wù)體系。這樣后續(xù)做領(lǐng)域自適應(yīng)、場景聯(lián)邦學(xué)習(xí)、或模型泛化性評測時這批數(shù)據(jù)的價值會被指數(shù)級放大。6.3 大模型時代的安防異常檢測最近YOLO和Transformer結(jié)合的方向討論很多。確實(shí)有一些工作嘗試用注意力機(jī)制替代傳統(tǒng)neck結(jié)構(gòu)也在小目標(biāo)檢測上取得了進(jìn)展。但我的態(tài)度比較務(wù)實(shí)9100張數(shù)據(jù)集規(guī)模撐不起復(fù)雜的Transformer模型強(qiáng)行上大模型只會過擬合。更值得關(guān)注的方向是基礎(chǔ)模型輔助標(biāo)注。拿通用的大模型比如檢測類基礎(chǔ)模型或視覺語言模型預(yù)測出候選目標(biāo)框再人工修正標(biāo)注效率能提升很多。如果你未來想把數(shù)據(jù)集擴(kuò)到3萬至5萬張這會是一個性價比極高的路徑。寫在最后的一點(diǎn)經(jīng)驗(yàn)說實(shí)話9100張YOLO安防監(jiān)控數(shù)據(jù)集這個量級的項(xiàng)目難度不在于訓(xùn)練本身而在于你對自己場景的剖析有多透徹。我在實(shí)際項(xiàng)目中踩過幾次坑后最大的體會是先用一兩百張圖做快速消融實(shí)驗(yàn)驗(yàn)證數(shù)據(jù)標(biāo)注質(zhì)量和訓(xùn)練流程沒問題再全量投入上線前不要貪心用高置信度閾值寧可多一點(diǎn)誤報也先把漏報壓下去后續(xù)再逐步調(diào)優(yōu)。異常行為檢測是一個不要求每幀都準(zhǔn)但絕對不能漏掉關(guān)鍵時刻的領(lǐng)域。數(shù)據(jù)集的迭代永遠(yuǎn)是第一步也是最值得花時間打磨的一步。