[논문] Exposing DeepFake Videos By Detecting Face Warping Artifacts
저자 : Yuezun Li, Siwei Lyu
출처 : Computer Science Department University at Albany, State University of New York, USA
링크 : https://arxiv.org/abs/1811.00656
※ 발 번역 주의. 내가 이해하려고 논문을 번역하고 주요 부분만 정리해놓은 것이므로 정확하지 않을 수 있다. ※
1. 서론 Introduction
모바일 카메라 기술의 고도화와 소셜 미디어와 미디어 공유 포털의 도달 범위가 점점 더 넓어짐에 따라 디지털 비디오의 제작과 전파를 그 어느 때보다 편리하게 되었다. 최근까지 정교한 편집 도구 부족, 도메인 전문성에 대한 높은 수요, 복잡하고 시간이 많이 소요되는 과정 등으로 인해 가짜 동영상의 수와 사실적인 정도가 제한되었었다. 그러나 대량의 훈련 데이터와 고투과 컴퓨팅 능력에 대한 접근성 덕분에 최근 몇 년 동안 비디오의 제작과 조작 시간이 크게 줄었지만, 수동 편집 단계의 필요성을 없애는 기계 학습과 컴퓨터 비전 기술들 또한 많은 영향을 미쳤다.
특히 최근 딥페이크라고 알려진 AI 기반 가짜 영상 생성 방식의 새로운 방식이 주목받고 있다. 특정 개인의 영상('target')을 입력하는 것으로, 대상의 얼굴이 다른 개인의 얼굴('source')로 대체된 다른 영상을 출력한다. DeepFake의 근간은 얼굴 영상에서 훈련된 깊은 신경망으로, 자동으로 소스의 얼굴 표정을 대상에 매핑한다. 적절한 후처리를 거치면 더 높은 수준의 현실적인 영상을 만들어 낼 수 있다.
본 논문에서는 딥페이크 영상과 실제 영상을 효과적으로 구분할 수 있는 새로운 딥러닝 기반 방법을 설명한다. 우리의 방법은 딥페이크 영상의 속성에 기반을 두고 있다 : 딥페이크 알고리즘은 연산 자원과 생산 시간의 한계로 인해 고정된 크기의 얼굴 영상만 합성할 수 있으며, 출처 얼굴 구성과 일치하도록 아핀(affine, 수학 용어) 뒤틀림을 거쳐야 한다. 이 뒤틀림 현상은 뒤틀린 얼굴 영역과 주변 배경 사이의 해상도 불일치로 인해 뚜렷한 인위적인 증거(artifacts)를 남긴다.
우리의 방법은 생성된 얼굴 부위와 주변 부위를 전용 Convolution Neural Network(CNN) 모델과 비교함으로써 그러한 인위적인 증거(artifacts)를 탐지한다. CNN 모델을 훈련시키기 위해 우리는 아핀(affine) 얼굴 뒤틀림에서 해상도 불일치를 시뮬레이션함으로써 과정을 단순화한다. 특히, 우리는 먼저 얼굴을 감지한 다음 랜드마크(특징)를 추출하여 얼굴을 표준 구성에 맞춰 정렬하기 위해 변환 매트릭스을 계산 한다.정렬된 얼굴에 가우시안 블러링을 적용하고, 이 블러링은 추정된 변환 행렬의 매트릭스을 사용 하여 아핀(affine) 뒤틀림을 겪으면서 다시 원본 영상으로 돌아간다. 더 다양한 해상도의 아핀(affine)으로 뒤틀려진 얼굴 사례들을 시뮬레이션하기 위해 우리는 얼굴을 여러 척도로 정렬하여 데이터 다양성을 높였다. (그림2 참조) [1, 10]에서 negative 데이터로 가짜 영상을 생성하도록 딥페이크 모델을 학습시키는 방법은 시간이 오래 걸리고 많은 자원을 필요로 한다. (NVIDIA GTX에서는 약 72시간) 그에 비해 우리의 방법은 단순한 영상 처리 작업을 통해서만 negative 데이터를 생성하므로 많은 시간과 컴퓨팅 자원을 절약할 수 있다. 게다가 다른 방법들은 딥페이크 영상의 구분에 있어 over-fitting 현상이 발생할 수도 있다. 인위적인 증거들은 다양한 출처의 딥페이크 영상들에 일반적으로 적용될 수 있으므로 우리의 방법은 더욱 견고하다. 인터넷에서 수집한 실제 얼굴 영상을 바탕으로 negative 데이터를 생성하여 4개의 CNN 모델들을 학습시킨다. : VGG16 [31], ResNet50, ResNet101 and ResNet152[11].
3. 방안 Methods
우리는 딥페이크 생성 파이프라인에서 나온 얼굴 뒤틀림 artifact를 이용하여 합성된 영상을 탐지한다. 현재 딥페이크 알고리즘은 효율적인 러닝타임을 위해 고정된 크기의 합성된 얼굴 이미지를 생성한다. 이 얼굴들은 교체할 대상의 얼굴 포즈와 일치하도록 아핀(affine) 변환(예: 스케일링, 회전 및 셰어링)을 거친다(그림 1 (g) – (h) 참조). 이처럼 원본 이미지/영상 프레임의 얼굴 영역과 주변 영역은 artifact를 표시하며, 후속 압축 단계 이후 이러한 아핀 변환으로 인한 해상도 불일치는 최종 이미지 혹은 영상 프레임을 생성하는 과정으로 이어진다. 따라서 탐지된 얼굴 영역과 그 주변 영역에서 이러한 aritfact의 존재를 탐지하기 위해 우리는 CNN모델을 사용할 것을 제안한다.
그림 1. 딥페이크 생성 파이프라인 개요
(a) 소스(‘source’)의 이미지 (b) 녹색 상자는 검출된 얼굴 영역이다. (c) 적색 지점은 얼굴 특징(landmark)이다. (d) 변환 매트릭스는 (e)에서 정규화된 영역으로 얼굴 영역을 뒤틀도록 계산한다. (f). (g) 신경망에서 합성된 이미지 (h) 동일한 변환 매트릭스를 사용하여 합성된 얼굴이 뒤틀려진다. (i) 합성 이미지에 적용된 경계를 완화하는 과정을 포함하는 후처리 작업 (g) 최종 합성 이미지
그림2. negative 데이터 생성 개요
(a)는 원본 사진이다
(b)는 다른 비율로 정렬된 얼굴이다. 우리는 (b)에서 얼굴의 비율을 임의로 선택하고 가우시안 블러를 (c)처럼 적용한다. 그럼 (d)와 같이 얼굴이 아핀에 의해 뒤틀린다.
그림3. negative한 예제의 얼굴 모양 확대 예시
(a)는 정렬되고 가우시안 블러가 적용이 된 얼굴이며, 그 다음 (b)와 같이 아핀 뒤틀림을 겪는다.
(c,d)는 얼굴 영역의 모양을 다듬기 위한 후처리로서 (c)는 뒤틀린 얼굴 전체가 유지되고 (d)는 다각형 내부의 얼굴 영역만 유지된다는 것을 의미한다.
CNN모델을 학습시키는 것은 인터넷에서 수집한 얼굴 이미지를 바탕으로 한다. 특히 우리는 positive한 예시로서 24,442 jpeg 얼굴 이미지들을 수집했다. Negaitve 예시는 [1]과 같이 딥페이크 알고리즘을 적용하면 생성될 수 있지만, 딥페이크 알고리즘을 학습시키고 실행하려면 많은 시간과 재원이 필요하다. 한편 딥페이크 생성 파이프라인(그림1)에서의 아핀을 이용한 얼굴 뒤틀림 단계에 의해 나타나는 artifacts를 탐지하는 것이 목표이므로, 우리는 아핀 얼굴 뒤틀림 단계(그림 1)를 직접 시뮬레이션하여 negative 예시 생성 절차를 단순화한다.
구체적으로, 그림2에서 나타낸 것처럼, 우리는 CNN 모델을 학습시키기 위한 negative한 예시들을 생성하기 위해 다음의 단계를 밟는다.
1. 우리는 원본 이미지들에 있는 얼굴들을 탐지하고 dlib[14] 소프트웨어 패키지를 사용하여 얼굴 영역을 추출한다.
2. 우리는 여러 비율로 얼굴을 정렬하여 무작위로 하나의 비율을 고르고, 그 비율은 kernel size(5x5)로 가우시안 블러에 의해 매끄럽게 펴진다. 이 과정은 아핀 변환된 얼굴에 더 많은 해상도를 생성하는 것을 목표로 하며, 이는 아핀 얼굴 뒤틀림에 도입된 다양한 종류의 해상도 불일치를 더 잘 시뮬레이션할 수 있다.
3. 매끄럽게 펴진 얼굴은 딥페이크 생성 파이프라인에 있는 aritifacts를 시뮬레이션하기 위해 원래 얼굴과 같은 크기로 다시 아핀 변환을 겪는다.
학습의 다양성을 더욱 확보하기 위해 우리는 모든 학습 예시에 대해 밝기, 대비, 왜곡, 날카로움 등의 색 정보를 변경한다. 특히, 우리는 딥페이크 파이프라인에서 후처리 절차를 다르게 시뮬레이션하기 위해서 아핀 뒤틀림을 겪은 얼굴 영역의 형태를 바꾼다. 그림3에서와 같이 아핀으로 뒤틀려진 얼굴 영역의 형태는 얼굴 landmarks를 기반으로 추가로 처리할 수 있다. 그림3(d)는 볼록한 다각형 모양이 갈색 눈과 입의 가장자리와 같은 얼굴 landmarks를 기준으로 한다는 것을 의미한다.
positive와 negative한 예로부터 우리는 우리의 네트워크의 입력으로써 ROI(region of interest)를 자른다. 우리의 목표는 가짜 얼굴 영역과 그 주변 영역 사이에서의 artifacts를 노출하는 것이기 때문에 RoIs는 얼굴 영역과 주변 영역을 모두 포함하는 직사각형 영역으로 선택된다. 특히 우리는 얼굴 랜드마크를 사용하여 Rols를 [y0 −yˆ0, x0 −xˆ0, y1 + ˆy1, x1 + ˆx1]로 결정한다. 여기서 y0, x0, y1, x1는 볼의 윤곽을 제외한 모든 얼굴 landmark를 cover할 수 있는 최소 경계 상자 b를 의미한다. 변수 yˆ0, xˆ0, yˆ1, xˆ1은 [0,h5]와 [0,w8] 사이의 랜덤 값이며 여기서 h,w는 각각 b의 높이와 폭이다. RoIs는 학습을 위해 CNN 모델에 공급하기 위해 224 x 224로 크기가 조정된다.
우리는 학습 데이터를 사용하여 VGG16 [31], ResNet50, ResNet101 및 ResNet152 [11]의 네 가지 CNN 모델을 학습시킨다. 추론을 위해 우리는 각 학습 예시의 RoI를 10배로 자른다. 그리고 우리는 모든 RoIs의 예측을 최종 가짜 확률로 평균화한다.
발 번역한 단어들 :
인위적인 증거 artifacts, 아핀 변환 affine transformation, 아핀 뒤틀림 affine warped,
변환 매트릭스 transform matrix, 얼굴 랜드마크/특징 face landmarks,
딥페이크 생성 파이프라인 deepfake production pipeline, 부정적인 예시 negative examples
내가 이해한 논문의 내용 (더보기)
논문 총정리
내가 이해한 내용을 바탕으로 정리해보도록 하겠다. 위 논문에서 저자들은 faceswap 등의 툴을 이용하여 딥페이크 사진/영상을 제작하면 얼굴 영역 내부와 외부 사이에 해상도 차이가 발생하는 것을 발견했다. 따라서 이를 CNN을 이용하여 인공지능을 훈련시켜 딥페이크 사진/영상을 판별해내자는 것이 본 논문의 목표이다. 이 모델을 학습시키기 위한 데이터셋은 딥페이크 사진/영상 생성 툴을 이용하여 제작되는 것이 아니라 사진/영상에서 사각형 모양으로 얼굴 영역을 추출하여 가우시안 블러를 적용하여 해상도 차이를 발생시켜 제작되기 때문에 모델을 만들 때에 있어 시간과 자원을 훨씬 아낄 수 있다. 데이터셋을 제작하는 순서는 다음과 같다.
1. 사진에서 사각형 모양으로 얼굴 영역을 추출하여 가우시안 블러를 적용하여 해상도 차이를 발생시킴
2. 가우시안 블러가 적용되어있는 얼굴에 학습의 다양성을 확보하기 위해 밝기, 대비, 왜곡, 날카로움 등의 색 정보를 변경한다.
3. 사각형 형태로 있는 얼굴 영역을 얼굴 랜드마크를 기반으로 사각형의 최소 경계 상자를 만들게 되고 이 최소 경계 상자는 y0, x0, y1, x1의 값과 같다.
4. 이 최소 경계 상자에서 얼굴 랜드마크를 잘라내어 다각형 형태의 얼굴 영역을 만들고 이 얼굴 영역은 RoIs라고 부른다. RoIs는 Region of Interest로 이미지 상에서 내가 관심 있어하는 부분을 말한다.
5. 이렇게 생성된 RoIs는 학습 데이터로 CNN 모델에 사용하기 위해 224x224 크기로 조정된다.
이렇게 데이터셋이 완성되면 이 데이터셋을 바탕으로 CNN 모델을 이용하여 인공지능을 훈련시킨다. 마지막에 위치한 Figure 4,5 그래프는 성능 평가 그래프로, 그래프들을 보게 되면 TP Rate와 FP Rate가 보인다. TP Rate는 진짜 얼굴 이미지를 진짜 이미지로 잘 분류한 것이고 FP Rate는 가짜 얼굴 이미지를 진짜 얼굴 이미지로 잘못 분류한 것이므로 TP Rate은 높을수록, FP Rate는 낮을수록 좋다. VGG16, ResNet50, ResNet101, ResNet152는 모두 CNN모델이다. Figure4는 모든 프레임을 분석한 결과, Figure5는 영상을 분석한 결과이다. 두 그래프들로 보아 ResNet50 CNN 모델을 사용한 것이 성능이 뛰어난 것을 확인할 수 있다.
논문 리뷰
시간과 컴퓨팅 자원을 아끼는 것은 중요하기 때문에 저자들이 매우 똑똑하다고 생각했다. 논문을 읽으면서 저자들의 자부심이 느껴졌다. 매우 고퀄리티로 제작한 딥페이크 사진/영상을 판별하기는 무리가 있을 것 같지만 시중에 나와있는 낮은 질의 딥페이크 사진/영상 사진을 판별하기에 효과적인 방법이라고 생각한다. 인공지능의 데이터셋을 선정할 때도 원본의 사진을 이용하는 방법도 있지만 내가 인위적으로 제작해주는 방법도 있다는 것을 알게 되었다. 하지만 해상도 차이로만 딥페이크 사진/영상을 판별해내므로 styleGAN이나 face2face 등의 툴로 만들어진 딥페이크 사진/영상을 판별해낼 수 있을지가 의심스럽다.