Deepfakes는 무엇이며 어떻게 생성합니까?
딥페이크에 대한 종합적인 설명과 페이스스왑을 이용한 간편한 제작 방법을 알아봅니다.
인공지능 기술은 더 이상 단순한 '인공물'이 아닙니다. 현대 사회에서 인공지능은 우리 인간에게 위험할 정도로 가까워졌습니다.
인공지능은 제안, 글쓰기, 예술 창작은 물론 이제는 살아있는 듯한 모습과 음성까지 구현할 수 있습니다.
이러한 기술은 우리가 활용해야 할 최신 발전 영역 중 하나이지만, 동시에 주의를 기울여야 할 부분이기도 합니다.
딥페이크란 무엇인가?
딥페이크(Deepfake)는 딥러닝(Deep Learning)과 페이크(Fake)를 결합하여 만들어진 신조어입니다. 간단하게 말하면, 전문적으로 조작되었거나 매우 정교하게 위조된 미디어라고 볼 수 있습니다.
위키피디아에 따르면, 딥페이크는 기존의 이미지, 오디오, 또는 비디오를 수정하여 전혀 다른 사람을 보여주는 합성 미디어를 의미합니다.
일반적으로 딥페이크는 유명인이 실제로는 하지 않은 말을 하는 것처럼 보이게 만듭니다.
제작자의 기술 수준에 따라 딥페이크의 진위를 구별하는 것이 매우 어려울 수 있습니다.
딥페이크는 어떻게 만들어지는가?
쉽게 말해, 원본 비디오의 특정 부분(예: 얼굴)이 유사하게 보이는 가짜로 대체됩니다. 이러한 경우를 페이스스왑이라고도 하며, '오바마' 영상과 같은 예시가 있습니다.
하지만 딥페이크는 비디오에만 국한되지 않습니다. 딥페이크 이미지와 오디오도 존재하며, 가까운 미래에는 딥페이크 VR 아바타도 등장할 가능성이 있습니다.
출처: 디즈니
이러한 조작 뒤에 숨겨진 작동 방식은 주로 응용 프로그램과 기본 알고리즘에 따라 다양합니다.
디즈니 연구 논문에 따르면 인코더-디코더, GAN(Generative Adversarial Networks), 기하학 기반 딥페이크 등 여러 가지 기술이 활용됩니다.
하지만 이 글에서는 페이스스왑을 이용한 작동 방식에 초점을 맞출 것입니다. 페이스스왑은 다양한 알고리즘을 활용하여 원하는 결과를 얻을 수 있도록 지원하는 무료 오픈 소스 딥페이크 소프트웨어입니다.
딥페이크를 생성하는 주요 과정은 추출, 학습, 변환 세 단계로 나눌 수 있습니다.
#1. 추출
추출 단계는 미디어 샘플(원본 및 교체 대상)에서 관심 영역을 감지하고 추출하는 과정입니다.
하드웨어 성능에 따라 효율적인 탐지를 위한 다양한 알고리즘이 사용될 수 있습니다.
예를 들어, 페이스스왑은 CPU 또는 GPU 효율성에 따라 추출, 정렬, 마스크 처리 등의 다양한 옵션을 제공합니다.
추출 과정에서는 먼저 전체 비디오에서 얼굴을 식별합니다. 그런 다음 모든 얼굴의 중요한 특징(눈, 코, 턱 등)을 정렬하고, 마지막으로 관심 영역 외의 부분을 차단하는 마스크 처리를 수행합니다.
일반적인 하드웨어 환경에서 리소스 집약적인 알고리즘을 선택하면 결과물을 얻는 데 실패하거나 상당한 시간이 소요될 수 있습니다. 따라서 결과물 생성에 걸리는 전체 시간은 옵션 선택에 매우 중요합니다.
하드웨어 성능 외에도 입력 비디오의 특성(손 움직임이나 안경과 같은 얼굴 방해 요소가 있는지 여부 등)에 따라 옵션을 선택해야 합니다.
결론적으로, 추출 과정에서는 몇 가지 잘못된 탐지가 있을 수 있으므로 결과물을 정리해야 합니다(이에 대해서는 나중에 설명합니다).
결국 원본 영상과 가짜 영상(교체에 사용) 모두에 대해 추출 과정이 반복적으로 진행됩니다.
#2. 학습
학습 단계는 딥페이크 제작의 핵심 과정입니다.
학습은 인코더와 디코더로 구성된 신경망을 활용합니다. 추출된 데이터를 알고리즘에 공급하여 변환에 사용할 모델을 만듭니다.
인코더는 입력 데이터를 벡터 표현으로 변환합니다. 알고리즘은 벡터를 기반으로 얼굴을 다시 생성하도록 디코더를 학습시킵니다.
신경망은 반복 학습을 통해 원본과 비교하여 손실 점수를 부여합니다. 손실 값은 알고리즘이 반복 학습을 지속함에 따라 시간이 지남에 따라 감소하며, 미리보기 결과를 확인한 후 학습을 중단합니다.
학습은 시간이 많이 걸리는 과정이며, 일반적으로 반복 횟수와 입력 데이터의 품질에 따라 결과물의 품질이 향상됩니다.
예를 들어, 페이스스왑은 원본 이미지와 스왑 이미지 각각 최소 500장을 사용할 것을 권장합니다. 또한 이미지는 서로 크게 달라야 하며, 최상의 결과물을 위해 다양한 조명 환경과 각도에서 촬영해야 합니다.
페이스스왑과 같은 일부 응용 프로그램에서는 학습 중에 훈련을 중간에 중단하거나 나중에 다시 시작할 수 있습니다.
특히 출력물의 실감 정도는 알고리즘 효율성과 입력 데이터에 따라 달라지며, 하드웨어 성능에 의해 제약을 받을 수도 있습니다.
#3. 변환
변환 단계는 딥페이크 생성의 마지막 단계입니다. 변환 알고리즘에는 원본 비디오, 학습된 모델, 원본 정렬 파일이 필요합니다.
결과적으로 색상 보정, 마스크 유형, 출력 형식 등 다양한 옵션을 변경할 수 있습니다.
이러한 설정을 구성한 후 최종 결과물이 생성될 때까지 기다리면 됩니다.
앞서 언급했듯이, 페이스스왑은 다양한 알고리즘을 지원하며, 적절한 페이스스왑 결과를 얻기 위해 여러 설정을 조정할 수 있습니다.
이것이 전부인가요?
아닙니다!
지금까지 설명한 내용은 딥페이크 기술의 일부인 얼굴 교환에 불과합니다. 문자 그대로의 의미처럼 얼굴 교환은 딥페이크가 무엇을 할 수 있는지에 대한 대략적인 아이디어를 제공하기 위해 얼굴 일부만 대체합니다.
더욱 신뢰할 수 있는 교환을 위해서는 오디오(음성 복제로 더 잘 알려짐)와 프레임에 맞는 모든 요소를 포함하여 전체 체격을 모방해야 할 수도 있습니다.

이 영상에서는 무슨 일이 벌어지고 있는 것일까요?
딥페이크 제작자가 직접 촬영한 비디오(지난 몇 초에 표시됨)에 모건 프리먼의 합성 음성을 립싱크하고 머리를 교체한 것입니다.

결론적으로, 핵심은 얼굴 교환이 아니라 오디오를 포함한 전체 프레임에 있습니다.
유튜브에서 수많은 딥페이크 영상을 접할 수 있으며, 그 수준이 매우 현실적이어서 무엇을 믿어야 할지 혼란스러울 정도입니다. 효율적인 그래픽 카드를 갖춘 고성능 컴퓨터만 있다면 누구나 딥페이크 제작을 시작할 수 있습니다.
하지만 완벽함을 달성하기는 어렵고, 딥페이크의 경우 특히 그렇습니다.
사람들을 속이거나 혼란에 빠뜨릴 수 있는 설득력 있는 딥페이크를 만들기 위해서는 기술적인 숙련도가 필요하며, 1~2분 분량의 비디오를 처리하는 데 며칠에서 몇 주가 소요됩니다.
현재 이러한 알고리즘이 어느 정도 수준까지 도달했는지 알 수 있습니다. 하지만 이러한 응용 프로그램이 저사양 하드웨어에서 얼마나 효율적으로 작동할 수 있을지, 미래에는 어떻게 될지 등은 정부 전체를 불안하게 만들고 있습니다.
하지만 미래의 영향에 대해서는 자세히 다루지 않겠습니다. 대신 재미 삼아 직접 딥페이크를 만드는 방법을 알아보겠습니다.
(기본) 딥페이크 비디오 만들기
다음 딥페이크 앱 목록에서 밈을 만들기 위한 다양한 애플리케이션을 확인할 수 있습니다.
그중 하나가 바로 우리가 사용할 페이스스왑입니다.
시작하기 전에 몇 가지 확인해야 할 사항이 있습니다. 첫째, 다양한 감정을 표현하는 대상에 대한 고품질 비디오가 있어야 합니다. 다음으로 대상과 교체할 소스 비디오가 필요합니다.
또한 페이스스왑을 실행하기 전에 브라우저나 게임과 같이 그래픽 카드를 많이 사용하는 모든 응용 프로그램을 종료해야 합니다. 특히 VRAM(비디오 RAM)이 2GB 미만인 경우 더욱 그렇습니다.
1단계: 얼굴 추출
이 과정의 첫 번째 단계는 비디오에서 얼굴을 추출하는 것입니다. 이를 위해 입력 디렉토리(Input Dir)에서 대상 비디오를 선택하고 추출된 결과물을 저장할 출력 디렉토리(Output Dir)를 지정해야 합니다.

또한 감지기, 정렬기, 마스크 등 몇 가지 옵션이 있습니다. 각 옵션에 대한 자세한 설명은 페이스스왑 FAQ에 나와 있으며, 여기에서 내용을 다시 설명하는 것은 불필요합니다.
출처: 페이스스왑 FAQ
일반적으로 더 나은 이해와 적절한 결과물을 얻기 위해서는 문서를 자세히 검토하는 것이 좋습니다. 하지만 페이스스왑에는 특정 옵션 위에 마우스를 가져가면 나타나는 유용한 도움말 텍스트가 있습니다.

간단히 말해, 모든 상황에 맞는 보편적인 방법은 없으며, 최적의 알고리즘을 선택하여 설득력 있는 딥페이크를 만들기 위해 여러 설정을 조정해야 합니다.
참고로, 저는 다른 모든 옵션을 기본값으로 유지하고 Mtcnn(감지기), Fan(정렬기), Bisenet-Fp(마스크)를 사용했습니다.
원래는 S3Fd(최고 성능 감지기)와 몇 가지 다른 마스크 조합을 시도했습니다. 하지만 제 2GB Nvidia GeForce GTX 750Ti는 이러한 설정을 감당하지 못하고 과정이 반복적으로 실패했습니다.
결국 저는 낮은 기대치와 설정을 적용하여 결과를 확인할 수 있었습니다.
적절한 감지기, 마스크 등을 선택하는 것 외에도 설정 > 설정 구성에서 하드웨어 성능을 향상시키기 위해 여러 설정을 추가로 조정할 수 있습니다.

간단히 말해, 배치 크기, 입력 크기, 출력 크기를 가능한 한 낮게 설정하고, LowMem 등을 확인합니다. 이러한 옵션은 모든 상황에 적용되는 것은 아니며, 특정 섹션에 따라 다릅니다. 도움말 텍스트를 참고하면 최적의 옵션을 선택하는 데 도움이 될 것입니다.
이 도구는 얼굴을 추출하는 작업을 훌륭하게 수행하지만, 출력 프레임에는 모델을 학습하는 데 필요한 것보다 많은 정보가 포함될 수 있습니다(이에 대해서는 나중에 설명합니다). 예를 들어, 비디오에 여러 사람이 있는 경우 모든 얼굴과 대상 얼굴이 없는 일부 부적절한 감지가 있을 수 있습니다.
따라서 데이터 세트를 정리해야 합니다. 출력 폴더를 확인하여 불필요한 부분을 삭제하거나 페이스스왑 정렬 기능을 활용할 수 있습니다.

앞서 언급한 도구를 사용하여 필요한 얼굴만 하나의 폴더에 모으고 나머지는 삭제할 수 있습니다.
참고로, 소스 비디오에 대한 추출 과정도 반복해야 합니다.
2단계: 모델 학습
모델 학습 단계는 딥페이크를 만드는 데 가장 오래 걸리는 과정입니다. 여기서 입력 A는 대상 얼굴을 나타내고 입력 B는 소스 얼굴을 나타냅니다. 또한 모델 디렉토리(Model Dir)는 학습 파일이 저장되는 위치입니다.

여기에서 가장 중요한 옵션은 트레이너입니다. 다양한 확장 옵션을 제공하지만, 저의 하드웨어 환경에서는 Dfl-H128 및 경량 트레이너(구성 설정이 가장 낮은)가 적합했습니다.
다음은 배치 크기입니다. 배치 크기가 클수록 전체 학습 시간은 줄어들지만 더 많은 VRAM을 사용합니다. 반복 횟수는 출력 결과에 고정된 영향을 미치지 않으며, 충분히 높은 값으로 설정한 후 미리보기를 확인하고 학습을 중단해야 합니다.
미리 정해진 간격으로 시간 경과를 만드는 등 몇 가지 추가 설정이 있지만, 저는 모델을 최소한으로 학습시켰습니다.
3단계: 원본으로 교체
이 단계는 딥페이크 생성의 마지막 단계입니다.
일반적으로 시간이 많이 걸리지 않으며, 다양한 옵션을 사용하여 원하는 결과를 빠르게 얻을 수 있습니다.

위 이미지에 표시된 것처럼 변환을 시작하기 위해 선택해야 하는 몇 가지 옵션이 있습니다.
입력 및 출력 디렉토리, 모델 디렉토리 등 대부분의 옵션은 이미 앞에서 설명했습니다. 한 가지 중요한 것은 대상 비디오의 정렬 파일(.fsa)을 참조하는 정렬(Alignments) 옵션입니다. 정렬 파일은 추출 과정에서 입력 디렉토리에 생성됩니다.
특정 파일이 이동되지 않은 경우 정렬 필드를 비워 둘 수 있습니다. 그렇지 않은 경우 파일을 선택하고 다른 옵션으로 이동할 수 있습니다. 하지만 추출 과정을 정리한 경우 정렬 파일도 정리해야 합니다.
정렬 파일 정리 도구는 도구 > 정렬에 있습니다.
작업 섹션에서 Remove-Faces를 선택하고, 원본 정렬 파일과 정리된 대상 얼굴 폴더를 선택한 다음, 오른쪽 하단에서 Alignments를 클릭합니다.

이렇게 하면 최적화된 얼굴 폴더와 일치하는 수정된 정렬 파일이 생성됩니다. 교체하려는 대상 비디오에 이 파일이 필요하다는 점을 기억해야 합니다.
몇 가지 추가 구성 옵션에는 색상 조정 및 마스크 유형이 있습니다. 색상 조정은 마스크 블렌딩을 제어하며, 여러 설정을 시도하고 미리보기를 확인하여 최적의 옵션을 선택할 수 있습니다.
마스크 유형은 더욱 중요합니다. 이 역시 사용자의 기대치와 하드웨어 성능에 따라 달라집니다. 일반적으로 입력 비디오의 특성도 고려해야 합니다. 예를 들어, Vgg-Clear는 장애물이 없는 정면 얼굴에 잘 작동하지만, Vgg-Obstructed는 손짓, 안경 등 장애물이 있는 얼굴에도 잘 작동합니다.
다음으로, 작성기 옵션은 원하는 출력에 따라 몇 가지 선택지를 제공합니다. 예를 들어, 비디오를 렌더링하려면 Ffmpeg를 선택할 수 있습니다.
전반적으로 성공적인 딥페이크를 만드는 핵심은 몇 가지 결과물을 미리보고, 시간 여유와 하드웨어 성능에 따라 최적화하는 것입니다.
딥페이크의 다양한 활용
딥페이크는 긍정적인 측면, 부정적인 측면, 위험한 측면을 모두 가지고 있습니다.
긍정적인 활용 사례로는 역사 수업에서 과거 인물을 재현하여 학습 참여도를 높이는 것을 들 수 있습니다.
또한 온라인 학습 플랫폼에서 텍스트를 비디오로 생성하는 데 사용되기도 합니다.
가장 큰 수혜를 받는 분야 중 하나는 영화 산업입니다. 영화에서 실제 배우가 스턴트 연기를 직접 하는 것처럼 보이게 만들 수 있으며, 스턴트맨이 위험에 처할 수 있는 상황을 방지할 수도 있습니다. 또한 다국어 영화 제작도 훨씬 쉬워질 것입니다.
불행하게도 나쁜 의도로 딥페이크를 사용하는 사람들도 많습니다. 현재까지 가장 많이 활용되는 딥페이크는 포르노 업계에서 유명인의 얼굴을 포르노 배우로 바꾸는 것입니다(Deeptrace 보고서에 따르면 96%).
또한 딥페이크는 일반 여성에게도 악용되고 있습니다. 이러한 피해자들은 소셜 미디어 프로필에 딥페이크 제작에 사용되는 고품질 사진이나 비디오를 가지고 있는 경우가 많습니다.
또 다른 위험한 활용 사례는 비싱, 즉 음성 피싱입니다. 한 사례로, 영국에 기반을 둔 회사의 CEO가 독일 모회사의 ‘CEO’ 지시에 따라 243,000달러를 이체했지만, 나중에 그것이 딥페이크 전화였음을 알게 된 경우가 있습니다.
더욱 위험한 것은 딥페이크를 사용하여 전쟁을 유발하거나 항복을 요구하는 것입니다. 최근에는 우크라이나 대통령 볼로디미르 젤렌스키가 자신의 군대와 국민에게 현재 진행 중인 전쟁에서 항복하라고 말하는 영상이 공개되었습니다. 하지만 이번에는 영상 품질이 조악하여 딥페이크임이 밝혀졌습니다.
결론적으로 딥페이크는 다양한 분야에서 활용될 수 있으며, 이러한 기술은 이제 막 시작 단계에 있습니다.
이러한 상황은 다음과 같은 중요한 질문을 던져줍니다…
딥페이크는 합법인가?
이 문제는 주로 지역 행정 기관에 달려 있습니다. 하지만 허용되는 행위와 그렇지 않은 행위를 명확히 규정하는 법률은 아직 부족한 상황입니다.
그럼에도 불구하고 분명한 것은 딥페이크를 사용하는 목적, 즉 의도에 따라 다르다는 것입니다. 교체 대상을 불쾌하게 하지 않으면서 누군가를 즐겁게 하거나 교육하려는 경우에는 해가 거의 없을 것입니다.
반면에 악의적인 목적으로 사용되는 딥페이크는 관할권에 관계없이 법으로 처벌해야 합니다. 또 다른 애매한 영역은 저작권 침해이며, 이 부분에 대한 적절한 논의가 필요합니다.
하지만 다시 한번 강조하지만, 합법적인 딥페이크 활용에 대한 자세한 내용은 해당 지방 정부 기관에 확인해야 합니다.
경계를 늦추지 마세요!
딥페이크 기술은 인공지능을 활용하여 누구든 원하는 말을 하게 만들 수 있습니다.
인터넷에서 보는 모든 것을 믿지 마십시오. 이것이 우리가 따라야 할 첫 번째 조언입니다. 잘못된 정보가 넘쳐나고 있으며, 그 영향력은 점점 더 커지고 있습니다.
딥페이크 제작이 쉬워짐에 따라 딥페이크를 식별하는 방법을 배우는 것이 중요합니다.