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를 계산한다. 이 두 개의 512-dimensional vector는 MLP를 통해 1024-dimensional representation으로 fusion되고, 이후 spatial branch와 결합돼 2816-dimensional classifier input을 구성한다.

외부에서 프로젝트를 평가하기 쉽게 만드는 지점은 explainability 설계다. VeridisQuo는 EfficientNet backbone 위에서 GradCAM heatmaps를 계산한 뒤 이를 원본 video frames로 다시 매핑한다. 덕분에 사용자는 detector가 얼굴의 어느 영역을 근거로 판단했는지 직접 확인할 수 있다. 작성자는 모델이 blending boundaries나 jawline 부근을 자주 강조한다고 설명하는데, 이는 compressed 혹은 composited deepfake footage에서 흔히 기대되는 local artifacts와도 잘 맞아떨어진다.

Training setup도 꽤 구체적이다. 프로젝트는 FaceForensics++ (C23)를 사용하며 Face2Face, FaceShifter, FaceSwap, NeuralTextures를 포함한다. Frames는 1 FPS로 추출했고, faces는 YOLOv11n으로 검출했으며, 최종 학습 세트는 약 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와 함께 제시할 때 detector가 더 강해진다는 읽기 쉬운 architectural hypothesis를 제시한다. GitHub repository와 Hugging Face demo가 공개돼 있어, 다른 실무자들도 이 tradeoff가 원래 training set 바깥에서도 유지되는지 직접 검증해볼 수 있다.

원문: Reddit post, VeridisQuo repository.