본문 바로가기

물리는 아닌 낙서장

Fourier 변환으로 주파수 영역에서 Deep Fake 판독하는 방법 소개

반응형

위 사진 중 3개는 Deep fake를 이용해서 만들어낸 사진이고, 1명은 진짜 모델이다. Source: Wang, S. Y., Wang, O., Zhang, R., Owens, A., & Efros , A. A. (2020). CNN-generated images are surprisingly easy to spot... for now. In  Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition  (Vol. 7).

  인공지능 알고리즘이 발달하면서, 이제는 정말 실제와 구분할 수 없는 가짜이미지가 생성되고 있다. 위 사진 속 인물들을 보라. 전부 실존 인물 아닌가? 하는 생각이 들 수 있다. 그러나 위 사진 중 단 한 사진을 빼놓고 전부 Deep-learning 기술을 이용해 만들어낸 '가짜' 사진이다. 어떤게 진짜 사진인지는 글 맨 마지막에서 알려드리도록 하겠다. 이런 Deep learning 기술을 이용해 만든 여러 가짜 미디어(사진, 음성, 영상 등)를 일컬어 'Deep fake'(딥페이크)라고 한다. 딥페이크 창작물은 크게 전체를 전부 생성하는 'Entire image generation' 과 얼굴만 바꿔치는 'Face swapping' (일반적으로 partial image generation, 부분적 이미지 생성)으로 나눠볼 수 있다. 

유명 외국 프로레슬링 방송에 우리나라 방송인 이수근씨와 강호동씨를 합성해 넣은 Deepfake 영상.  Source: https://m.ppomppu.co.kr/new/bbs_view.php?id=freeboard&no=7106019 (구글 이미지서치)

  위 영상은 프로레슬링 방송에 우리나라 방송인 이수근씨와 강호동씨를 합성한 익살스러운(?) face swapping 딥페이크 창작물이다. 이렇게 유쾌하고(?) 가벼운 용도로 사용되기도 하는 반면, 악의적 의도를 가지고 유명 정치인을 모사한다던가, 유명 연예인의 음란물이 제작되기도 하는 등 딥페이크 창작물에 대한 우려가 점점 커지고 있는 상황이다. 중요한 것은, 기술이 점점 발달하면서 정교한 딥페이크는 사람의 맨 눈으로는 쉽사리 진짜인지 가짜인지 판별하기 불가능해지고 있다는 것이다. 따라서 여러 연구소와 기업체 (우리나라에서는 삼성 SDS 등)에서는 딥페이크를 판별하기 위한 여러 기법을 만들고 있다. 딥페이크 검출방법으로는 크게 3가지 정도가 있다. 오늘 소개할 주파수 기반 탐지, 그리고 이미지 기반 탐지, 생리적 특징 탐지 등이 있다. 나머지 두 개도 기회가 되면 소개해보겠다. 

  

  주파수 기반 딥페이크 탐지 방법은 말 그대로 이미지를 주파수 영역에서 딥페이크만의 특정 아티팩트를 찾아내는 것이다. 그 이전에, 딥페이크를 만드는 방법을 잠깐 살펴보자. Deep fake 창작물을 만드는 여러가지 알고리즘이 있겠으나, 대표적으로 쉽고 빠르게, 어느정도 퀄리티가 보장된 딥페이크 영상을 만드는 방법은 바로 Generative Adversarial Networks (GAN)를 이용하는 방법이다. GAN은 워낙 유명해서, 많은 다른 사이트들에서 그 원리를 자세하게 설명하고 있다. 나는 아주 간단하게 원리만 짚고 넘어가려고 한다. 

GAN이 작동하는 원리를 나타낸 도식도. Generator가 Random Latent Code를 사용해 Fake sample을 만들어내면, 이를 Discriminator가 Real sample과 비교하여 Loss로 Feedback을 주고, 이를 통해 점점 더 진짜같은 Fake를 만들어낸다.

  GAN은 Generator와 Discrminator가 있는 것이 큰 특징이다. Generator가 Fake Sample들을 만들어내면, Discriminator가 Real Sample과 비교한 뒤에 둘의 차이를 Loss로 Generator에게 Feedback을 주고, 이 Loss값을 줄여나가는 방향으로 점점 더 나은, 더 진짜같은 Fake를 만들어내게 된다. 이 때 모델마다 차이는 있지만, 대부분의 GAN에서는 '업-스케일링' 과정이 들어가는 것으로 알고 있다. (이 방면의 전문가가 아니기 때문에 틀린 지식일 수 있다. 댓글로 알려주시면 감사하겠다.) 이 '업-스케일링' 과정이 들어간다는 것을 기억하자. 

  다시 우리의 본론으로 돌아와서, 주파수 기반 탐지 모델의 핵심 아이디어는 각각의 GAN 모델로 만들어낸 결과물이 주파수 영역에서 서로 다른 스펙트럼 패턴을 만들기 때문에, 이를 검출하면 딥페이크를 쉽게 찾아낼 뿐만 아니라, 어떤 GAN을 썼는지도 특정 가능하다는 것이다.  

여러 GAN 모델에서 만들어낸 Fake의 주파수 영역에서 나타나는 특정 artifact들. Source: Wang, S. Y., Wang, O., Zhang, R., Owens, A., Efros, A. A. (2020). CNN-generated images are surprisingly easy to spot... for now. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition(Vol. 7).

 

  그럼 구체적으로 어떻게 이미지 영역의 딥페이크 사진을 주파수 영역으로 가져올 수 있을까? 답은 바로 푸리에 변환이다. 내 지난 글에서도 몇 번 다루었지만 (Fourier filter씌워 이미지 재구성해보기, Fourier Filter ), 정작 푸리에 변환에 대해서는 기술한 적이 없는 것 같다. 푸리에 변환을 이해하려면, 푸리에 급수부터 짚고 넘어가야 한다. 푸리에 변환 역시 왠만한 자연대, 공대생들은 전부 공부하는 내용이고, 인터넷에 잘 정리된 훌륭한 게시글이 많기 때문에 간단하게 짚고 넘어간다. 

  푸리에 급수(Fourier series)는 시간에 대한 신호를 구성하는 주파수 성분으로 분해하는 수학적 기술이라고 정의된다. 

$$f(t) = \sum_{m=-\infty}^{\infty} F_m e^{im\omega_0 t}, \ \ \ \ F_m = \frac{1}{T} \int_{-T/2}^{T/2} dt f(t) e^{-im \omega_0 t} , \\ where \ \omega_0 = \frac{2\pi}{T}$$

  이 푸리에 급수는 유용하지만, 함수가 반드시 주기적이어야만 한다는 제약 조건이 따른다. 그래서 푸리에 급수의 주기를 무한대로 보내서 비주기 함수까지 커버할 수 있도록 한 테크닉이 바로 푸리에 변환(Fourier transformation) 이다. 

티스토리에서 수식 쓰기 힘들어서 파워포인트에서 작성해서 복붙합니다. 미안해요

  한편, 컴퓨터의 데이터는 0과 1로 구성된 이산신호다. 이 이산신호를 0에서 최대표현 가능 주파수까지 다양한 주파수의 정현파 성분으로 분해하는 기술을 이산 푸리에 변환(Discrete Fourier Transformation, DFT) 이라고 한다. 2차원 $M \times N$ 데이터에 대하여, 

  이 때 $X_k$ 는 각 주파수 마다 신호의 진폭(Amplitude)과 위상(Phase)정보를 담고 있다. 이 중 진폭정보를 사용하여 딥페이크를 판별해낸다. 참고로 위 DFT는 많이 느려서, Fast Fourier Transformation (FFT)와 같은 동등하지만 성능이 훨씬 좋은 여러 테크닉이 존재하고, 실제 논문들에서는 이러한 방식을 사용했다고 한다.  

 

  자, 이제 이론은 알았으니, 실제 딥페이크 탐지하는 과정을 조금 더 구체적으로 살펴보자. (*Fourier filter씌워 이미지 재구성해보기 게시글을 참조하면 아래 과정을 Google Colab.상에서 따라해볼 수 있다)순서는 아래와 같다. 

1. 사진을 회색조로 변환하고, 가우시안 블러(고주파 통과 필터)를 적용한다. 컴퓨터 비전처리에서 거의(?) 거치는 전처리 과정인데, 사진에 존재하는 필요하는 Noise 정보를 감소시키기 위함이다. 

사진을 회색조+블러로 전처리 한다. Source: Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.

2. 위 사진에 DFT를 하여 주파수 정보를 얻어준다. 

전처리한 사진을 푸리에변환하여 진폭과 위상정보를 얻었다. Source: Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.

위에서 얘기했듯이, 이 2D Amplitude spectrum에서 GAN이라면 특수한 격자무늬의 Artifact가 나타난다. 이러한 격자무늬를 통해 딥페이크를 감별해낼 수도 있지만, 잘 구별이 안되는 모델이라면 한 스텝 더 가서 판별하는 방법도 있다.

 

3. 2D Amplitude spectrum을 방위평균하여 1D Power spectrum을 구해준다.

Source: Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.

우리가 얻은 2D Amplitude spectrum은 스펙트럼의 정중앙을 기준으로, 가장자리로 나갈수록 고주파수 성분을 나타낸다. 이미지가 2D이기 때문에 이를 주파수별로 방위평균하여 1D Spectrum으로 변환해줄 수 있다. 

Source: Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.

이 1D Power Spectrum을 가지고도 Deepfake를 구별해낼 수 있는데, 이 딥페이크 사진은 고주파수 영역에서 진짜 사진과 명확하게 구분되는 유의미한 차이를 보여주었다.

Source: Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.

이렇게 하여 주파수 영역에서 딥페이크 이미지를 찾는 두 가지 방법을 알아보았다. 첫번째 방법은 푸리에 변환을 거친 뒤 나타나는 2D Amplitude specturm에서의 격자무늬 아티팩트를 체크하는 것. 두번째 방법은 1D Power spectrum으로 한번 더 변환한 뒤 나타나는 고주파수 영역에서의 차이를 찾아내는 것이다. 이런 방법에서 "격자무늬, 또는 구름모양 같은 특정 아티팩트는 왜 생기는거야?"라는 의문이 생길 수 있다. 격자무늬의 경우 정확하게는 알려지지 않았지만, 구름모양의 아티팩트는 아마도 GAN이 이미지를 만들어내면서 거치는 업샘플링 과정에서 발생하는 것 같다고 추측하고 있었다. 그리고 Face swap시에 경계부분이 부자연스러운데, 경계의 edge가 바로 고주파 성분이기 때문에 이는 1D Power spectrum에서 차이를 보일 수 밖에 없다.   

  내가 위 자료를 수업에서 발표하던 2020년만해도 GAN이 최신기술이었지만, 업샘플링을 쓰지 않는 새로운 알고리즘이 만들어졌을 수도 있다. 내가 알고 있는 GAN이 아닌 모델에는 Normalizing Flow, UAE, Diffusion model등이 있다. 특히 Diffusion model은 Noise에서 시작해서 Noise를 제거해나가며 이미지를 생성하는 흥미로운 모델이다. 그런 모델의 경우 위에서 설명한 방식으로는 걸리지 않을 수 있을 것 같다. 그래도 GAN이 아직까지는 가장 보편적인 것 같고, 쉽고 간단하고 빠르게 Deepfake를 구별해 볼 수 있다는 점에서 의미가 있는 시도들이라고 생각한다.

   오늘 소개한 방식 말고도 영상속에서 눈의 깜빡임, 피부 밑 혈관에서 혈류가 흐르는지, 그림자가 자연스러운지, Head pose가 자연스러운지 등을 이용한 이미지,생리적인 방법들도 존재한다. 그야말로 창과 방패의 대결이라고 볼 수 있다. 이 지식도 벌써 1년이 지난 지식이니, 더 기발하고 놀라운 탐지방법이 있을 수 있겠다. 딥페이크가 부분적으로 유실된 사진데이터를 복구하거나, 완전히 기발한 창작물을 만드는 용도로만 사용되고, 범죄적 목적으로 악용되지 않기를 기원하며 이만 글을 줄인다. 

 

아참! 맨 위 사진에서 진짜 모델은 2번이다.

 

참고문헌: 

1.Durall Lopez, R., Keuper, M., Pfreundt, F. J., & Keuper, J. Unmasking DeepFakes with simple Features.
2.Frank, J., Eisenhofer, T., Schönherr, L., Fischer, A., Kolossa, D., & Holz, T. (2020). Leveraging Frequency Analysis for Deep Fake Image Recognition. arXiv preprint arXiv:2003.08685.
3.Wang, S. Y., Wang, O., Zhang, R., Owens, A., & Efros, A. A. (2020). CNN-generated images are surprisingly easy to spot... for now. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (Vol. 7).
4.Zhang, X., Karaman, S., & Chang, S. F. (2019, December). Detecting and simulating artifacts in gan fake images. In 2019 IEEE International Workshop on Information Forensics and Security (WIFS) (pp. 1-6). IEEE.