Computer vision분야에서 deep learning, 특히 image gererating이 발전하면서 여러 범죄의 위험도 커지고 있습니다. 대표적으로 deepfake가 있습니다. Deepfake는 이미 존재하는 이미지에 다른 이미지를 합성하여 왜곡된 정보를 전달하는 것입니다.
위 사진은 SBS의 ‘그것이 알고싶다’에서 내보낸 방송의 장면 중 일부입니다. 왼쪽에는 김상중씨와 똑같은 얼굴을 가진 인물이 앉아있는 것을 볼 수 있습니다. 이 또한 deepfake를 이용하여 만들어낸 가상의 인물입니다. 이렇게 deepfake를 이용하여 실제 정보와 다른 정보를 전달할 수 있습니다.
이렇게 deepfake 중에서도 얼굴에 대한 이미지를 합성하는 face forgery가 deepfake의 주를 이룹니다. 그렇다면 이러한 잘못된 정보는 어떻게 판별할 수 있을까요? Face manipulation method들이 발전해 나감에 따라 이를 판별하는 face forery detector들도 발전하고 있습니다. 하지만 지금까지 존재했던 detector들은 특정한 dataset과 특정한 method들에 너무 의존하여 학습을 한다는 한계점이 존재합니다. 처음보는 dataset에 대해서는 올바르게 detection을 하지 못하는 것입니다. 이러한 한계점을 극복하기 위해 본 논문은 face X-ray라는 기법을 제시합니다.
이미지가 합성되는 과정은 크게 3가지의 stage로 나눌 수 있습니다.
- 먼저 이미지에서 얼굴의 구역을 찾는 것입니다. 얼굴의 구역을 찾아서 합성될 구역을 지정하는 것입니다.
- 해당 구역의 이미지를 합성 혹은 조작하여 새로운 이미지를 만들어 냅니다.
- 새로운 이미지를 원래 이미지 구역으로 합칩니다.
기존의 forgery detector들은 2번의 단계에 집중을 하였습니다. 즉 이미지를 조작하는 과정에서 생기는 결점 (e.g., eye blinking)등을 찾도록 학습을 하는 것입니다. 하지만 이렇게 특정 dataset의 특징에 대해서만 학습을 하게 되면 새로운 data에 대해서는 올바른 detection을 하지 못합니다. 따라서 만들어진 새로운 이미지를 기존의 이미지와 합치는 과정에서 detection을 하는 것이 본 논문의 요점입니다.
처음에 이미지가 생성될 때는 hardware나 software적인 이유로 인하여 노이즈가 발생하게 됩니다. 예를들어 카메라의 센서나 렌즈로 인한 노이즈가 생길 수 있고, 촬영된 이미지를 압축하는 등의 과정에서 노이즈가 발생할 수 있습니다. 이러한 노이즈로 인하여 이미지에는 mark가 존재하게 되고 이는 이미지 전체에 걸쳐 고르게 분포되어 있습니다.
위는 이미지의 mark를 나타낸 그림입니다. (a)는 진짜 이미지이며, (b)는 가짜 이미지입니다. 위의 두번째와 세번째 행의 그림을 보게 되면 진짜이미지와 확연히 구분되는 구역이 가짜 이미지에 존재함을 알 수 있습니다. 이렇게 이미지에서 조작된 부분의 boundary를 표현하는 것이 face X-ray입니다.
(a)는 진짜 이미지이고, (b)는 가짜 이미지들입니다. 두번째 행에 존재하는 검은 바탕의 이미지들이 face X-ray입니다. Face X-ray는 grey scale 이미지로, 합성된 구역을 나타내는 boundary는 흰색에 가깝게 표현이 됩니다. 즉 해당 boundary를 기준으로 진짜 이미지와 합성된 이미지가 나뉘는 것입니다.
따라서 Face X-ray는 특정 method나 dataset에 특화되지 않고 매우 일반적인 결과를 도출할 수 있습니다.
Face X-ray Definition
대부분의 face manipulation method들은 위와 같은 식을 따릅니다. 여기서 I_F는 foreground, I_B는 background, M은 mask를 뜻하고 I_M은 manipulated image를 뜻합니다. 결국 0~1사이의 pixel들의 집합인 mask사용하여 가짜 이미지를 만들어내는 것입니다. 이 때 mask의 값이 0 혹은 1이면 binary mask가 되어 foregound 혹은 background 이미지만 남게 됩니다.
Face X-ray는 이 때의 mask를 이용하여 이미지의 진위여부를 가리게 됩니다.
(i, j)는 픽셀의 위치를 뜻하고 B는 face X-ray를 통과한 이미지입니다. M은 input I에 의해 결정되는 mask입니다. (i, j)의 위치가 진짜 이미지 혹은 가짜 이미지의 위치일 경우, 해당 위치의 M은 trivial하며 0 혹은 1의 값을 갖게 됩니다. 반면에 (i, j)의 위치가 진짜 이미지와 가짜 이미지의 경계일 경우 해당 위치의 M은 nontirival하며 0과 1사이의 값을 갖게 됩니다. 이 때
의 최댓값은 0.25입니다. 따라서 여기에 4를 곱한 B의 값은 0과 1 사이의 값이 됩니다.
위는 face X-ray와 mask들 사이의 관계를 나타내는 그림이며, 진짜 이미지와 가짜 이미지의 경계가 강조되는 것을 볼 수 있습니다.
Training Data Generation from Real Images
진짜 이미지로만 학습을 하게 될 경우, face X-ray의 pixel 값은 0으로만 이루어져있기 때문에 학습이 어렵습니다. 따라서 face X-ray의 학습을 위한 dataset을 만들어주어야 합니다.
보통의 face forgery detector들은 face manipulation method들에 의해 만들어진 이미지로 학습을 합니다. 하지만 face X-ray는 blending boundary에 대해 학습을 하기 때문에 서로 다른 진짜 이미지를 합성하여 만든 합성된 이미지와 nontirival face X-ray로 충분히 학습이 가능합니다.
Nontrivial face X-ray를 만드는 것에는 3가지 stage가 존재합니다.
- 진짜 이미지인 background face가 주어졌을 때, 다른 진짜 이미지인 foreground face를 찾기
- background face로부터 face landmark를 추출하여 해당 landmark와 거리가 가장 가까운 foreground face 선정
2. manipulated region의 범위를 정하기 위해 mask 생성
- initial mask는 background face의 landmark로 이루어진 convex hull
(convex hull은 존재하는 점들 가운데 임의의 두 점을 선택하여 선분을 그었을 경우 해당 선분을 포함하는 도형입니다. 즉 오목한 부분이 없이 볼록한 도형입니다.) - mask의 다양한 shape을 커버하기 위해 mask에 random shape deformation과 blur를 적용하여 final mask 생성
(face manipulation method는 항상 같은 구역에 일어나지도 않고 다양한 변형을 줄 수 있기 때문입니다.)
3. 결과 생성
- Equation (1)을 사용하여 blended face 생성
- Equation (2)를 사용하여 face X-ray 생성
앞서 설명한 과정을 통해 많은 양의 dataset을 생성 가능합니다. 이렇게 만들어진 dataset D는 다음과 같습니다.
I는 input을 나타내고, B는 해당 이미지에 상응하는 face X-ray를 나타냅니다. c는 해당 이미지가 진짜 이미지인지 합성된 이미지인지를 나타내는 binary scalar 값입니다.
Input image I에 대해서, 해당 이미지의 face X-ray을 만들고 face forgery detection을 하는 과정은 convolutional neural network를 사용합니다.
먼저, 입력된 이미지에 대한 face X-ray를 만드는 과정과 face X-ray loss입니다. NN_b는 fully convolutional neural network를 나타냅니다.
이후 만들어진 face X-ray를 이용하여 해당 이미지에 대한 forgery detection을 진행합니다. 이 때 NN_c는 global average pooling을 사용한 후 fully connected layer와 softmax activation layer를 통해 scalar값을 도출해냅니다.
classification loss는 다음과 같습니다. 따라서 overall loss function은 다음과 같습니다.
이 때 λ는 face X-ray loss와 classification loss 사이의 balancing을 위한 hyperparameter 입니다.
기존의 sota model이었던 Xception과 비교를 하였습니다. 공정한 비교를 위해 Face X-ray의 base architecture인 HRNet도 함께 비교를 하였습니다. 그 결과 Xception과 HRNet은 학습한 dataset에 대해서만 좋은 결과를 보인데 반해, Face X-ray는 모든 dataset에 대해 좋은 성능을 보여줍니다. 이는 Xception과 HRNet과 같은 modele들이 특정 dataset에 overfit 되어있기 때문입니다.
위 표에서 real image들을 합성해서 만든 BI (blended image)도 함께 학습을 했을 경우에 성능이 더 좋은 모습을 확인할 수 있습니다. 위 표의 마지막 실험을 보면 BI로만 학습을 하였음에도 불구하고 Face-Xray 뿐만이 아니라 Xception과 HRNet 또한 모든 dataset에 대해 좋은 결과를 보여주고 있습니다. 이는 BI 자체가 generalization이 잘 된 dataset이기 때문이라고 본 논문에서 말하고 있습니다.
이렇게 face manipulation method들을 통해 생성된 dataset이 아닌, 적은 노력으로 만들 수 있는 BI만 이용하더라도 forgery detector들의 성능을 높일 수 있습니다.
최근에 나온 model들과 성능을 비교하더라도 Face X-ray가 가장 좋은 성능을 보여주고 있습니다.
좋은 성능을 보여주는 face X-ray도 몇가지 한계점이 존재합니다.
Face X-ray는 manipulated image의 blending step에 의존을 합니다. 따라서 이미지가 전체적으로 조작된 경우 등에는 올바르게 detection을 수행하지 못할 수도 있습니다.
- Face X-ray를 target으로 한 method의 개발
Forgery creation과 detection 사이의 존재할 수밖에 없는 사항입니다. Face X-ray를 극복하기 위한 forgery creation method가 개발될 수도 있습니다.
- 저해상도의 이미지에 대해서 성능의 저하
다른 forgery detector들과 마찬가지로 저해상도의 이미지에 대해서는 성능이 떨어질 수 있습니다.
본 논문은 그동안 다른 논문들과 달리 blending step에 주목을 하였습니다. 이를 통해 일반적으로 사용이 가능하며 가짜 이미지 없이 훈련이 가능한 model을 만들었습니다.