ai 만들어보기(feat ai artwork lab)

올릴까말까 고민하다 올립니다... 금단의 스킬! 딥페이크deepfake! <Adobe + roop + Ebsynth 모조리 깨부수기>

mement0mori 2023. 7. 27. 13:38
 

[튜토리얼] 100% 무료 내 컴퓨터(windows)로 인공지능 이미지 만들기

https://stable-diffusion-art.com/install-windows/ 요 내용을 기반으로 합니다. ​ 인공지능 이미지 생성, 제일 쉬운 건 역시 요즘 우후죽순 생기는 이미지 생성 사이트를 이용하는 겁니다. 그런데 그거 좀 제

istor-y.tistory.com

인공지능을 활용한 딥페이크 기법인데 여러모로 악용될 여지가 있습니다. 부정할 수 없죠. 하지만 때에 따라서는 굉장히 유용히 쓸 수 있는 콘텐츠 제작 기법이기도 합니다. 제가 참여한 작품 EBS의 <공상가들>도 비슷한 기법을 활용해 제작하기도 했습니다. 최근 각광받는 가상의 디지털 인플루언서나 아이돌 콘텐츠 제작에도 충분히 쓰일 수 있고요.

다른 곳에서는 거의 99% ffmpeg를 사용한 튜토리얼을 올려뒀던데 저는 adobe의 after effect, media encoder 등을 활용해서 제작해보도록 하겠습니다. 따라서 이 방법이 훨씬 더 기존 영상제작자나 실제 콘텐츠 제작을 생각하는 사람에게 더 친화적이고 익숙한 워크플로우라고 생각합니다. 툴만 있으면 더 간단하고 쉽기도 하고요. 혹시나 adobe 툴을 잘 모르거나 없어서 ffmpeg을 활용한 방법을 알고 싶다면 유튜브를 보세요. ㅋㅋㅋ

오늘 만들어볼 건 이런 겁니다. 먼저 원본 영상을 봅시다. (gif 파일)

저걸 이렇게 바꿀 겁니다.

신박하죠?;;;ㅋㅋㅋㅋ알아보시겠죠? 합성된 인물은 니콜라스 케이지입니다.;;;; 첫 번째껀 잭블랙 혀놀림이 워낙 현란해서ㅋㅋ 제대로 나오지 않았지만;; 일단 해봅시다.

0. 준비

먼저 Ebsynth를 설치합니다. 이거 아주 신박한 툴입니다. 합성된 이미지 딱 한 장만 있어도 시퀀스 이미지 형태의 영상에 자연스럽게 합성을 해줍니다. 물론 중간중간 키프레임용 이미지가 더 있다면 훨씬 더 좋은 결과를 만들 수 있죠. 이건 나중에 더 짚어보도록 합시다.

아래 사이트에 가서 Ebsynth를 다운받습니다.

https://ebsynth.com/

용량도 얼마 안 됩니다.(그나마도 샘플 프로젝트 용량ㅋㅋㅋ) zip 파일을 받았을 겁니다. 아무데나 원하는 곳에 압축을 풀면 끝입니다. 일단 sample project 폴더 안에 keys하고 video 폴더가 있을 겁니다. 그 안에 있는 파일들은 싹 지워버리세요. 우리가 하고 싶은 걸로 채워넣겠습니다.

이건 튜토니까 이렇게 구구절절 설명하는데 프로젝트project 폴더 구성이 keys, video 두 개라는 것만 기억하시면 됩니다.

다음은 roop를 설치합니다. 이건 faceswap, 한마디로 인공지능으로 대상 원본 이미지의 얼굴만 싹 바꿔주는 스테이블 디퓨전 확장기능extension입니다. 이 또한 아주 신박한 기능이죠~너무 쉽고~ 너무 잘 되고~.;;;

스테이블 디퓨전 webUI를 실행해서 roop 확장기능extension을 설치합니다. 이 또한 매번 하는 거니까 길게 설명하지 않습니다. 아래 주소를 이용해서 설치!

https://github.com/s0md3v/sd-webui-roop.git

끝나고 webUI를 재실행하면 이런 식으로 roop 탭이 보일 겁니다.

자 마지막으로 adobe 툴은 다 있다는 가정 하에 본격 출발합니다.

1. 데이터셋 준비

(애펙은 길게 설명하지 않겠습니다~)

일단 after effect로 새 프로젝트를 시작한 다음 deepfake에 쓸 원본 영상을 컴포지션composition에 올립니다. 저는 잭 블랙 주연의 영화 tenacious D를 불러왔습니다. 그다음 아래처럼 타임라인에서 쓸 만한 부분의 영역을 선택합니다.

다음은 아래처럼 png sequence를 설정해서 출력해줍니다. 아래처럼 설정해야 시퀀스 넘버링이 0부터 됩니다~ (Media Encoder는 더 쉽습니다. 걍 파일명 00.png 이런식으로 해두면 알아서 넘버링합니다)

출력 output폴더를 아까 설치한 Ebsynth\sample project\video로 선택하고 파일명 설정은 아래처럼 해줍니다. 그다음 render 하면 끝입니다.

video폴더에 이렇게 넘버링된 png시퀀스가 주루룩 올라가있죠.

원본파일 준비 끝~ 이제 스테이블 디퓨전 webUI로 갑시다.

2. img2img + roop

img2img에 아까 video 폴더에서 시퀀스의 제일 첫 번째 이미지를 불러옵니다. 제 경우는 00000.png겠죠?

프롬프트는 아무것도 입력하지 않고 비워둬도 됩니다.

이미지의 사이즈는 우리가 불러온 이미지의 사이즈와 똑같이 바꿔줍니다. 전 HD사이즈니까 이렇게~

중요!! denoising strength를 0으로 둡니다. 아래처럼 설정~

자 이제 roop 기능을 열어봅시다.

우리가 합성하고 싶은 사람의 이미지를 불러옵시다. 저는 니콜라스 케이지의 사진을 한 장 불러왔습니다.

그다음 enable 체크!

네- 이게 끝입니다. generate 버튼을 눌러서 이미지를 생성해봅시다. 이렇게 나옵니다. ㅋㅋㅋ한 방에 아주 잘 뽑히죠? 인공지능의 무서움 ㅎㄷㄷ;;;

정리해봅시다. 위 설정의 의미를 아시겠죠? denoising strength를 0으로 둬서 다른 파라미터를 전부 무용지물로 만든다음, roop만 켜서 얼굴만 바꾼 것이죠.

그다음 이 이미지를 ebsynth\sample project\keys 폴더에 넣습니다. 파일명은 우리가 뒤바꾼 원본 시퀀스 이미지의 첫 프레임 파일명과 같아야 합니다. 이 경우는 00000.png 죠.

자 그럼 이제 ebsynth로 가봅시다.

3. Ebsynth 설정

작동법이 아주 단순합니다. 아래 그림처럼 두 개의 select 버튼을 차례로 누릅니다. 먼저 key frames는 keys 폴더 안에 있는 얼굴을 뒤바꾼 이미지00000.png를 선택합니다. 그다음 video는 video 폴더 안에 있는 첫 번째 프레임00000.png를 선택합니다.

그럼 저런 모양이 될 겁니다. synth 버튼을 눌러줍니다.

끝입니다. 진짜 간단하죠.

프로젝트 폴더로 가보면 out_00000 이런 폴더가 만들어져있고 그 안에 합성된 시퀀스 이미지가 아래처럼 쫙 들어있을 겁니다.

4. 합성 시퀀스를 비디오로 만들기

이번엔 adobe media encoder를 활용해보겠습니다. 애펙 자체에서 렌더하는 건 미디어 인코더만큼 다양한 옵션을 제공하지 않거든요. 애펙에서 합성한 시퀀스 이미지를 새 컴포지션으로 불러옵니다. 그다음 컴포지션 메뉴에서 add to media encoder Queue 선택~ 그다음은 뭐 영상이든 GIF든 설정해서 걍 뽑으면 됩니다. 저는 gif로 뽑았으니 아래처럼 설정했죠.

위에 플레이 표시를 누르면 렌더가 시작되고 완료되면 짜잔~

완성입니다.

5. tip

자- 여기서 팁 및 추가 설명 들어갑니다.

제가 처음에 보여드린 영상은 두 개죠. 하나는 잭 블랙이 아니라 옆에 있는 배우의 얼굴이 니콜라스 케이지로 바뀌었죠. 이거 어떻게 했을까요? 간단합니다. roop 설정 하나만 만져주면 됩니다. 바로 이 부분~ comma separated face number

저걸 저렇게 1로 바꾸면 잭블랙이 아닌 옆사람 얼굴이 바뀝니다. 이렇게요.

대충 아시겠죠? 만약 인물이 좌에서 우로 다섯 명 늘어서 있다면(상하로 있어도 좌측으로 나와 있으면 그 사람 우선) 0, 1, 2, 3, 4 이렇게 번호가 먹여져 있는 겁니다. 다섯 번째 사람 얼굴 바꾸고 싶으면 저 숫자를 4로 두면 되는 겁니다.

ebsynth의 경우 keyframe 이미지를 추가하면 더 좋은 결과물을 얻을 수 있습니다. 예를 들어 저처럼 저렇게 입 부분이 문제가 된다면 그 프레임 번호를 체크합니다. 그다음 그 부분 이미지만 roop를 이용해 잘 다듬어 생성한 다음~ keys 폴더에 추가해주면 됩니다. 물론 문제가 된 프레임 번호로 넣어야 겠죠. 그럼 그 부분에 그 이미지를 기준으로 다시 생성이 되는 겁니다. 많이 만들수록 결과물은 더 정교해지겠죠.

키프레임 넣으면 이런 형식으로 들어갑니다.

위에는 0~192까지 렌더인데 두 번째는 22번부터 끝까지일 건데, 앞에 0이 하나 더 있죠? 이게 뭔 의미냐면 22번 프레임으로 우리가 새로 이미지를 하나 넣었잖아요? 그럼 22번 기준으로 0번까지 역으로 렌더를 또 해줍니다. 이렇게 역으로 렌더되는 부분을 잘 이용해서 합성하거나 하면 더 스무스하게 이어붙일 수 있겠죠?

ebsynth에는export to AE 기능이 있습니다!!!!(애펙 써야하는 이유! 훨~~~씬 편해짐) 시퀀스를 전부 자동으로 기준 프레임까지 잡아서 애펙으로 보내줍니다.

아래처럼 composition까지 착 만들어서 보내줍니다. 걍 이거 렌더하면 됩니다. 이 맛에 애펙 씁니다.ㅋㅋ 저 겹쳐진 부분은 transition활용을 위해 역렌더된 부분입니다. 기본설정대로 쓰시면 될 거 같습니다. ㅎㅎ

내친 김에 ebsynth의 고급advanced 설정에 대해서도 알아봅시다. 키프레임keyframe을 추가할수록 프레임 사이에 부자연스러운 연결이나 깜빡임이 생기는 경우가 있는데 이걸 잡으려면 이 설정을 좀 건드려야 합니다.

mapping : 이 수치가 높아지면 새로 합성되는 프레임의 이미지가 전 프레임을 더 강하게 따라갑니다. 이게 낮으면 더 자유도가 주어지죠. deforum으로 치면 denoising strenthg 같은 거죠. 프레임이 튀는 것 같으면 좀 더 높은 수치를 주고, 흐름이 너무 딱딱하고 경직돼 있으면 낮은 수치를 주는 그런 거네요. 제작자는 5-50 사이를 추천하고 있습니다.

de-flicker : 요건 말그대로 프레임 사이의 깜빡임을 억제하는 겁니다. 이게 0이면 각 프레임이 독립적으로 페인팅된 것처럼 깜빡거린답니다. 0.3 ~ 2.0 사이 값을 추천합니다.

diversity : 요거는 어찌보면 mapping이랑도 비슷한데 이 수치가 낮으면 합성 이미지 패턴이 계속 반복되는 경향이 생기고 올라가면 좀 더 자유롭고 풍부하게 그리죠. 그렇다고 너무 높으면 멋대로 그리고요. 추천값은 1000 ~ 20000 사이입니다.

그렇게 다시 만들어본 혀놀림 합성입니다. (파일 용량 때문에 사이즈는 양해바랍니다. ㅎㅎ)

확실히 좋아졌죠?

또 하나! 그냥 생성 이미지 한 장만 가지고 짤막한 걸 만드는 경우, 원본 영상의 첫 번째 프레임을 반드시 keyframe으로 써야하는 건 아닙니다. 비슷한 다른 프레임의 이미지를 이용해도 됩니다. 그런 경우 더 결과물이 좋아지거나 나빠질 수 있습니다. 기준프레임에서 0까지 역렌더 된다고 했죠? 어쨌거나 테스트해볼 요소라는 거죠.

아무튼 여러 방법으로 퀄리티는 계속 올릴 수 있는 것 같습니다.

중요한 건~ 아주 쉽다는 거겠죠?ㅎㅎ 워크플로우만 잘 새겨두면 뭐든 만드실 수 있을 겁니다.

1. 원본 영상 시퀀스 준비 2. 합성될 이미지 생성 3. ebsynth로 합성시퀀스 생성 4. 영상 제작

여기서 1번을 직접 촬영할 소스로 활용한다고 생각해보죠. 앞서 언급했던 가상의 디지털 인플루언서나 아이돌의 영상을 아주 쉽게 제작할 수 있겠죠? 참 좋은 세상입니다.;;; 그럼 여기까지~

 

 

 

 

 

 

 

출처 - 올릴까말까 고민하다 올립니다... 금단의 스킬! 딥페이크deepfake! <Adobe + roop + Ebsynth 모조리 깨부수기> : 네이버 카페 (naver.com)

 

AI ARTWORK LAB : 네이버 카페

stable diffusion 기반 이미지 생성을 비롯한 자연어처리 인공지능을 연구합니다. 쉽고~ 재미있게~

cafe.naver.com