KT그룹희망나눔재단에서 1차 합격했다는 소식을 문자로 받고, 활동 포부를 담은 창의적이고 유쾌한 15초 숏츠 영상을 제출하라는 연락을 받았다.
- 어떻게 유쾌한 영상을 만들까?
- 요즘 유행하거나 재미있는 밈(meme) 영상들을 활용하거나 오마주하자!
- 어떻게 창의적인 영상을 만들까?
- AI인재를 육성하는 사업인 만큼, ‘AI기술을 활용해서 만들어 보자!
- 활동 포부는 어떻게 담을까?
- 직접 말하는 것을 녹화한 영상보다는 메리트가 있진 않지만 자막으로 넣어 보자!
결론: 영상을 어떻게 만들 것인가
Mufasa x Hypeman spreading good vibes around the world- Bag Raiders- Shooting Stars
세계로 가(around the world)라는 밈 영상이 생각났다.
기분이 우울할 때 보기만 해도 기분이 좋아지는 영상이어서 기억에 남았던 것 같다.
이 영상에 얼굴을 합성해 주는 AI기술을 활용해서, "KT와 함께 AI를 통해 세계로 나아가자!"라는 메시지를 담은 영상을 만들기로 하였다.
원래는 위 원본 영상에 나의 얼굴로 Face Swap 작업을 하려고 했다.
하지만, 원본 영상은 화질이 너무 낮고 피부색이 다른 원인으로 작업이 원활하게 진행되지 않아,
‘미남재형’이라는 유튜브의 패러디 영상을 활용하기로 하였다.
세계로 가 재형ㅋㅋㅋㅋㅋㅋ
내 얼굴 사진을 말하는 동영상으로 만들어주는 Talking-Head기술과도 고민하였지만, 좀 더 유쾌하기 만들기 위해 위 밈 영상을 오마주 하기로 하였다!
-> 동영상 내의 '미남재형'님의 얼굴을 내 얼굴로 Face Swap
숏츠 영상을 제작하기 위한 Face-Swap모델 or 툴
Deep Fake
[AI Tech] 클릭 3번으로 딥페이크 완성 Complete deepfake in 3 clicks
roop-one-click-deepfake.ipynb
Colaboratory notebook
colab.research.google.com
유튜브를 찾아보던 중.. 쉽게 딥페이크(Deep fake) 기술로 Video Face Swap을 하는 영상을 발견했다.
Colab을 통해 엄청 간단한 소스코드까지 제공해 주어서 직접 한 번 사용해 보았다.
결과는 처참하였다.. 초반에 얼굴이 크게 나오는 부분만 사진을 갖다 붙인 느낌이었다.
아쉽게도 실행환경에서 내 드라이브에 저장하는 것을 깜빡하고 코랩 외부환경에 저장하여, 결과 영상은 날라 간 것 같다..
deepfakes/faceswap
GitHub - deepfakes/faceswap: Deepfakes Software For All
GitHub - deepfakes/faceswap: Deepfakes Software For All
Deepfakes Software For All. Contribute to deepfakes/faceswap development by creating an account on GitHub.
github.com
Github의 #faceswap 토픽 중 가장 많은 star(49.2k)를 보유한 deepfakes의 faceswap모델이다.
Linux, Widnows 환경에서 모두 실행할 수 있고, GUI형태로도 제공하여 이 모델 또한 비교적 사용하기 쉬운 형태이다.
나는 Window11, Anaconda 가상환경에 세팅하였고 CLI환경, GUI환경을 모두 지원하여 나는 사용하기 편한 GUI로 진행했다.
Feature extract
먼저 Fac Sawp을 진행할 Target영상(A)에서 영상 내 얼굴들의 Feature extract를 하고,
Feature가 될 나의 얼굴(B)에서 feature extract를 한다. (세팅값은 deafult값으로 진행)
이후 A와 B에 대해 추출한 데이터로 학습을 진행하려 했으나 역시 Error가 발생하였다.
- Target동영상(A)에서 추출한 특징 데이터는 407개,
- Feature가 되는 나의 얼굴(B)에서 추출한 특징 데이터는 1개,
학습을 진행하기 위해서는 A, B 데이터셋에 대해 각각 최소 25개 이상의 특징 데이터(image)가 있어야 한다는 것이다.
그리고, 성공적으로 학습시키기 위해서는 500~5000장의 feature이미지를 권장한다고 한다.
평소 사진 찍는 것을 별로 안 좋아해서 내 사진이 별로 없기 때문에,
나의 얼굴 대신 인터넷에 많은 Elon Musk의 얼굴로 Face Swap을 진행해 봐야겠다..
Image crawling
원하는 검색어와 이미지 개수를 지정하면,
구글에서 검색 후, 이미지를 저장하는 간단한 프로그램을 만들어 Elon Musk의 이미지 3000개 크롤링을 진행하였다.
Elon Musk-face feature extract
Elon Musk를 target으로 수집한 3000장의 이미지 셋에 대한 Feature extract 작업은 약 4분이 소요되었다.
Train (JaeHyeong to Elon Musk model)
- ‘재형’님의 영상에서 추출한 feature 데이터 407개,
- ‘일론 머스크’의 3000장의 사진에서 추출한 feature 데이터 중 407개
각 데이터셋 A, B에 대한 feature 데이터의 개수를 통일하기 위해, ‘재형’의 feature의 개수인 407개로 맞추어서 진행하였다.
두 개의 feature데이터셋을 가지고 ‘재형 to 일론머스크’ 모델의 학습을 실시했다. (설정값은 모두 기본값으로 진행)
- Analysis: 각 학습 세션별로 시간, 끝, 소요시간, 배치크기, 반복 수 들을 실시간으로 업데이트하면서 보여준다.
- Graph: Loss값의 기록을 그래프로 보여준다.
- Preview: 현재 세션(배치)의 학습 과정 및 결과를 보여준다.
맨 밑에는 소요 시간, 현재 세션에서의 반복 수, A(재형)와 B(일론머스크)에 대한 Loss가 표시된다.
모델 학습 시, 세팅값 (기본값)
"config": {
"learning_rate": 5e-05,
"epsilon_exponent": -7,
"save_optimizer": "exit",
"autoclip": false,
"allow_growth": false,
"mixed_precision": false,
"nan_protection": true,
"convert_batchsize": 16,
"loss_function": "ssim",
"loss_function_2": "mse",
"loss_weight_2": 100,
"loss_function_3": null,
"loss_weight_3": 0,
"loss_function_4": null,
"loss_weight_4": 0,
"mask_loss_function": "mse",
"eye_multiplier": 3,
"mouth_multiplier": 2,
"mask_dilation": 0.0,
"mask_blur_kernel": 3,
"mask_threshold": 4
}
A(Jaehyeong), B(Elon Musk)에 대한 lowest_avg_loss
- A: 0.016091774873435497
- B: 0.01015968106687069
소요 시간: 약 10시간
Convert
1. Input으로 face-swap을 진행할 target영상을 넣어주고
2. 학습의 결과로 ‘models’디렉토리에 저장된 ‘JaeHyeong2 ElonMusk’ 모델을 통해 face-swap을 진행했다. (기본값 세팅)
소요시간은 1분 이내로 진행되었다.
Output
Face Swap을 완료한 영상을 보았을 때 Elon Musk의 얼굴 특징이 보이긴 하지만 아직은 어색한 모습이다.
아무래도 학습 시, 권장 feature 데이터 수가 각각 500~5000개지만 407개로 진행하였기 때문으로 추측된다.
아쉽게도 제출하기까지 시간이 얼마 남지 않아, 더 많은 데이터셋을 통한 학습은 추후에 진행하려고 한다.
AKOOL
숏츠 영상 제출까지 시간이 얼마 남지 않아, 직접 학습시켜서 영상을 제작하기엔 시간 상 무리가 있다고 판단하였다.
그래서 나는 Video Face-Swap기능을 제공하는 툴 or 사이트를 찾아 활용하기로 했다.
Video Face Swap 기능을 제공하는 사이트들은 MicoCreate, Vidonz, ismartta 등 여러 사이트가 존재하였지만,
역시 모두 무료버전에서는 제약 및 한도가 존재하였다.
내가 사용한 AKOOL이라는 사이트 또한 무료 Credit의 한도가 존재하였지만,
무료 버전을 사용하였을 때 시각적으로 가장 결과물이 좋았다.
또한, AKOOL에서는 구독 시, 3일을 무료로 사용할 수 있어 나는 AKOOL을 사용하기로 결정하였다!
AKOOL에서는 Face Swap을 포함해 Realistic Avarar, Video Translate, Talking Photo 등 여러 서비스를 제공한다.
Face Swap
1. Face Swap을 진행하기에 앞서 먼저 Target이 될 사진 or 동영상을 업로드
영상을 업로드하면 영상을 자동으로 분석해 주고 아래와 같이, 영상 내의 얼굴을 Detecting 한다.
2. Face Swap을 진행할 얼굴 사진을 업로드 및 선택
옵션
- Re-age: Swap 할 얼굴의 나이를 입력으로 넣어주는 것으로 추정, 얼굴이 여러 개인 경우 모두 동시에 조정된다고 한다.
- Face enhance: ‘얼굴 디테일 향상’으로 이 옵션 또한 얼굴이 여러 개가 존재할 경우 모두 동시에 조정, 동영상의 화질이 1080p 이상인 경우에만 사용하는 것을 권장한다고 한다.
나는 정확히 모르는 Re-age옵션은 기본값인 0으로 두고, Face enhance기능을 on으로 하고 Face Swap을 진행하였다.
Output
#Shorts #face-swap #around the world #세계로 가 #ai #elonmusk
결과물은 위 영상과 같다.
Deepfake를 이용한 방법, 직접 faceswap모델을 학습시켜 사용한 경우보다 훨씬 자연스럽고 feature의 얼굴 특징이 적절히 들어간 것을 확인할 수 있었다.
그래서 활동 포부 숏츠 영상은?
물론 Elon Musk의 얼굴을 통해 모두 Test 해보고, 이후에 내 얼굴 사진을 Feature로 사용하여 Face Swap을 진행하여, 자막을 달아 숏츠 영상을 만들어보았다.
#Shorts #KT디지털인재장학 #활동포부영상 (face-swap, 세계로 가!)
[KT디지털인재장학금 지원기] 포스팅이 끊이지 않도록 2차 면접 준비를 철저히 해서 돌아와야겠다..
'Experiences > KT디지털인재장학' 카테고리의 다른 글
[KT디지털인재장학 지원기] 2차 면접 후기, 최종 합격!! (10) | 2024.05.20 |
---|---|
[KT디지털인재장학 지원기] 1차 서류 합격! (0) | 2024.04.29 |