본문 바로가기
ML | DL/딥러닝 이론|실습

Deepfake faceswap 소프트웨어 설치, 사용법

by Leeys 2021. 4. 6.
반응형

Faceswap은 사진 혹은 비디오에 있는 얼굴을 인식하여,
얼굴 부분을 바꾸어주는 DeepLearning 기술 기반의 Software 입니다.


1. 사용자 환경

- Anaconda 4.9.2
- Window10
- Cuda 10.1



2. 설치 방법

faceswap 다운로드 주소
- faceswap.dev/download/

window나 linux 중 본인에 맞는 환경에 따라 설치

1) 경로설정




2) 본인 GPU에 맞는 설정 클릭(GPU 없으면 CPU로 설정)




3. 실행



1) Anaconda prompt으로 설치된 경로로 들어가서 해당 파일 확인

2) 본인 설정에 맞는 파일 라이브러리 설치 ex) pip install -r requirements_nvidia.txt
Tensorflow 버전에 맞는 GPU환경이 갖춰져 있어야함

3) plaidml-setup 입력 후
Q. Enable experimental GPU support? y
Q. Default device? 1
Q. Save settings to C:\Users\\.plaidml? y

3개의 질문에 사진처럼 입력 후
setx KERAS_BACKEND
plaidml.keras.backend 명령어 입력



* plaidml Error 발생시

pip uninstall plaidml
pip uninstall plaidml-keras
pip uninstall plaidbench
pip install plaidml==0.6.4

해당 명령어 모두 입력

4) Anaconda prompt 다시 실행 후 해당 경로에서 python faceswap.py gui 입력



5) 실행된 화면


반응형


4. Faceswap 사용법


1) Extract

동영상을 프레임 단위로 나타낼 수 있는 화면
기본설정으로 할 경우
Input Dir에 프레임 단위로 변환할 비디오를 넣고, Output Dir에 결과를 저장할 빈폴더 경로를 입력한 후 Extract를 클릭



Data
- Input Dir _ 전처리할 동영상 파일
- Output Dir _ 전처리된 동영상 프레임들의 output 폴더

Detector
- 일반적으로 최적화된 S3Fd

Aligner
- 일반적으로 최적화된 Fan

Masker
- Unet-DFL _ 대부분의 정면 얼굴을 스마트하게 분할하도록 설계된 신경망 마스크
- VGG_Clear _ 장애물이 없는 대부분의 정면 얼굴을 스마트하게 분할하도록 설계된 신경망 마스크
- VGG-Obstructed _ 대부분 정면 얼굴의 스마트 분한을 제공하도록 설계

Face Processing
- Min Size _ 0보다 높게 설정하면 얼굴이 되기에는 너무 작은 것들을 걸러냄

Output
- Size _ 전처리된 이미지의 크기
- Extract Every N _ 동영상 모든 프레임에서 추출할 경우 1로 설정

Output 폴더에는 얼굴이 아닌 사진들도 존재, Tools는 해당 폴더를 정렬해 face와 나머지사진들을 정리 해줌

Tools -> Sort
- Input에 Extract에서 프레임 단위로 변경한 폴더를 입력, Output에 정렬된 파일을 저장할 폴더를 입력
- Sort Settings에서 Face 클릭 후 Sort를 누르면 정렬된 Output 폴더를 얻을 수 있음



2) Train

학습을 할 수 있는 화면
기본 설정으로 할 경우 Input A, Input B, Model Dir에 해당하는 폴더경로를 입력 후 Trainer에서 원하는 model을 설정하고 Train 버튼을 누르면 학습




Faces
- Input A _ 원본 얼굴 사진 폴더
- Input B _ 바꿀 얼굴 사진 폴더

Model
- Model Dir _ 학습된 model 저장할 폴더
- Load Weight _ 학습된 가중치 불러올 폴더

Training
- Batch Size _ 배치사이즈 설정
- Iterations _ 학습횟수 설정

Saving
- Save Interval _ model을 디스크에 저장하는 빈도
- Snapshot interval _ model backup 용도로 사용, 해당 빈도마다 모델 저장

Preview
- Preview Scale _ 학습되는 동안 빈도수마다 바뀐 이미지를 보여줌

Augmentation
- Warp To Landmarks _ input A, input B의 유사점을 찾아 무작위로 비틈
- No Flip _ 데이터 양을 늘리기 위해 이미지를 무작위로 뒤집음
- No Augment Color _ input A, input B의 이미지의 색상을 비슷하지 않게 그대로 학습
- No Warp _ 이미지 뒤틀림이 없도록 함

주요 모델(trainer)
1) Lightweight _ 가벼운모델, 64px 사진으로 64px 사진을 만듬, GPU가 2GB 이하 일 경우 사용, 퀄리티가 떨어짐

2) Original _ 64px / 64px 로 기본적으로 사용하는 모델, 적당한 퀄리티, 시간

3) Iae _ 64px/64px로 Original 보다 좀 더 좋은 결과를 얻을수 있는 모델

4) Dfaker _ 64px/128px 업스케일을 사용해 높은 해상도의 결과를 얻을수 있음, 시간이 오래걸림, original 보다 좋은 결과를 얻을 수 있음

5) Unblanced _ 64-512px/64-512px 매우 강력한 모델로 많은 방법으로 역변환할 수도 있고, 커스텀마이징해서 쓸수있는 모델, 설정을 맞게 하지 않으면 잘못된 결과가 나올수 있음

6) DFL-H128 _ 128px/128px, 나머지는 original과 같음

7) Dfl-sae _ 64-256px/64-256px, 두가지 다른 네크워크 구조를 가지고 있는 모델, 하나는 original _ 베이스 다른 하나는 IAE 베이스로 됨, 커스텀마이징을 할 수 있는 모델

8) Villain _ 128px/128px 기본적인 설정으로, 적은 메모리에서 높은 화질의 모델을 얻을 때 사용

9) Realface _ 64-128px/64-256px, dfaker와 unbalanced 모델에서 가져온 것으로 좀 더 발전시킨 것인데 커스텀마이징이 매우 강력함, 커스텀마이징을 잘하지 못하면 오히려 결과가 이상할 수 있음

10) Dlight _ 128px/128-384px dfaker 모델을 베이스로한 모델, 얼굴을 업스케일 하는데 초점을 맞춰서 매우 높은 해상도를 만드는 모델



3) Convert

추론을 할 수 있는 화면
기본설정으로 할 경우 Input Dir에 원본 비디오를 넣고, Output에 추론된 결과를 얻을 폴더 경로 입력, Model Dir에 학습된 모델을 폴더경로를 불러와 Convert를 클릭



Data
- Input Dir _ 원본 비디오파일
- Output Dir _ 추론된 파일이 저장될 폴더
- Alignments _ 정렬 파일이 추출한 기본 위치에 있을 경우 필요없음, 없다면 해당 비디오의 .fsa 파일 경로를 입력
- Model Dir _ 학습된 model이 저장된 폴더

Color Adjustment
- None _ 색상 일치를 수행하지 않음
- Avg-Color _ 평균 색상을 가져와 바뀔 얼굴에 적용
- Color-Transfer _ 색상일치 알고리즘, 오른쪽 화면에서 옵션 선택가능
- Manual-Balance _ 바뀐 얼굴의 색상, 대비, 밝기를 수동으로 변경할 수 있음, 오른쪽 화면에서 옵션 선택 가능
- Match-Hist _ sorce와 target의 히스토그램을 일치 시킴, 오른쪽 화면에서 옵션 선택 가능
- Seamless Clone _ 이 방법은 단일 이미지에는 좋지만 비디오에서는 좋지않음, 비디오를 만드는 경우 사용하지 말아야함

Mask Type
- None _ 지정된 mask가 없이 바뀐 얼굴에 적용
- Unet-Dfl, Vgg-Clear, Vgg-Obstructed 설명은 위에 전처리 과정에 있음
- Components, Extended, Predicted는 원본얼굴에 맞게 바뀐얼굴을 적용

Writer
- Ffmpeg _ 비디오 파일로 변환할 때 사용
- Gif, Opencv, Pillow는 프레임단위 사진으로 변환할 때 사용

Frame Processing
- Output Scale _ 최종 출력의 크기를 조정, 100% scale은 720p -> 720p, 200%는 720p -> 1440p으로 변환
- Frame Ranges _ 변환 할 프레임 범위를 지정할 수 있음, 2000프레임의 비디오의 1500의 얼굴만 바꾸려면 500-1500 으로 입력



4) 주요 고급변환

왼쪽 상단에 Settings – Configure Settings로 파라미터를 설정할 수 있음



Train 메뉴에서 Face에 Converage를 조정해서 얼굴의 범위를 지정할 수 있음






Train – Tainer 메뉴 Color Augmentation 에서 원본 얼굴파일, 바뀔 얼굴파일의 색상을 조정 할 수 있음



Color Lightness _ 입력 이미지의 밝기를 위아래로 조절
Color Ab _ 원본 얼굴파일, 바뀔 얼굴파일이 학습될 때 해당값을 높이면 서로 피부색의 격차를 줄일 수 있음



정리

1. 동영상을 프레임단위 이미지로 바꾼후 얼굴이 아닌 이미지를 삭제해야함
2. GPU가 있다면 Realface, dfake, dlight 모델의 기본적인 설정으로도 화질이 높은 결과값을 얻을수 있음
3. 바뀔 얼굴에 데이터는 다양한 표정의 이미지가 많을수록 좋은 결과를 얻을수 있음
4. 피부색이 원본과 다를경우 Train – Tainer 메뉴 Color Augmentation에서 Color Ab 값을 높히면 피부색을 비슷하게 만들 수 있음
5. 학습은 epoch 50000 이상으로 해야 좋은 품질을 얻을 수 있음

반응형

댓글