Redditプロジェクト観測: VeridisQuoがEfficientNet・FFT・DCTを組み合わせた説明可能なdeepfake検出器

今週のr/MachineLearningで100ポイントを超えたプロジェクト投稿のひとつがVeridisQuoだった。これはtwo-stream設計を軸にしたオープンソースのdeepfake detectorとして紹介されている。コミュニティ向けのショーケース投稿としては珍しく、model architecture、training data、hardware budget、そして改変領域をどう可視化するかまで比較的詳しく公開している点が目を引いた。

中心となる発想は、従来のspatial featuresとfrequency-domain cuesを組み合わせることにある。投稿者によれば、VeridisQuoはspatial branchでEfficientNet-B4 backboneを使い、各face cropから1792-dimensional representationを生成する。一方のfrequency moduleは、radial binningとHann windowを使ったFFT featuresと、8x8 blocksベースのDCT featuresを計算する。この2つの512-dimensional vectorsはMLPで1024-dimensional representationにfusionされ、その後spatial branchと連結されて2816-dimensional classifier inputになる。

外部から見てプロジェクトを評価しやすくしているのはexplainability設計だ。VeridisQuoはEfficientNet backbone上でGradCAM heatmapsを計算し、それを元のvideo framesへ再マッピングする。これにより、検出器が顔のどの領域を手掛かりに判断したのかを利用者が直接確認できる。投稿者は、モデルがblending boundariesやjawline周辺をよく強調すると述べており、これはcompressedまたはcompositedなdeepfake footageでよく見られるlocal artifactsと整合的だ。

Training setupもかなり具体的である。プロジェクトはFaceForensics++ (C23)を使い、Face2Face、FaceShifter、FaceSwap、NeuralTexturesを含む。Framesは1 FPSで抽出され、facesはYOLOv11nで検出され、最終的なtraining setはおよそ716K face imagesに達したという。Trainingはrented RTX 3090上で7 epochs、約4時間で実行され、AdamW、cosine annealing、CrossEntropyLossが使われた。投稿者の主張は、frequency branch単体ではspatial backboneを上回らないが、pixel-level artifactsが見えにくいhigher-quality fakesではfused modelがより効果を発揮するというものだ。

この投稿がRedditで支持された理由もそこにある。多くのdeepfakeデモは定性的な出力だけで終わるが、VeridisQuoは、圧縮video artifactsの一部はfrequency domainに存在し、それをspatial featuresと融合し、visual explanationsと組み合わせることで検出器が強くなるという読みやすいarchitectural hypothesisを提示している。GitHub repositoryとHugging Face demoが公開されているため、ほかの実務者もこのtradeoffが元のtraining setの外でも成り立つかを検証しやすい。

原文: Reddit post, VeridisQuo repository.