들로네 삼각망의 어파인 변환을 이용한 얼굴 교체 기법
Copyright ⓒ 2021 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
초록
본 논문에서는 얼굴 영상들 사이에서 얼굴 부분만을 자연스럽고 빠르게 서로 교체할 수 있는 얼굴 교체 방법을 제안한다. 제안된 방법에서는 먼저 참조영상과 목표영상 각각의 얼굴 부분을 인식한 다음, 얼굴의 주요 특징점이라 할 수 있는 랜드마크들을 검출한다. 검출된 랜드마크들을 기반으로 목표영상과 참조영상의 볼록 껍질을 각각 구하고, 목표영상의 볼록 껍질을 이루는 정점들로 들로네 삼각망을 구한다. 그리고 목표영상의 볼록껍질과 같은 인덱스를 갖는 참조영상의 들로네 삼각망을 구한 다음, 참조영상에서 목표영상으로 대응하는 삼각망간의 어파인 변환을 통하여 목표영상의 얼굴교체 영역을 구한다. 마지막으로 삼각망간의 어파인 변환을 통해 구해진 영역과 목표영상간의 블랜딩을 통해 얼굴교체를 구현하였다. 컴퓨터 모의실험을 통해 크기가 서로 다른 임의의 얼굴 사진들 사이에서도 자연스럽고 빠르게 얼굴교체를 할 수 있음을 확인하였다.
Abstract
In this paper, we propose a face replacement method that can naturally and quickly replace only the face parts between face images. In the proposed method, the face part of each of the reference image and the target image is recognized, and then the landmarks, which can be the main features of the face, are detected. Based on the detected landmark, the convex hull of the target image and the reference image is obtained, respectively, and Delaunay triangles are obtained from the vertices that form the convex hull of the target image. Then, the Delaunay triangles of the reference image having the same index as the convex hull of the target image are obtained, and then the face replacement part of the target image is obtained through affine transformation between the triangle corresponding to the target image from the reference image. Finally, face replacement was implemented through blending between the target image and the region obtained through affine transformation between the triangle. Through computer simulation, it was confirmed that faces can be replaced naturally and quickly even between random face photos of different sizes.
Keywords:
Delaunay Triangle, Convex Hull, Affine Transform, Face Replacement, Face Landmark키워드:
들로네 삼각망, 볼록 껍질, 어파인변환, 얼굴 교체, 얼굴 랜드마크Ⅰ. 서 론
얼굴 교체는 사진이나 동영상에서 얼굴 부분을 자동으로 다른 얼굴로 대체할 수 있는 영상처리 기술로 엔터테인먼트와 특수효과 산업 등 여러 분야에서 광범위하게 사용될 수 있는 기술이다. 예를 들어, 온라인상에서 신분노출을 방지하기 위해 사용자의 얼굴을 다른 샘플 영상의 얼굴로 대치시킬 수도 있으며, 더 나아가 사용자의 선호에 따라 몇 가지의 샘플 얼굴로 교체해가면서 사용할 수도 있다. 또한 단체 사진을 찍었을 때 어떤 한 사람이 눈을 감거나 얼굴을 찡그렸을 경우에도 해당 얼굴에 대해서만 교체를 수행하여 의미 있는 모임에서 찍은 단체사진의 가치를 향상시킬 수도 있다. 그리고 영화산업에서 위험한 역할을 수행하는 스턴트 배우의 얼굴을 주인공의 얼굴과 쉽게 교체할 수 있어 액션영화의 질을 향상시킬 수도 있다. 이와 같이 얼굴교체는 다양한 분야에서 응용될 수 있는 기술이라고 할 수 있다.
얼굴교체를 위해서는 먼저 얼굴을 교체할 수 있는 부분을 선택하기 위해서 얼굴의 주요 특징점이라고 할 수 있는 랜드마크를 검출하고, 검출된 랜드마크를 통해 교체할 부분을 참조영상에서 목표영상으로 변환을 수행하게 된다. 그리고 앞의 과정에서 변환된 영역과 실제 목표영상에서 교체할 부분을 잘 합치는 블랜딩 과정으로 진행된다. 얼굴의 랜드마크 검출은 먼저 영상에서 얼굴 영역을 검출한 다음 해당 얼굴의 특징점이라 할 수 있는 랜드마크들을 검출하게 되는데, 이러한 랜드마크들은 얼굴교체와 유사한 과정을 겪는 영상의 모핑 등에 사용될 수도 있는데, 논문[1]에서는 얼굴 랜드마크를 삼각망으로 이용하여 모핑을 수행하였으며, 논문[2]에서는 얼굴 랜드마크들을 제어선으로 이용하여 모핑을 수행한 바 있다.
얼굴 랜드마크를 구하는 방법들이 많이 존재하는데, 논문[3]에서는 ASM (active shape model)모델을 이용하여 랜드마크를 생성하여 얼굴교체 시스템을 구현하였는데, 구해진 랜드마크에서 불안정한 랜드마크들은 제거하고, 34개의 가상 특징점을 생성하여 총 95개의 특징점을 사용하였고, 논문[4]에서는 기존의 ASM 모델의 단점을 보완한 CLNF (constrained local neural fields) 모델을 사용하였는데, 반복적인 방법으로 랜드마크들의 위치 확률이 커지도록 최적화하는 문제로 접근하였다. 이러한 방법들은 어파인 변환시 많은 계산량이 요구된다고 할 수 있다. 논문[5]에서는 dlib 라이브러리를 사용하여 얼굴 랜드마크를 구한 후, 목표 영상의 특징들을 CNN (convolutional neural networks)을 이용하여 입력 영상과의 매핑을 손실함수를 도입하여 얼굴 교체를 구현하였다. 논문 [6]에서는 얼굴 데이터베이스에서 입력 영상과 모양과 포즈가 유사한 영상을 자동으로 선택하여 얼굴을 교체하는 방법을 제안하였고, 또한 블랜딩을 위해 색상이나 조명 조정 등의 과정을 거쳤다. 하지만, 입력 영상이 변화를 목표 영상에 제대로 충분히 반영하지 못하는 것이 단점이다.
논문[7]에서는 비슷한 주제를 연기하는 동영상간의 얼굴을 서로 교체하는 방법을 제안하였는데 실시간으로 얼굴 추적이 필요하며 얼굴간의 동기화 등으로 인해 많은 계산량과 부가 데이터가 필요한 방법이다.
본 논문에서는 정지영상들 간의 얼굴 교체로 한정하여 연구를 진행하였으며, 대략적으로 세 부분의 단계로 나눌 수 있다.
첫째, 얼굴을 검출하고 얼굴의 특징점이라고 할 수 있는 랜드마크들을 검출하는데, 본 논문에서는 Haar 특징을 이용하는 Cascade 분류기를 사용하여 얼굴을 검출하고, OpenCV의 LBF 모델을 이용하여 68개의 랜드마크를 구하였다. 두 번째 단계는 얼굴 교체시에 사용될 어파인 변환을 수행하게 되는데, 실제 변환 부분의 볼록 껍질을 구하고 볼록 껍질에서 삼각망을 구하여 어파인 변환을 수행하였다. 이는 다른 비교 논문보다 비교적 간단한 방법으로 얼굴교체를 구현할 수 있다는 장점이 있다.
마지막으로 어파인 변환을 통해 구해진 목표영상의 바뀔 얼굴 영역과 원본 목표영상과의 블랜딩을 수행한다. 본 논문에서는 두 이미지들 사이를 자연스럽게 합성하는 심리스 블랜딩(seamless blending) 기술인 Poisson Image Editing [8]의 방법으로 블랜딩을 수행하였다.
본 논문에서는 2장에 본 알고리즘에 필요한 기본 이론에 대해서 설명하고, 3장에서 본 논문에서 제안한 얼굴 교체 기법에 대해 자세히 설명하고자 한다. 그리고 4장에서는 수행한 시뮬레이션 결과와 고찰에 대해서 다루고, 마지막으로 5장에서는 결론과 향후 연구에 대해 기술하고자 한다.
Ⅱ. 관련 연구
본 논문에서 사용한 얼굴 교체에 사용된 주요 방법인 얼굴 랜드마크 검출과 들로네 삼각망 및 볼록 껍질, 어파인 변환, 블랜딩 방법 등을 설명하고자 한다.
2-1 얼굴 랜드마크 검출
얼굴 랜드마크들은 눈과 눈썹, 코와 입, 턱선 등 얼굴에서 다른 부분과 구별될 수 있는 특징점이라고 할 수 있다. 이러한 얼굴 랜드마크들은 검출하여 다양한 응용에 사용할 수 있는데, 전처리 과정에서는 주로 수행하는 얼굴 정렬, 얼굴이 어디를 지향하고 있는지 알아내는 머리 방향 추정, 그리고 본 논문에서와 같이 얼굴 교환 등에도 응용할 수 있는 유용한 기술이다. 얼굴 랜드마크 검출은 얼굴 영상의 관심 영역에서 형태 예측 방법을 통해서 이러한 특징점들을 검출하는 것이다. 따라서 첫 번째 단계는 영상에서 얼굴 영역을 찾아내야 한다. 그리고 두 번째 단계에서는 찾아진 얼굴 영역에서 랜드마크들을 검출하는 과정을 거친다.
논문[9]에서는 시각적 개체 감지를 위한 기계 학습 접근 방식으로 얼굴을 검출하게 된다. 빠른 계산을 위해 적분영상을 도입하고, AdaBoost를 기반으로 한 알고리즘으로 더 큰 세트에서 소수의 중요한 시각적 기능을 선택하는 매우 효율적인 분류기를 사용하여 계단식(cascade)으로 결합하는 방법을 사용하였다. 2005년도에 발표된 논문[10]에서는 HOG(histogram of oriented gradients) 방법을 사용하는데, 얼굴영상에서 각각 16×16 픽셀의 작은 정사각형으로 분해한 후, 분해된 정사각형에 대해 그래디언트 방향을 구한 다음, 가장 강한 화살표 방향으로 표시하여 얼굴의 기본 구조가 잘 표현될 수 있는 것으로 변환하게 된다. 이렇게 구해진 HOG 이미지에서 얼굴을 찾기 위해서 많은 훈련 얼굴 이미지로부터 추출된 잘 알려진 HOG 패턴과 가장 유사한 부분을 이미지에서 얼굴로 검출하게 되는데, 어떠한 이미지에서도 얼굴을 쉽게 찾을 수 있는 효율적인 방법이다. OpenCV에서는 논문[9]를 구현한 CascadeClassifier 클래스를 지원하여 Haar 특징을 이용한 계단식 분류기를 제공하고 있으며, 또한 논문[10]을 구현한 HOG 기술자 및 검출기를 제공하고 있다[11].
찾아진 얼굴 영역에 대해서 랜드마크들을 구하기 위한 방법으로는 논문[12]에서 제안한 방법을 구현한 Dlib 라이브러리를 사용하여 얼굴 랜드마크들을 구할 수 있는데, 훈련 데이터들을 회귀나무 앙상블을 학습하여 실시간으로 랜드마크들을 구할 수 있다[13].
논문[14]에서는 AAM (active appearance model)을 사용하여 랜드마크들을 검출하는 방법을 제시하였다. 이 방법은 얼굴 등과 같은 객체의 인스턴스를 생성할 수 있는 모양 및 형태의 통계 모델이라고 할 수 있다. 즉, 모양과 형태를 제어할 수 있는 파라미터를 통하여 최소 제곱의 의미로 반복적인 과정을 통해 이미지에 대해 랜드마크 등을 감지하도록 하는 방법을 사용하였다.
또한, 논문[15]에서는 LBF (local binary features)을 사용하여 얼굴 정렬을 위한 효율적이고 정확한 회귀 접근법을 제시하였다. 이 방법에서는 지역이진특징 집합과 이러한 지역이진특징들을 선형회귀 방법을 통해 학습시킴으로써 빠르고 효율적으로 얼굴 랜드마크들을 찾는 방법을 제시하였다. [16]에서와 같이 사용자가 직접 데이터셋을 다운로드하여 학습 모델을 만들 수 있으나, 본 논문에서는 미리 학습된 모델을 사용하였으며, 파일 용량의 크기가 LBF 모델이 AAM 모델보다 파일용량이 작아 LBF 모델을 사용하여 얼굴 랜드마크를 구하였다.
그림 1(a)는 얼굴 영역에서 검출될 68개의 랜드마크들을 보여주고 있으며, 그림1(b)는 Haar 특징을 이용한 분류기를 이용하여 hillary clinton 영상에서 얼굴검출과 검출된 얼굴에서 LBF 모델을 이용하여 랜드마크들을 찾은 예이다.
2-2 들로네 삼각망과 볼록껍질
들로네 삼각망은 평면위에서 공간을 분할하는 알고리즘으로 평면위의 정점들을 삼각형으로 연결하여 연결된 삼각형들의 내각의 최솟값이 최대가 되는 분할을 말한다.
이렇게 만들어진 삼각형의 외접원은 삼각형을 이루는 세 꼭지점을 제외하고는 다른 어떠한 정점도 포함하지 않는다는 특징이 있다[17].
그림2는 들로네 삼각망에 대한 설명을 보여주고 있는데, 그림 2(a)에서와 같이 평면위에 임의의 점들이 있다고 가정할 때, 이러한 점들을 이용하여 삼각형을 만드는 방법들은 여러 가지 경우가 있다. 그림 2(b)의 예는 들로네 삼각망의 옳은 예를 보여 주는데, 삼각형을 이루는 세 점 A, B, C의 외접원에 평면위에 다른 어떠한 점도 포함하지 않는다. 이러한 분할은 최대한 정삼각형에 가까운 방법으로 분할이 이루어지게 함으로써 가능하다. 그림 2(c)의 예는 들로네 삼각망의 잘못된 예인데, 세 점 A’, B’, C’의 외접원을 그리면 D점이 외접원에 포함되는 것을 볼 수 있다. 이러한 분할은 주로 길쭉하고 홀쭉한 삼각형이 그려지는 분할이다.
그리고 볼록껍질 (convex hull)은 임의의 점들 집합 S에 대해서 S를 포함하는 가장 작은 볼록 집합을 말한다. 예를 들어 그림 2(a)의 평면위의 정점들의 집합에 대한 블록껍질을 구하면 그림 3(a)에서와 같다. 이는 평면위의 임의의 점들에 대해서 이들을 모두 포함하는 가장 작은 볼록껍질의 예라고 할 수 있다. 그림 3(b)에서는 볼록껍질의 잘못된 예를 보여주고 있는데, 구해진 껍질 내부의 A와 B와 같은 임의의 점들을 연결한 직선이 껍질의 바깥을 지나게 되어 잘못된 볼록껍질이라고 할 수 있다. 본 논문에서는 68개의 얼굴 랜드마크 정점에서 블록껍질을 구하게 되는데, 이는 바뀔 얼굴 부분이라고 할 수 있다. 그리고 구해진 볼록껍질의 바깥 부분의 정점들에 대해서만 삼각분할을 수행하였으며, OpenCV의 subdiv2D 클래스를 사용하여 들로네 삼각망을 구하였다[18].
2-3 어파인 변환
어파인 변환은 변환 전에 선에 있는 모든 점은 변환 후에도 여전히 선 위에 있고, 변환 전 선분의 중간점도 변환 후에 중간점으로 유지되고 공선점을 보존하는 변환이다[19].
어파인 변한은 선의 비율을 유지하지만, 반드시 각도나 길이를 유지하지는 않는다. 모든 삼각형은 어파인 변환에 의해 다른 삼각형으로 변환될 수 있으므로 모든 삼각형은 어파인 변환이며, 이러한 의미에서 어파인 변환은 도형의 합동을 일반화한 형태라고 할 수 있다.
어파인 변환을 나타내는 2 × 3 행렬은 아래 수식(1)과 같이 나타낼 수 있다.
(1) |
식 (1)에서 A는 회전을 의미하며, B는 영상 내 이동 변환을 나타낸다. 따라서 M은 영상 내 이동 후 회전을 수행하는 복합변환을 뜻한다. 식 (2)는 X(x,y)에 대해 A(회전) 및 B(이동변환)을 수행할 때의 수식이다.
(2) |
어파인 변환은 기본적으로 두 이미지 간의 관계라고 할 수 있고, 어파인 변환을 구하는 방법은 크게 두 가지 방법으로 접근할 수 있다. 먼저 X와 T를 모두 알고 있고 서로 연관이 되어 있을 때, M을 찾는 것이고, 다른 하나는 우리가 M과 X를 알고 있고, T를 얻으려면 T = M•X를 적용하여 얻을 수 있다.
OpenCV에서는 어파인 변환에 대한 다양한 함수 등을 제공하는데, warpAffine() 함수는 2 × 3 크기의 변환 행렬인 M을 통하여 입력영상을 어파인 변화한 출력영상을 얻을 수 있다. 또한, 어파인 변환인 M을 구하는 함수로는 getAffineTransform()과 getRotationMatrix2D() 함수가 있는데, getAffineTransform() 함수는 입력 영상의 세 점과 출력 영상의 세 점의 좌표를 매개변수로 하여 2 × 3 크기의 변환 행렬인 M을 구할 수 있으며, getRotationMatrix2D() 함수는 중심점과 회전 각도, 스케일을 매개변수로 사용하여 변환 행렬 M을 구할 수 있다.
그림4는 어파인 변환을 설명하는 그림이다. 변환 행렬 M을 미리 알고 있다면 입력영상에 warpAffine() 함수를 적용하여 출력 영상을 구할 수 있으며, 또한 입력영상의 3개의 점 X1, X2, X3와 출력영상의 , , 의 좌표를 이용해 변환행렬 M을 구할 수도 있다.
어파인 변환을 수행하게 되면 삼각형 내부의 나머지 좌표들도 모두 변환 행렬에 따라 같이 변환하게 된다.
2-4 Seamless Blending
Seamless 블랜딩은 합성하고자 하는 두 이미지의 초기 설정이 주어지면 자동으로 자연스럽게 합성해 주는 기술로 부자연스러운 경계면을 자연스럽게 만들어주는 Poisson Image Editing 알고리즘이다[8].
그림 5에서는 심리스 블랜딩 방법을 설명하고 있다. 그림 5(a)의 목표 영상에 그림 5(b)의 참조영상을 합성하고자 하면, 우선 그림 5(b)의 원하는 특정 부분을 마스킹 연산하여 필요한 영역을 선택해야 하는데 그림 5(c)는 합성하기 원하는 부분을 마스킹을 통하여 구한 그림이다. 그리고 마스킹된 영역을 목표 영상의 원하는 부분에 배치하게 되면 그림 5(d)와 같이 된다. 참조 영상과 목표 영상을 보면 색상과 명도가 다르기 때문에 경계면이 부자연스러울 뿐만 아니라, 참조 영상의 배경 부분이 그대로 나타나 결과 영상의 품질이 떨어지게 된다. 이러한 문제를 해결하기 위해 심리스 블랜딩 알고리즘에서는 경계조건에 따른 이미지 그래디언트 매칭(gradient matching)과 이산 솔루션(discrete solution)의 두 단계를 거치면서 그림 5(f)와 같은 자연스러운 블랜딩을 구할 수 있다.
기본적인 아이디어는 참조 영상에서 선택된 새의 영역의 특성을 유지하면서 목표 영상의 색상을 참조 영상의 내부로 자연스럽게 혼합하는 것이다. 즉 참조 영상에서 선택된 새의 영역은 단순히 특정 색상 값이 아니라, 주변과의 색상차이 즉 그래디언트를 구하고, 구해진 그래디언트를 유지하면서 경계면으로부터 목표 영상의 내부방향으로 혼합하면 된다.
H를 목표 영상에 맞게 개선된 참조 영상이라고 하면 H는 식 (4)와 같이 표현할 수 있으며, T 는 목표 영상, R은 참조 영상을 뜻한다.
(4) |
두 번째 단계인 이산 솔루션에서는 식 (4)를 이산적인 방법으로 해결할 수 있다. 영상은 픽셀들로 이루어져 있으며, 이러한 픽셀들의 위치는 수평방향과 수직방향의 정수 위치로 표현되기 때문이다. 따라서 식 (4)의 H의 그래디언트 값은 식 (5)로 나타낼 수 있다.
(5) |
그림 5(e)는 참조 영상의 합성할 영역을 수식 (5)로 그래디언트를 구한 영상이다. 이러한 그래디언트 정보를 이용하여 참조 영상이 목표 영상에 자연스럽게 블랜딩 되도록 한다.
우선 참조 영상의 마크스에 해당하는 합성할 영역을 목표 영상에 배치하고, 참조 영상의 합성될 영역의 경계값 픽셀을 고정한 후 내부를 수식 (5)를 적용하여 채워나간다. 즉, 채우고자 하는 픽셀 위치에서의 색상은 경계면 색상으로 시작하여 이미지 그래디언트를 유지하는 방향으로 채워줌으로써 블랜딩을 수행한다.
본 논문에서는 얼굴 랜드마크로 구해진 참조 영상의 얼굴 영역은 목표 영상의 얼굴부분으로 합성할 때 심리스 블랜딩 알고리즘을 사용하였다.
Ⅲ. 제안한 얼굴 교체 기법
본 논문에서 제안한 얼굴 교체는 참조 영상과 목표 영상 간에 얼굴 부분을 교체하는 방법으로 그림 6에서와 같은 순서대로 진행된다.
3-1 얼굴 및 랜드마크 검출
그림 6의 블록도에서 참조 영상은 바꿀 얼굴이 있는 영상을 말하며, 목표 영상은 바뀔 얼굴이 있는 영상을 말한다. 우선 두 영상을 입력하고 나서 추후 심리스 블랜딩을 위해 목표 영상의 복제본을 생성한 후, 참조 영상과 목표 영상의 얼굴 및 랜드마크 검출을 실시한다. 그림 7에서는 hillary_clinton 영상을 참조 영상으로 사용하고, barack_obama 영상을 목표 영상으로 하여 Haar 특징을 이용한 계단식 분류기를 이용하여 얼굴영역을 검출하고, LBF 모델을 사용하여 68개의 얼굴 랜드마크들을 검출한 결과이다.
3-2 볼록 껍질의 들로네 삼각망과 어파인 변환
그림 7에서와 같이 참조 영상과 목표 영상에서 얼굴을 검출하고 검출된 얼굴에서 68개의 랜드마크들을 찾은 다음, 검출된 얼굴 랜드마크들을 이용해서 바뀔 얼굴 영역을 구하는데 볼록 껍질을 사용하여 바뀔 얼굴 영역을 구하게 된다. 이 과정이 없이 참조 영상과 목표 영상의 얼굴 랜드마크들로 들로네 삼각망을 각각 구하고 서로 대응되는 들로네 삼각망끼리의 어파인 변환을 이용하여 얼굴 교체를 구현할 수 있으나, 본 논문에서와 제안한 바와 같이 볼록 껍질을 이용하면 실험결과 화질의 저하 없이 어파인 변환을 할 삼각망의 개수가 줄어들어 빠르게 얼굴 교체를 할 수 있다. 그림 8(a)와 그림 8(b)는 각각 참조 영상과 목표 영상에서 얼굴 랜드마크 점들로부터 볼록 껍질을 구한 그림이다.
볼록껍질에 사용된 랜드마크 점들을 녹색으로 표시하였고 볼록껍질 내부를 밝게 표현하였다. 이 부분이 서로 교체될 얼굴 영역이라고 할 수 있다. 다음 단계로는 볼록껍질에 사용된 점들을 이용하여 들로네 삼각망을 구하게 되는데, 먼저 목표 영상의 볼록껍질을 이용하여 들로네 삼각망을 구한 다음, 참조 영상에서는 목표 영상에서 구해진 들로네 삼각망에 대한 인덱스를 참고해서 대응 삼각형 매쉬를 구성해야 한다. 그림 9(a)는 68개의 얼굴 랜드마크들을 이용하여 들로네 삼각망을 구성한 그림이다.
목표 영상과 참조 영상의 크기와 영상에서 얼굴의 크기가 각각 다르기 때문에 구해진 랜드마크를 이용하여 들로네 삼각망을 구할 경우 위치가 서로 다르기 때문에 대응되는 삼각망을 구할 수 없다. 같은 이유로 그림 9(b)에서와 같이 볼록껍질을 이루는 점들을 이용하여 들로네 삼각망을 구해도 같은 위치의 들로네 삼각형이 생길 수 없다. 따라서 그림 9(c)에서와 같이 목표 영상의 들로네 삼각망에 대해서 참조 영상의 볼록껍질의 인덱스를 참조하여 같은 위치의 대응되는 삼각형 매쉬를 구할 수 있다. 다음 단계로는 모든 대응되는 목표 영상의 삼각망과 참조 영상의 삼각형끼리 어파인 변환을 수행해야 한다.
그림 10(a)는 목표 영상의 임의의 한 삼각망과 참조 영상의 삼각형 매쉬와의 어파인 변환 과정을 보여주고 있다.
여기에서 어파인 변환은 2.3의 어파인 변환에서 설명한 바와 같이 목표 영상의 삼각망의 세 개의 점과 대응되는 참조 영상의 삼각형 매쉬의 세 개의 점을 이용하여 어파인 변환행렬을 구하게 되는데, OpenCV의 getAffineTransform() 함수를 이용하여 구할 수 있다. 구해진 변환 행렬과 OpenCV의 warpAffine() 함수를 이용하여 참조 영상의 삼각형 매쉬를 어파인 변환하게 된다. 그리고 그림 10(b)는 목표 영상에서 하나의 삼각망에 대한 바운딩 박스를 구하고, 바운딩 박스의 좌상단에서의 오프셋의 크기에 따라 마스크를 생성하게 된다. 생성된 마스크는 그림 10(c)에서와 같이 어파인 변환된 영상과 곱셈 연산을 수행하여 얻은 결과를 목표 영상의 삼각망에 매핑하게 된다. 이러한 과정을 목표 영상의 모든 삼각망에 대해서 처리하면 전체 얼굴을 교체할 수 있게 된다.
3-3 심리스 블랜딩
어파인 변환이 완료되면 목표 영상의 볼록 껍질 내부가 참조 영상의 얼굴로 채워지게 된다. 따라서 목표 영상의 볼록껍질 바깥 부분과 어파인 변환 결과를 자연스럽게 합성해주는 심리스 블랜딩을 수행하게 되는데, 그림 11(a)는 심리스 블랜딩 과정을 보여주고 있다. 좌측의 영상은 어파인 변환이 완료된 영상을 뜻하고, 가운데 영상은 목표 영상의 얼굴 랜드마크로부터 구해진 볼록껍질, 즉 바뀔 얼굴 부분을 나타낸다. 오른쪽 그림은 심리스 블랜딩을 수행한 결과를 보여주고 있다. 그림 11(b)는 심리스 블랜딩을 수행할 때 어파인 변환된 영상을 목표 영상의 어느 부분에 위치시키는 하는 문제이다.
본 논문에서는 목표 영상의 얼굴 랜드마크에서 볼록껍질을 이루는 점들의 바운딩 박스를 구한 다음, 구해진 바운딩 박스의 좌상단의 좌표와 우하단의 좌표의 가운데 좌표를 중심점으로 정하고 합성을 수행하였다.
Ⅳ. 시뮬레이션 결과 및 고찰
본 논문에서 제안한 얼굴 교체 알고리즘을 구현하기 위해 다른 사람들 간에 얼굴 교체와 같은 사람에 대한 얼굴 교체가 잘 이뤄지는 지에 대해서 실험하였다. 우선 다른 사람들 간에 얼굴 교체를 위해 그림 12와 같이 boy 영상과 lady 영상, hillary_clinton 영상, barack_obama 영상을 실험 영상으로 사용하였고, 같은 사람에 대한 얼굴 교체 실험은 그림 14와 같이 한 사람이 다른 색의 옷을 입고 모자의 착용 여부, 그리고 각기 다른 표정을 짓고 찍은 사진을 사용하였다. 시뮬레이션에 사용된 CPU는 인텔 Xeon(R) E3-1270 v3. 3.5GHz 사용의 컴퓨터와 OpenCV 4.2.0 버전으로 비쥬얼 스튜디오 환경에서 실험을 하였다.
그림 9에 설명한 것과 같이 얼굴 랜드마크를 이용하여 들로네 삼각망을 구성한 다음 어파인 변환을 수행할 수도 있으나, 본 논문에서와 같이 얼굴 랜드마크의 볼록껍질을 이용하면 어파인 변환을 수행할 들로네 삼각망의 개수 줄어들 뿐만 아니라 인덱스 정보를 활용하여 대응하는 참조 영상의 삼각형 매쉬를 구성하는 과정이 훨씬 간단해 지게 된다. 그림 16은 목표 영상을 hillary_clinton 영상을 사용하고, 참조 영상은 barack_obama 영상을 사용하였을 때의 결과 영상이다. 그림 16(a)는 68개의 얼굴 랜드마크를 이용하여 들로네 삼각망을 구한 후 어파인 변환을 수행한 결과이고, 그림 16(b)는 68개의 얼굴 랜드마크에서 볼록껍질을 구한 후, 볼록껍질의 정점들로 들로네 삼각망을 구한 후 어파인변환을 수행한 결과이다. 그림 16(a)의 경우에는 생성된 들로네 삼각망은 108개이고, 그림 16(b)의 경우는 21개이다.
따라서 87개의 삼각망을 어파인 변환하는 연산과 삼각망 내의 모든 픽셀들의 보간 계산 등을 줄일 수 있음에도 그림 16에서 보듯이 결과 영상의 차이가 거의 없다는 것을 알 수 있다. 그림 12와 그림 14에서 사용된 모든 실험영상을 얼굴 랜드마크에서 볼록껍질로 생성된 들로네 삼각망의 개수는 20~21개이다. 그림 13과 그림 15의 결과 영상들은 각각 그림 12와 그림 14의 실험 영상들에 대해 가질 수 있는 모든 참조영상 및 목표 영상 조합들에 대한 결과 영상이다.
결과영상에서 볼 수 있듯이 본 논문에서는 얼굴을 검출하고 검출된 얼굴에서 얼굴 랜드마크들을 구한 다음에 얼굴 교체를 하기 때문에 영상의 크기와 영상 내의 얼굴 크기 및 얼굴 위치가 달라도 비교적 얼굴 교체가 잘 이뤄짐을 알 수 있다.
그림 13과 그림 15의 결과영상들은 각각 그림 12와 그림 14에서의 참조영상과 목표영상들을 이용하여 시뮬레이션한 결과를 보여준다.
그림 13의 결과영상들을 보면 대체적으로 얼굴 부분은 잘 교체가 되었다고 볼 수 있으나, 영상마다 얼굴에 조명과 밝기 등이 확연하게 차이가 나는 경우에는 다소 부자연스러운 결과를 나타나는 것을 볼 수 있다. 또한, 실험 영상 중 그림 12(a)와 그림 14(c)와 같이 얼굴사진에서 머리카락이 눈썹을 덮는 경우에는 머리카락의 검은 색이 결과 영상에 살짝 비춰지는 것을 볼 수 있다. 이는 머리카락이 있는 영상이 참조 영상으로 사용되었을 경우에 머리카락 일부분이 볼록껍질 내부로 들어갈 수 있기 때문에 이 부분이 목표 영상으로 합성 되는 과정에서 발생되는 것으로 보인다.
Ⅴ. 결 론
본 논문에서는 다양한 얼굴 영상들 사이에서 얼굴 부분만을 자연스럽고 빠르게 서로 교체할 수 있는 얼굴 교체 방법을 제안하였다. 제안된 방법에서는 먼저 참조영상과 목표영상 각각의 얼굴 부분을 Haar 특징을 이용한 Cascade 분류기를 이용하여 얼굴을 검출한 다음, 얼굴에서 특징점이라 할 수 있는 68개의 랜드마크들을 LBF 모델을 이용하여 검출하였다. 검출된 랜드마크를 이용하여 목표영상과 참조영상의 볼록 껍질을 각각 구하고, 목표영상의 볼록 껍질을 이루는 정점들로 들로네 삼각망을 구하였다. 그리고 목표영상의 볼록껍질과 같은 인덱스를 갖는 참조영상에서 삼각형 매쉬를 구한 다음, 참조영상에서 목표영상으로 대응하는 삼각망간의 어파인 변환을 통하여 목표영상의 얼굴교체 영역을 구한다. 마지막으로 삼각망간의 어파인 변환을 통해 구해진 영역과 목표영상간의 심리스 블랜딩을 통해 얼굴교체를 구현하였다. 컴퓨터 모의실험을 통해 크기가 서로 다른 임의의 얼굴 사진들 사이에서 얼굴교체를 빠르고 자연스럽고 수행할 수 있음을 확인하였다.
본 논문에서는 얼굴이 정렬된 영상을 실험 영상으로 사용하였으나, 추후 연구과제로는 얼굴 랜드마크를 구하기 전 얼굴을 정렬하는 과정과 얼굴 랜드마크들의 볼록껍질과 머리카락 등이 겹침으로써 화질의 열화가 발생하지 않도록 적절한 전처리 과정과 얼굴 교체 후에 바뀐 얼굴의 피부와 볼록껍질의 바깥 부분에 위치한 이마 부분의 피부의 톤을 적절하게 일치시키는 후처리 알고리즘 연구도 진행하여 좀 더 성능이 우수한 얼굴 교체 연구를 수행하고자 한다.
Acknowledgments
본 연구는 2020년도 나사렛대학교 교내 학술연구비 지원 및 정부(교육부)의 재원으로 한국연구재단의 지원을 받아 수행된 기초 연구 사업임 (No. 2017R1D1A1B06034648).
References
- K. N. Park, “A Facial morphing method using Delaunay Triangle of Facial Landmarks,” The Journal of Digital Contents Society, Vol. 19, No. 1, pp. 213-220, Jan 2018.
- K. N. Park, “A morphing method using control lines of facial landmarks,” The Journal of Digital Contents Society, Vol. 20, No. 2, pp. 443-450, Feb 2019. [https://doi.org/10.9728/dcs.2019.20.2.443]
- J. S. Song, X. Zhang, and J. I. Park, “Face swapping system using affine transform,” in Proceeding of IEIE Summer Conference, Vol. 37, No. 1, pp. 1956-1957, 2014.
- B. H. Hwang, S. H. Lee, M. K. Sohn, H. D. Kim, and H. S. Choi, “Image swapping by using face landmark detection based on constrained local neural fields,” in Proceeding of KIISE Winter Conference, pp. 1126-1128, 2016.
- I. Korshunova, W. Shi, J. Dambre, and L. Theis, “Fast face-swap using convolutional neural networks,” in Proceeding of IEEE International Converence on Computer Vision(ICCV), pp. 3677-3685, 2017. [https://doi.org/10.1109/ICCV.2017.397]
- D. Bitouk, N. Kumar, S. Dhillon, P. Belhumeur, and S. K. Nayar, “Face swapping: automatically replacing faces in photographs,” in ACM Transactions on Graphics (SIGGRAPH), 2008. [https://doi.org/10.1145/1399504.1360638]
- K. Dale, K. Sunkavali, M. K. Johnson, D. Vlasic, W. Matusik, and H. Pfister, “Video face replacement,” in ACM Transactions on Graphics (SIGGRAPH), 2011. [https://doi.org/10.1145/2024156.2024164]
- P. Pérez, M. Gangnet, and A. Blake, “Poisson imge editing,” in ACM Transactions on Graphics (SIGGRAPH), 2003. [https://doi.org/10.1145/1201775.882269]
- P. Viola and M. Jones, “Rapid object detection using a boosted cascade simple features,” in Proceedings of the 2001 IEEE computer society conference on Computer Vision and pattern recognition, pp. 511-518, 2001.
- N. Dalal and B. Triggs, “Histograms of oriented gradients for human detection,” in Computer Vision and Pattern Recognition(CVPR2005), pp.886-893, 2005.
- OpenCV documentation. Available: http://docs.opencv.org
- V. Kazemi and J. Sullivan, “One Millisecond Face Alignment with an Ensemble of Regression Trees,” in ECCV, pp. 679-692, 2014. [https://doi.org/10.1109/CVPR.2014.241]
- Dlib c++ Library. Available: http://dlib.net
- G. Tzimiropoulos and M. Pantic, “Optimization problems for fast AAM fitting in-the-wild,” in CVPR, pp. 593-600, 2013. [https://doi.org/10.1109/ICCV.2013.79]
- S. Ren, X. Cao, Y. Wei, and J. Sun, “Face alignment at 3000 FPS via regressing local binary features,” in CVPR, pp. 1685-1692, 2014. [https://doi.org/10.1109/CVPR.2014.218]
- Facemark LBF training demo. Available: http://amroamroamro.github.io/mexopencv/opencv_contrib/facemark_lbf_train_demo.html#2
- wikipedia site. Available: https://en.wikipedia.org/wiki/Delaunay_triangulation
- OpenCV documentation site. Available: https://docs.opencv.org/4.2.0/df/dbf/classcv_1_1Subdiv2D.html
- S. Lee, G. G. Lee, E. S. Jang, and W. Y. Kim, “Fast Affine Transform for Real-Time Machine Vision Applications,” Lecture Notes in Computer Science(Springer, Berlin, Heidelberg), Vol. 4113, pp. 1180-1190, 2006. [https://doi.org/10.1007/11816157_147]
저자소개
1992년: 경북대학교 전자공학과 졸업
1997년: 경북대학교 대학원 전자공학과 졸업(공학석사)
2003년: 경북대학교 대학원 공학박사-영상시스템공학)
2009년 2월~2010년 1월: University of California, San Diego 방문교수
2003년~현재: 나사렛대학교 IT융합학부 전임강사, 조교수, 부교수, 교수
※관심분야: 멀티미디어 신호처리, 영상처리, 컴퓨터 그래픽 등