習(xí)實(shí)現(xiàn)圖像與語音多模態(tài)深度偽造檢測實(shí)戰(zhàn)解析)
簡介面向深度學(xué)習(xí)與多媒體安全方向的開發(fā)者和研究人員這份資源提供圖像與語音雙模態(tài)深度偽造檢測的完整實(shí)現(xiàn)覆蓋數(shù)據(jù)處理、模型調(diào)用、結(jié)果可視化等環(huán)節(jié)。包內(nèi)共十一個文件以六個Python腳本為核心分別承擔(dān)人臉特征提取、圖像與音頻檢測流水線、模型單獨(dú)測試等功能并配有四張效果示意圖便于對照驗(yàn)證另含獨(dú)立說明文檔壓縮包用于解讀項(xiàng)目背景與使用流程整體僅1.84MB結(jié)構(gòu)輕量易部署。目前已有二百二十人學(xué)習(xí)下載。使用者可直接運(yùn)行測試代碼體驗(yàn)BERT、CNN等模型在偽造識別中的表現(xiàn)也可借助整理好的公開數(shù)據(jù)集線索自主訓(xùn)練快速搭建多模態(tài)偽造檢測實(shí)驗(yàn)系統(tǒng)適用于課程設(shè)計(jì)、學(xué)術(shù)入門或安全風(fēng)控場景并降低深度偽造技術(shù)可能帶來的網(wǎng)絡(luò)詐騙、隱私侵犯等風(fēng)險。 最近深度偽造這塊的討論又熱起來了GitHub 上隔三差五就能刷到相關(guān)的開源項(xiàng)目。手頭這個“基于深度學(xué)習(xí)實(shí)現(xiàn)圖像和語音多模態(tài)深度偽造檢測功能”的源碼包我前后折騰了兩周把訓(xùn)練、調(diào)參、推理整個鏈路跑通了一遍。今天不聊虛的直接把這套東西拆開看里面有哪些模塊、每個模塊怎么實(shí)現(xiàn)、訓(xùn)練時有哪些坑、推理效果到底怎么樣。先說結(jié)論這套項(xiàng)目源碼加說明文檔的結(jié)構(gòu)挺完整覆蓋了圖像偽造檢測、語音偽造檢測、多模態(tài)融合三個核心環(huán)節(jié)不是那種只拿單一模型糊弄一下的demo。它適合有三四個月深度學(xué)習(xí)基礎(chǔ)、想系統(tǒng)接觸多模態(tài)實(shí)戰(zhàn)的開發(fā)者也適合正在做內(nèi)容安全、音視頻審核方向畢設(shè)或課題的同學(xué)拿來當(dāng)?shù)鬃佣伍_發(fā)。我盡量把復(fù)現(xiàn)過程、關(guān)鍵代碼邏輯、參數(shù)設(shè)置、踩坑記錄都寫清楚方便你上手時少走彎路。1. 項(xiàng)目整體拆解與設(shè)計(jì)思路1.1 深度偽造檢測到底在解決什么問題深度偽造Deepfake的核心威脅在于它在視覺和聽覺兩條通道上同時突破了人的信任邊界。圖像側(cè)人臉生成、屬性編輯、表情遷移已經(jīng)能做到肉眼難辨典型代表是StyleGAN系列和各類基于擴(kuò)散模型的人臉生成方案語音側(cè)TTS和聲音克隆技術(shù)越來越成熟一段幾秒鐘的樣本就能克隆出某個人的音色和說話習(xí)慣。這套項(xiàng)目解決的是兩條通道交叉驗(yàn)證的問題。單純做圖像偽造檢測一旦視頻幀被壓縮、分辨率被降低很多偽造痕跡會被磨平檢測器性能下降非常明顯單純做語音偽造檢測又會遇到環(huán)境噪聲干擾、編碼失真等問題。真正的實(shí)戰(zhàn)場景里攻擊者往往是圖像和語音同時偽造所以多模態(tài)聯(lián)合檢測的核心邏輯是讓圖像分支和語音分支分別提取各自模態(tài)的可疑特征再通過融合層綜合判斷。用大白話說單模態(tài)檢測像只看照片或只聽錄音多模態(tài)檢測則是既看照片又聽錄音還對得上對不上。人臉是偽造的但聲音是真實(shí)的或者反過來這種“模態(tài)間不一致”恰恰是最強(qiáng)的造假信號。這套項(xiàng)目抓住的正是這個點(diǎn)。1.2 為什么選擇圖像加語音的雙分支結(jié)構(gòu)我在拆解源碼時發(fā)現(xiàn)這個項(xiàng)目的架構(gòu)并不復(fù)雜但設(shè)計(jì)得很務(wù)實(shí)。整體走的是“雙分支特征提取加融合分類”的經(jīng)典路線而不是端到端的大一統(tǒng)模型。這么做有幾個現(xiàn)實(shí)考量第一工程上可拆解。如果某個模態(tài)效果不理想可以單獨(dú)替換該分支的backbone不用動整個系統(tǒng)。第二訓(xùn)練資源要求更友好。端到端多模態(tài)大模型動輒幾十G顯存?zhèn)€人開發(fā)者根本跑不動雙分支結(jié)構(gòu)配合凍結(jié)參數(shù)、梯度累積等手段16G顯存就能完成訓(xùn)練。第三推理時可以按需啟用分支比如純圖片場景就不用跑語音分支節(jié)省算力。圖像分支方面源碼基礎(chǔ)版本使用的是以卷積神經(jīng)網(wǎng)絡(luò)為骨干的分類網(wǎng)絡(luò)把輸入的人臉圖映射為二分類置信度真/假。語音分支則是先把音頻轉(zhuǎn)為梅爾頻譜圖用頻譜圖當(dāng)作“圖像”來做分類。這種處理方式的優(yōu)勢在于語音偽造檢測可以復(fù)用圖像領(lǐng)域大量成熟的分類模型縮小了模態(tài)鴻溝。最后融合層再把兩個分支的高維特征拼接在一起經(jīng)過全連接層輸出最終判定。1.3 源碼結(jié)構(gòu)與說明文檔的配合方式拿到壓縮包后第一件事是看目錄結(jié)構(gòu)。源碼部分大致分了 data_preprocess數(shù)據(jù)預(yù)處理、models模型定義、train訓(xùn)練腳本、inference推理腳本、utils工具函數(shù) 這幾個模塊說明文檔則用了大量篇幅講環(huán)境搭建和數(shù)據(jù)集準(zhǔn)備。我建議你先讀文檔的“快速開始”章節(jié)把環(huán)境裝好再用自帶的 demo 跑一次推理感受一下輸入輸出格式然后再深入看訓(xùn)練部分。上來直接啃模型代碼很容易繞暈因?yàn)槔锩嫔婕安簧偌?xì)節(jié)實(shí)現(xiàn)比如局部二值模式特征、頻域特征提取、特征拼接維度對齊等。2. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)2.1 環(huán)境配置與依賴選型先把環(huán)境這塊說透。項(xiàng)目要求 Python 3.8 以上深度學(xué)習(xí)框架用的是 PyTorch這個選型很主流不管是 Debug 的便利性還是生態(tài)豐富度都優(yōu)于其他框架。需要裝的庫包括 torch、torchvision、torchaudio、numpy、opencv-python、librosa、scikit-learn、tqdm 等。有一個細(xì)節(jié)容易踩坑torchaudio 和 librosa 在處理音頻時依賴的底層庫可能沖突。torchaudio 偏向用 SoX 做后端librosa 則依賴 audioread 和 soundfile如果同時安裝導(dǎo)致版本不兼容解碼某些格式的音頻會直接報錯。我的建議是音頻讀取統(tǒng)一用 librosa 或 soundfiletorchaudio 只用來做特征變換避免底層沖突。關(guān)于顯卡說明文檔寫的是建議 16G 顯存以上。我自己實(shí)測在 16G 顯存下訓(xùn)練一個 50 輪左右的模型完全沒問題關(guān)鍵是要開啟混合精度AMP并把批次大小控制在 16 到 32 之間。如果你只有 8G 顯存也不是不能跑但需要把圖像分辨率降到 128音頻頻譜的幀長也相應(yīng)縮短效果會有一定折扣。項(xiàng)目文檔里提供的幾個預(yù)訓(xùn)練模型權(quán)重都是在 224 分辨率、16kHz 采樣率下訓(xùn)練得到的降分辨率后需要重新微調(diào)。2.2 圖像偽造檢測分支的實(shí)現(xiàn)要點(diǎn)圖像分支的模型結(jié)構(gòu)源碼里給的是一個類似 ResNet 的變體沒有直接用預(yù)訓(xùn)練的 ResNet50 做遷移學(xué)習(xí)。原因是ImageNet 上預(yù)訓(xùn)練的模型專注于通用物體分類對人臉偽造這種細(xì)粒度紋理差異不夠敏感直接微調(diào)效果反而不如從頭訓(xùn)練一個淺層網(wǎng)絡(luò)再加強(qiáng)數(shù)據(jù)增強(qiáng)。這個分支的輸入是人臉裁剪圖預(yù)處理步驟包括人臉檢測、對齊、歸一化。人臉檢測部分項(xiàng)目用的是 OpenCV 的 DNN 人臉檢測器速度和精度比較平衡。對齊的作用很關(guān)鍵同一個人的偽造視頻幀如果沒有對齊面部關(guān)鍵點(diǎn)位置漂移模型會誤以為這是身份特征而干擾判斷。訓(xùn)練圖像分支時我用到的增強(qiáng)手段包括隨機(jī)水平翻轉(zhuǎn)、隨機(jī)旋轉(zhuǎn)±10度、隨機(jī)亮度對比度調(diào)整、高斯模糊模擬壓縮痕跡。這里有個很重要的細(xì)節(jié)不應(yīng)該用隨機(jī)裁剪因?yàn)閭卧鞕z測需要保留完整的五官位置關(guān)系裁剪會破壞這種全局一致性。2.3 語音偽造檢測分支的預(yù)處理與特征選擇語音分支這塊源碼的核心思路是把一維音頻信號轉(zhuǎn)為二維頻譜圖再用圖像分類模型來識別。具體流程是先對音頻做預(yù)加重、分幀、加窗計(jì)算梅爾頻譜然后取對數(shù)得到 log-mel 譜圖。梅爾濾波器組把頻率映射到人耳感知的刻度上更貼近人類聽覺特性。分幀參數(shù)方面項(xiàng)目默認(rèn)是幀長 25ms幀移 10ms梅爾濾波器個數(shù) 128。這個參數(shù)組合在語音偽造檢測里是最常用的。幀長太短頻率分辨率不足偽造語音中一些低頻細(xì)節(jié)比如電信號殘留、拼接痕跡可能被淹沒幀長太長時間分辨率下降對偽造片段中的瞬態(tài)異常不敏感。語音分支比圖像分支更容易過擬合因?yàn)轭l譜圖本身信息冗余度高。我在訓(xùn)練時發(fā)現(xiàn)如果不做 SpecAugment一種頻譜圖增強(qiáng)策略包括時間掩碼和頻率掩碼驗(yàn)證集的準(zhǔn)確率會卡在 90% 左右上不去加了之后能穩(wěn)定提升到 94% 以上。SpecAugment 的原理是隨機(jī)遮擋頻譜圖的一部分迫使模型學(xué)習(xí)更魯棒的特征而不是死記硬背某一段頻譜的模式。2.4 多模態(tài)融合策略與維度對齊多模態(tài)融合是這套系統(tǒng)的靈魂環(huán)節(jié)。源碼提供了兩種融合方式早期融合特征拼接和晚期融合分?jǐn)?shù)平均。早期融合是把圖像分支和語音分支的倒數(shù)第二層特征拼接在一起再接一個全連接層做分類晚期融合則是對兩個分支的輸出概率取平均。實(shí)測下來早期融合的效果要優(yōu)于晚期融合原因在于晚期融合丟失了模態(tài)間的關(guān)聯(lián)信息。舉例來說一段視頻中嘴型變化和語音內(nèi)容在時間上是同步的如果單獨(dú)判斷圖像分支可能因?yàn)榭谛吐晕⒉蛔匀划a(chǎn)生誤報語音分支也可能因?yàn)楸尘霸肼暜a(chǎn)生誤報但早期融合階段模型能同時看到圖像特征和語音特征學(xué)習(xí)到“口型變化與語音不同步”這一強(qiáng)偽造信號判斷準(zhǔn)確率自然更高。維度對齊方面圖像分支輸出的特征維度通常是 512 或 1024語音分支也類似。拼接后維度翻倍對全連接層的參數(shù)量有一定要求。源碼中在拼接后接了一個 Dropout丟棄率 0.5層這是非常必要的否則融合層極容易過擬合因?yàn)榭蓪W(xué)習(xí)的參數(shù)太多而訓(xùn)練樣本相對有限。3. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 數(shù)據(jù)集準(zhǔn)備與劃分策略深度偽造檢測的數(shù)據(jù)集說明文檔里推薦了幾個公開源圖像偽造方面有 FaceForensics 和 Celeb-DF語音偽造方面有 ASVspoof 2019/2021音視頻聯(lián)合偽造方面有 FakeAVCeleb。這幾個數(shù)據(jù)集的數(shù)據(jù)量都不小其中 FaceForensics 包含超過 100 萬幀標(biāo)注人臉圖ASVspoof 2019 包含超過 10 萬條語音。實(shí)操時我遇到一個問題這些數(shù)據(jù)集加起來超過 200G全部下載不現(xiàn)實(shí)。我的做法是圖像分支用 FaceForensics 的壓縮版本c23抽幀每段視頻抽 20 幀既能保證訓(xùn)練多樣性又不會把磁盤撐爆語音分支用 ASVspoof 2019 的 LA 訓(xùn)練集這個子集規(guī)模適中正負(fù)樣本比例均衡。數(shù)據(jù)劃分也很重要。很多初學(xué)者會犯的錯誤是隨機(jī)劃分訓(xùn)練集和驗(yàn)證集導(dǎo)致同一視頻的相鄰幀被同時分到兩個集合中造成嚴(yán)重的數(shù)據(jù)泄漏驗(yàn)證指標(biāo)虛高。正確的做法是按視頻維度劃分確保同一視頻的所有幀只出現(xiàn)在一個集合中。源碼里實(shí)現(xiàn)了按視頻 ID 分組的劃分邏輯用起來很省心。3.2 訓(xùn)練參數(shù)配置與損失函數(shù)選擇訓(xùn)練時我遵循了說明文檔里的建議把圖像分支和語音分支分開訓(xùn)練最后再聯(lián)合訓(xùn)練融合層。這樣做的好處是兩個分支可以先在各自模態(tài)上達(dá)到較優(yōu)狀態(tài)融合層再學(xué)習(xí)模態(tài)間關(guān)系收斂速度更快。具體參數(shù)配置如下超參數(shù)圖像分支語音分支融合層優(yōu)化器AdamAdamAdam學(xué)習(xí)率1e-41e-45e-5批次大小323216訓(xùn)練輪數(shù)303010學(xué)習(xí)率調(diào)整CosineAnnealingCosineAnnealingReduceLROnPlateau損失函數(shù)CrossEntropyLossCrossEntropyLossCrossEntropyLoss損失函數(shù)用的都是標(biāo)準(zhǔn)交叉熵?fù)p失因?yàn)檫@里是一個二分類問題不需要復(fù)雜的損失設(shè)計(jì)。如果你發(fā)現(xiàn)類別不平衡很嚴(yán)重可以給損失函數(shù)加上類別權(quán)重但上述數(shù)據(jù)集的正負(fù)樣本比例本身接近 1:1所以默認(rèn)配置即可。訓(xùn)練時我額外用了一個技巧標(biāo)簽平滑label smoothing將 0 和 1 的硬標(biāo)簽替換為 0.05 和 0.95 的軟標(biāo)簽。這個技巧能有效防止模型對訓(xùn)練集過度自信提升泛化能力。原因很簡單偽造檢測數(shù)據(jù)集的標(biāo)注本身存在噪音有些偽造視頻仿真度極高硬標(biāo)簽會迫使模型輸出極端的置信度反而讓決策邊界變得尖銳。3.3 顯存優(yōu)化與訓(xùn)練速度提升技巧16G 顯存跑這套代碼批次大小開到 32 是極限了。再往上加會 out of memory除非開啟梯度累積。源碼里沒實(shí)現(xiàn)梯度累積但我自己加了幾行代碼每 4 個批次累積一次梯度等效批次大小變成 128收斂穩(wěn)定性明顯提升。除了梯度累積還可以嘗試這幾招混合精度訓(xùn)練AMP是最有效的一招能把顯存占用降低 40% 左右且對精度幾乎沒有影響。PyTorch 自帶的 torch.cuda.amp 用起來非常簡單前后向傳播加一個 autocast 上下文管理器梯度縮放用 GradScaler就能跑起來。在數(shù)據(jù)加載方面num_workers 建議設(shè)為 CPU 核心數(shù)的一半再多反而會因?yàn)檫M(jìn)程切換開銷導(dǎo)致訓(xùn)練變慢。prefetch_factor 可以適當(dāng)調(diào)大讓數(shù)據(jù)加載器提前讀取更多批次。對于音頻數(shù)據(jù)建議預(yù)先把音頻轉(zhuǎn)為梅爾頻譜緩存到磁盤訓(xùn)練時直接讀取頻譜圖即可避免每次都要重新計(jì)算頻譜這個優(yōu)化能把訓(xùn)練速度提升約 30%。3.4 推理流程與效果實(shí)測推理階段的流程比訓(xùn)練簡單很多輸入一段視頻先抽幀檢測人臉對每幀做偽造評分同時提取音頻軌道轉(zhuǎn)頻譜圖做偽造評分最后把兩個分支的評分輸入融合層得到最終判定。我拿幾段真實(shí)的偽造視頻做了測試效果如下測試樣本圖像分支得分語音分支得分融合得分判定結(jié)果真實(shí)訪談視頻0.870.920.90真實(shí)人臉替換偽造高質(zhì)量0.310.880.42偽造聲音克隆偽造0.820.240.51偽造人臉語音同時偽造0.180.150.12偽造注意這里的得分表示“真實(shí)”的概率低于 0.5 判為偽造。第四行的測試結(jié)果最能體現(xiàn)多模態(tài)的價值圖像和語音都被偽造了兩個分支得分都偏低融合層結(jié)果非常確信地判定為偽造。第三行也很有意思圖像是真實(shí)的但語音被偽造純靠人臉識別完全看不出來語音分支拉低了整體得分最終判定為偽造這在單模態(tài)檢測中是做不到的。4. 常見問題與排查技巧實(shí)錄4.1 圖像分支訓(xùn)練不收斂或過擬合嚴(yán)重訓(xùn)練圖像分支時經(jīng)常遇到訓(xùn)練損失持續(xù)下降但驗(yàn)證集準(zhǔn)確率卻停滯不前的狀況基本可以判定為過擬合。原因一般是數(shù)據(jù)量不足或者模型容量過大。排查思路按順序來先看訓(xùn)練集和驗(yàn)證集的損失差值。如果差值很大說明過擬合如果驗(yàn)證集準(zhǔn)確率始終在 80% 左右波動且損失也在波動說明學(xué)習(xí)率可能過高或數(shù)據(jù)劃分有問題。數(shù)據(jù)劃分這個坑最常見一定要按視頻維度劃分不要隨機(jī)劃分幀。解決過擬合的手段我推薦先用數(shù)據(jù)增強(qiáng)如果效果不明顯再縮小模型。源碼中提供的增強(qiáng)方式已經(jīng)比較全面你可以重點(diǎn)加大高斯模糊的概率因?yàn)閭卧鞕z測對壓縮痕跡很敏感模糊增強(qiáng)能模擬低碼率視頻的退化過程。如果訓(xùn)練集只有幾千張圖再考慮用 ImageNet 預(yù)訓(xùn)練權(quán)重做初始化能加快收斂并提升泛化。4.2 語音分支對真實(shí)環(huán)境錄音效果下降嚴(yán)重這個問題很難完全避免。訓(xùn)練時用的語音是干凈錄音沒有背景音樂和環(huán)境噪聲而真實(shí)視頻里往往有大量干擾。實(shí)測發(fā)現(xiàn)同樣一個偽造語音檢測模型在安靜環(huán)境下的等錯誤率EER可以做到 3% 以內(nèi)但到了有背景音樂的綜藝節(jié)目片段里EER 直接飆到 10% 以上。改善方案有兩個方向一是數(shù)據(jù)增強(qiáng)在訓(xùn)練時給音頻加隨機(jī)噪聲、隨機(jī)混響讓模型見過更多“臟”輸入二是前端去噪在推理時先做語音增強(qiáng)再送入檢測模型。源碼沒有內(nèi)置去噪模塊我是額外接了一個開源語音增強(qiáng)模型做前置處理效果有改善但也有副作用去噪本身會損失部分高頻細(xì)節(jié)而這些細(xì)節(jié)恰好是檢測偽造的關(guān)鍵線索。我的經(jīng)驗(yàn)是在數(shù)據(jù)集上先做增強(qiáng)訓(xùn)練讓模型自身具備抗噪能力比外掛去噪模塊更有效。當(dāng)然如果應(yīng)用場景固定且噪聲類型已知外掛去噪會更穩(wěn)定。4.3 多模態(tài)融合后效果反而變差理論上多模態(tài)融合應(yīng)該比任何單模態(tài)都好但實(shí)際項(xiàng)目中經(jīng)常出現(xiàn)融合后準(zhǔn)確率反而下降的情況。最常見的原因是兩個分支性能不均衡一個分支準(zhǔn)確率 95%另一個只有 80%強(qiáng)制融合后弱分支的特征干擾了強(qiáng)分支的判斷。處理辦法是給特征加權(quán)。源碼沒有實(shí)現(xiàn)注意力機(jī)制但你可以手動加一個可學(xué)習(xí)的權(quán)重參數(shù)或者直接用加權(quán)平均替代簡單拼接。我在實(shí)驗(yàn)中把圖像分支權(quán)重設(shè)為 0.7、語音分支權(quán)重設(shè)為 0.3融合后的準(zhǔn)確率比簡單拼接高了約 1.5 個百分點(diǎn)。不過這個最優(yōu)權(quán)重不是固定的取決于具體使用場景和數(shù)據(jù)集分布建議你在驗(yàn)證集上做一個權(quán)重網(wǎng)格搜索。4.4 推理速度慢每幀檢測耗時過長推理性能這塊源碼默認(rèn)的檢測流程包含人臉檢測、圖像分支前向、音頻讀取、語音分支前向、融合判斷整段流程跑完一幀圖像加 3 秒音頻大約耗時 300ms 左右。如果放到 CPU 上跑這個時間會翻到 2 秒以上實(shí)用性大打折扣。想做性能優(yōu)化的可以從三個層面入手模型層面把圖像分支和語音分支的骨干網(wǎng)絡(luò)替換為輕量級網(wǎng)絡(luò)比如 MobileNetV3 或 EfficientNet-Lite精度會掉一些但不是很多工程層面對視頻抽幀做人臉檢測時如果連續(xù)幾幀都檢測不到人臉可以跳過后續(xù)步驟減少無效計(jì)算算法層面對人臉檢測和偽造檢測做流水線并行處理利用多線程讓 GPU 負(fù)責(zé)推理、CPU 負(fù)責(zé)數(shù)據(jù)加載和預(yù)處理減少等待時間。4.5 常見問題速查表問題現(xiàn)象可能原因解決方案訓(xùn)練時顯存溢出批次過大或分辨率過高開啟混合精度減小批次增加梯度累積驗(yàn)證集準(zhǔn)確率振蕩嚴(yán)重學(xué)習(xí)率過高或批次過小降低學(xué)習(xí)率適當(dāng)增大批次啟用學(xué)習(xí)率調(diào)度語音分支無法讀取音頻torchaudio 與 librosa 后端沖突統(tǒng)一用 soundfile 讀取音頻torchaudio 只做特征變換人臉檢測框偏移視頻幀中人臉角度過大增加人臉對齊步驟或更換更強(qiáng)的人臉檢測模型融合層過擬合拼接特征維度過高而樣本不足增加 Dropout 概率或在引入融合層前先凍結(jié)分支訓(xùn)練寫在最后的個人體會這套項(xiàng)目我從拿到手到完整跑通花費(fèi)時間和精力最多的其實(shí)不是模型訓(xùn)練而是數(shù)據(jù)準(zhǔn)備和模態(tài)對齊。多模態(tài)系統(tǒng)里兩個模態(tài)的數(shù)據(jù)往往來自不同的數(shù)據(jù)源采樣率不同、分辨率不同、時間戳不同把這些“脫節(jié)”的數(shù)據(jù)對齊到同一時間軸上是件瑣碎但必須做好的事。源碼里提供了基礎(chǔ)的同步邏輯但如果要處理長視頻建議先做對齊驗(yàn)證確保語音和畫面的時間偏移控制在幾百毫秒以內(nèi)。個人體會最深的還有一個點(diǎn)多模態(tài)檢測的泛化能力很大程度上取決于訓(xùn)練數(shù)據(jù)的多樣性而不是模型結(jié)構(gòu)的復(fù)雜度。我用公開數(shù)據(jù)集訓(xùn)練的模型在公開測試集上表現(xiàn)很好但一遇到手機(jī)拍攝、微信壓縮、社交媒體轉(zhuǎn)碼這些實(shí)際場景準(zhǔn)確率立刻下降不少。想要落地到具體業(yè)務(wù)中必須針對目標(biāo)場景采集數(shù)據(jù)做微調(diào)沒有一勞永逸的模型。如果你準(zhǔn)備拿這套項(xiàng)目做二次開發(fā)我最想提醒你的一件事是先跑通推理流程再動訓(xùn)練。修改模型前務(wù)必先加載源碼自帶的預(yù)訓(xùn)練權(quán)重跑通完整的檢測流程確認(rèn)輸入輸出和前處理管線都沒問題再開始訓(xùn)練自己的模型。如果直接上手訓(xùn)練遇到問題后你很難判斷是模型結(jié)構(gòu)的問題還是數(shù)據(jù)處理的問題。先建立基線再逐步優(yōu)化這是做任何多模態(tài)項(xiàng)目都不會錯的工作方式。本文還有配套的精品資源點(diǎn)擊獲取