본문 바로가기
Portfolio

윤석열 대통령 딥페이크 만들기 (2/3)

by 민트초코맛꼬깔콘 2024. 1. 30.

※ 작년에 약 일주일 동안 퇴근하고 진행하면서 겪었던 내용들과 느꼈던 경험들을 기록으로 남겨 놓고자 합니다.

※ 해당 블로그에서는 그 어떠한 수집된 데이터 및 요청에 의한 결과물을 별도로 제공드리지 않습니다.
※ 해당 게시물은 개인 스터디 목적으로 진행되었고 경험 공유를 위해 작성되었음을 말씀드립니다.

 


 

2부. 딥페이크 영상 만들기


1. 개요

딥페이크(deepfake)란 인공지능을 기반으로 활용한 인간 이미지 합성 기술이다. 기존에 있던 인물의 얼굴이나, 특정한 부위를 영화의 CG처리처럼 합성한 영상편집물을 총칭한다. 과거 인물의 사진이나 영상을 조악하게 합성해 게시하던 것이 디지털 기술과 인공지능의 발전으로 몇 단계 정교해진 결과라 볼 수 있다. 원리는 다음과 같다. 합성하려는 인물의 얼굴이 주로 나오는 고화질의 동영상을 통해 딥러닝하여, 대상이 되는 동영상을 프레임 단위로 합성시키는 것이다. 병렬연산장치[2]의 성능에 따라 속도와 품질이 결정된다.
(출처: 나무위키: https://namu.wiki/w/%EB%94%A5%ED%8E%98%EC%9D%B4%ED%81%AC)

나무위키에서 말하는 딥페이크의 개요는 위와 같이 설명하고 있습니다. 간단하게 말해 딥페이크 기술에 대해 큰 범주에서 말하자면 이미지, 영상, 음성 분야 등에서 진짜 같은 가짜를 만들어 내는 것입니다. 해당 포스팅에서는 실존하는 인물을 딥페이크 기술을 이용해서 실제 같은 영상을 만들어보려고 합니다. 물론 사용하는 모델, 목적, 내용 등에 따라 똑같은 대상을 만들어 낼 수도 있고, 전혀 모르는 제3의 인물을 만들어 낼 수도 있습니다. 

딥페이크 기술은 영상 제작, 교육 분야, 개인정보 비식별화, 엔터테인먼트 분야 등에서 긍정적으로 활용될 수 있는 부분이 많지만 정치적, 사회적인 면으로 부정적으로 활용되는 경우도 너무 많습니다. 해당 포스팅에서는 윤리적인 부분에 대해서는 언급하지 않으며 개인의 선택에는 책임이 따를 것이라 생각합니다.

 

2. 진행내용

빠르게 Prototype을 만드는 것이 목적이었기에 DeepFaceLab( https://github.com/iperov/DeepFaceLab )을 활용하였습니다. 상세 사용방법에 대해서는 별도로 설명하지 않도록 하겠습니다. 이미 나온 지 오래되었고 이미 다른 사람들이 충분히 쉽게 설명을 해주셔서 추가적인 방법 설명은 무의미하다고 생각됩니다. 제가 진행하면서 참고했던 사이트 중 몇 가지를 아래에 링크하도록 하겠습니다.

그래도 대략적인 순서만 적어보자면,

  1. 합성할 타겟이 되는 영상(src)과 합성될 배경이 되는 영상(dst)이 필요합니다. 
    영상 길이가 엄청 길 필요는 없습니다. 저는 5분 내외의 영상으로 했던 것으로 기억이 나네요
  2. 영상에서 이미지 파일로 프레임을 추출합니다.
  3. 추출된 프레임 내에서 얼굴을 탐지합니다.
  4. 추출된 얼굴에서 특징점을 찾고 기울기와 마스크를 구합니다.
  5. Alignment 합니다.
    2~5번까지의 과정은 src, dst 영상 둘 다 동일하게 적용합니다. 대부분 default 값이 설정되어 있기 때문에 잘 모르시면 그냥 default값으로 진행하시면 됩니다. 아래 사진은 2~5번까지의 진행 과정을 나타내었습니다.
  6. 학습을 진행합니다.
    저는 Quick96 모델을 사용했고 다양한 모델을 비교해 보면서 테스트하시면 됩니다.
    DeepFaceLab을 이용하여 학습을 진행하게 되면 아래와 같은 UI를 통해 진행과정을 볼 수 있습니다.

    제가 사용했던 장비 스펙 및 환경은 아래와 같습니다.
    • Win10, 5600X, GeForce RTX 3070 8GB, RAM 32GB
    • model: Quick96
    • batch size: 4
    • iter: 400,000
    • 소요시간: 약 12시간
  7. Merge
    마지막으로 한 프레임 한 프레임씩 보면서 배경 인물 위에 생성된 얼굴이 잘 조화가 되도록 크기, 색상 등을 보정하는 작업입니다. 하다 보면 어느 정도 감이 생기고 빠르게 할 수 있습니다.

팁을 드리자면 아무래도 타겟 영상과, 배경 영상의 인물이 같은 성별, 얼굴의 형태 윤곽과 헤어스타일이 비슷한 사람으로 하는 것이 더 사실적인 결과물이 나타나게 됩니다. 그리고 배경 영상의 얼굴 움직임이 정적이지 않고 상하좌우로 움직임이 있다면 타겟 영상 또한 인물의 움직임이 있는 영상을 구해서 활용하는 것이 좋은 결과물로 나타낼 수 있습니다.

 

3. 결과물

아래의 사진에서 윗줄은 트럼프 전 대통령과 윤석열 대통령의 영상으로 새로운 영상을 생성한 모습이며 아래는 일론 머스크와 윤석열 대통령의 영상으로 새로운 영상을 생성한 모습니다.

 

아래에서 영상으로 결과물을 확인할 수 있습니다.

 

4. 예제

 

5. References

 


 

윤석열 대통령 딥페이크 만들기 (1/3) - https://fuerte.tistory.com/157

 

윤석열 대통령 딥페이크 만들기 (1/3)

※ 작년에 약 일주일 동안 퇴근하고 진행하면서 겪었던 내용들과 느꼈던 경험들을 기록으로 남겨 놓고자 합니다. ※ 해당 블로그에서는 그 어떠한 수집된 데이터 및 요청에 의한 결과물을 별도

fuerte.tistory.com

 

윤석열 대통령 딥페이크 만들기 (2/3) - https://fuerte.tistory.com/158

 

윤석열 대통령 딥페이크 만들기 (2/3)

※ 작년에 약 일주일 동안 퇴근하고 진행하면서 겪었던 내용들과 느꼈던 경험들을 기록으로 남겨 놓고자 합니다. ※ 해당 블로그에서는 그 어떠한 수집된 데이터 및 요청에 의한 결과물을 별도

fuerte.tistory.com

 

윤석열 대통령 딥페이크 만들기 (3/3) - https://fuerte.tistory.com/159

 

윤석열 대통령 딥페이크 만들기 (3/3)

※ 작년에 약 일주일 동안 퇴근하고 진행하면서 겪었던 내용들과 느꼈던 경험들을 기록으로 남겨 놓고자 합니다. ※ 해당 블로그에서는 그 어떠한 수집된 데이터 및 요청에 의한 결과물을 별도

fuerte.tistory.com