본문 바로가기
머신러닝, 딥러닝/컴퓨터비전

DeepFaceLab 사용 방법 (Window)

by 고경수 2023. 1. 16.

이번에 대한상공회의소 주관 WE-MEET Project에 참여하게 되었다.

 

맡은 주제는 '인공지능기반 쌍방향 자율대화가 가능한 디지털 휴먼 개발' 이며 소속된 팀은 딥페이크 팀이다.

 

딥페이크 생성을 위해 DeepFaceLab이란 오픈소스를 사용하게 되었는데 이 오픈소스의 사용법을 기록한다.

 

 

프로그램 다운로드

https://github.com/iperov/DeepFaceLab

 

GitHub - iperov/DeepFaceLab: DeepFaceLab is the leading software for creating deepfakes.

DeepFaceLab is the leading software for creating deepfakes. - GitHub - iperov/DeepFaceLab: DeepFaceLab is the leading software for creating deepfakes.

github.com

위의 깃허브 링크를 들어가서, Releases의 Windows (Mega.nz)에 들어가 'DeepFaceLab_DirectX12' 다운로드 해준다.

제작 과정

우선 2가지 영상을 준비해야한다. workspace 폴더에 2가지 영상의 이름을 변경하여 집어넣는다.

- data_src = 합성할 얼굴 동영상

- data_dst = 배경 동영상

 

다시 DeepFaceLab_DirectX 폴더로 돌아와 살펴보면 다양한 배치 파일들이 있는데,

우리는 다음과 같이 12개의 배치파일만을 사용할 것이다. 나머지 배치 파일은 따로 저장해두거나 삭제하여도 무방하다.

 

실행순서는 다음과 같다. (초기 실행 후 빠르게 작업물을 생성해내는 방법 또한 뒤에서 소개할 것이다.)

+ cmd 창에 무언가를 입력하라는 것이 나오는데 모두 다 Enter를 누르면 된다!

동영상을 이미지 추출하는 과정

2) extract images from video data_src

3) extract images from video data_dst FULL FPS

 

추출된 이미지에서 얼굴을 Detect 하는 과정

4) data_src faceset extract

4.2) data_src sort

4.2) data_src util faceset pack

5) data_dst faceset extract

5.2) data_dst sort

5.2) data_dst util faceset pack

 

Train

6) train Quick96

 

p - 미리보기 업데이트

enter - 학습 종료

경험상 대략 30000 iter 정도면 학습이 잘 되었던 것 같다.

 

Merge

7) merge Quick96

해당 파일을 실행하면

다음과 같은 화면이 뜨는데, 여기서 Tab 키를 누르면 동영상 화면으로 전환이 된다. 그 상태에서

W 키를 누르면 얼굴 주변을 깎아내고

E 키를 누르면 blur 처리를 해준다.

W와 E로 자연스럽에 얼굴을 맞춘 후에

마침표 키를 꾹 눌러서 100%를 만들고, Esc를 눌러서 나가면 된다.

 

8) merged to mp4

이후에 merged to mp4를 눌러 result 파일을 생성한다. workspace에 보면 result가 생성된 모습을 확인할 수 있다.

 


이후에 

1) clear workspace로 data_dst, data_src를 자르고 detect한 결과 및 모델 학습결과를 초기화 하고 동일하게 학습을 거치거나 학습된 내용을 이어서 사용하는 방법이 있다. 아래에선 학습된 내용을 그대로 이어서 사용하는 법을 소개한다.

빠르게 결과물을 생성하는 방법

위와 과정은 비슷하나, 몇가지 생략하는 과정이 있다.

src가 동일하고, 배경인 dst만 변경해야 하는 경우에는 src를 또 다시 잘라내고 얼굴을 검출하고 학습할 필요가 없다.

이에 따라 workspace에서

 

1. data_src 폴더는 그대로 놔두고,

2. data_dst폴더는 비워준다.

 

이후에 DeepFaceLab_DirectX 폴더로 돌아와서

dst 와 관련한 배치파일과 merge와 관련된 배치파일만을 실행시키면 된다.