본 글에서는 Roop Unleashed라는 기술을 활용해 빠르고 간편하게 인물의 얼굴을 바꿔 영상을 만드는 방법을 살펴보고자 합니다. AI 영상 기술이 빠른 속도로 발전하면서 일관성있는 인물 영상이 속속 등장하고 있지만, 여전히 가정의 PC로는 구현이 어려운 고스펙 하드웨어를 요구하는 영역입니다. 때문에 현재 대부분의 개인이 만든 스테이블 디퓨전 기반 AI 영상은 기존 영상에 가상의 얼굴을 입히거나, 약간의 수정을 가하는 방식으로 생성되고 있습니다. 본문에서 소개드리는 Roop Unleashed는 원본 인물의 표정이나 시선을 잘 살려 굉장히 높은 품질로 빠르게 얼굴을 바꿔줍니다.
Roop Unleashed 설치
만약 ffmpeg를 이미 설치하신 경우(환경변수 경로 설정까지 완료) roop unleashed 설치는 매우 간단합니다. 먼저 아래 깃허브 페이지에서 Releases로 이동합니다. FFMPEG 설치가 되지 않은 분들은 아래 글을 참고하여 설치 및 환경변수 경로 설정까지 진행하시기 바랍니다.
현재 최신 버전은 4.0인데요, assets에서 최신 버전의 installer 압축파일을 다운로드 받아 압축을 해제합니다.
압축을 해제한 뒤 window_run.bat 배치파일을 실행합니다. 배치파일을 실행하면 자동으로 설치가 진행되고, 설치를 마치면 127.0.0.1:7680(localhost:7860)으로 프로그램 서버가 실행됩니다.
Roop Unleashed 사용방법
설치가 간단히 끝났으므로, 이번 장에서는 설정값과 얼굴 변환 예시 결과를 살펴보도록 하겠습니다.
설정값
먼저 Roop Unleashed 프로그램을 설치한 후 실행 하면 아래와 같은 화면을 마주할 수 있습니다. 여러 칸이 있지만 직관적으로 잘 짜여져 있는 구성이므로 쉽게 따라 실행하실 수 있습니다.
위 화면에서 각 설정값을 순서대로 간략히 살펴보면 다음과 같습니다.
- 변경할 얼굴 이미지 업로드 : 1개 이상의 변경할 얼굴 사진을 업로드 합니다.
- 감지된 얼굴 목록 : 1번에서 업로드한 사진속 얼굴을 자동으로 감지해 목록으로 보여줍니다. 여기서 원하는 얼굴을 선택합니다.
- 원본 영상 또는 사진 업로드 : 변경할 대상이 되는 원본 영상이나 사진을 업로드 합니다. 이때 jpg, png는 물론 gif 및 영상도 업로드 가능합니다.
- 원본에서 변경할 얼굴 선택 : First Found는 원본 소스의 모든 프레임에서 인공지능이 가장 먼저 찾은 1개의 얼굴을 변경합니다. 이때 얼굴을 발견하는 순서는 좌에서 우로, 위에서 아래로 진행되므로 좌측 상단에 위치한 인물의 얼굴이 먼저 감지되고 변경됩니다.
- 변경할 얼굴 유사도 : 0에 가까운 값을 줄수록 변경할 얼굴에 가까워집니다.
- 얼굴 블렌딩 정도 : 원본 얼굴과 변경할 얼굴을 얼마나 자연스럽게 합할지를 결정합니다. 높을수록 더욱 매끄럽게 병합합니다.
- 얼굴 블렌딩 후처리 : 후처리 방식을 지정합니다. 주로 GFPGAN을 사용하면 무난합니다.
위 설정값들을 잘 조정한 뒤 아래 Start 버튼을 누르면 알아서 변환이 시작됩니다. Start 버튼 아래의 Open Output Folder를 누르면 변환이 완료된 사진 또는 영상 파일이 있는 폴더가 열리며, 굳이 결과 폴더로 이동하지 않더라도 우하단의 미리보기 탭에서 변환 결과를 확인할 수 있습니다.
변환 결과 예시
위 2인은 모두 스테이블 디퓨전으로 생성한 인물입니다. 아래는 두 인물 사진을 사용해 간략히 얼굴을 변환해본 예시 결과 입니다.
최근 즐겨보고 있는 졸업의 티저영상 2컷에서 얼굴을 바꿔본 결과입니다. 좌측부터 각각 원본, 1번이미지 2번이미지를 사용해 변환한 영상입니다. 원본영상의 길이는 약 2.5초며 각각 변환시 걸린 시간은 11초 정도입니다. 블로그에 올리다보니 용량의 제한으로 어쩔 수 없이 짧은 영상에 화질도 좋지 않아 자세한 비교는 어렵지만, 대략적으로 인물의 눈코입이 굉장히 자연스럽게 변경되었으며, 눈동자 또한 원본과 마찬가지로 자연스럽게 표현되어 인물의 시선과 표정까지도 잘 변환되는 모습입니다.
시선 처리
사실 Roop Unleashed를 활용하면 빠르게 영상의 얼굴을 바꿀 수 있기 때문에 간단한 쇼츠나 릴스 등 SNS 숏폼 영상 생성에는 최적화된 툴인 것 같습니다. 물론 100% 얼굴이 일치하는 느낌은 아니지만, 그래도 타겟 얼굴이 꽤나 자연스럽게 블렌딩 되어 들어가기 때문에, 결과 영상과 원본 영상이 확실히 다른 사람이란 것 정도는 알 수 있습니다.
여기서는 Roop Unleashed를 다른 방식으로 스테이블 디퓨전에 활용해보고자 합니다. 바로 실사 인물의 시선처리입니다. 스테이블 디퓨전으로 인물의 얼굴을 바꿔 생성해보신 분들이라면, 로라 등을 활용해 나만의 고정 얼굴로 바꾸는 것은 간단히 해결 가능하지만, 인물의 시선처리는 프롬프트 또는 컨트롤넷만으로 제어하는 것이 생각보다 난이도가 매우 높다는 것을 경험으로 아실 것입니다. 아래는 원본 이미지에서 인물의 얼굴만 마스킹하여 Denoise 값을 변경하며 인페인트를 진행한 결과입니다.
Denoise 강도 0.4부터 얼굴의 형태가 드러나긴 하지만, 이미 인물의 시선이 원본과는 다른 화면을 바라보는 시선으로 바뀌는 것을 볼 수 있습니다. 강도를 0.6까지 올리면 확실히 얼굴은 원하는 모습으로 바뀌었지만 시선도 함께 새로 그려진 모습입니다.
컨트롤넷을 활용해도 마찬가지입니다. 위 예시는 DW 오픈포즈, Canny를 적용해 Denoise 강도를 0.6까지 올려 생성한 이미지이지만, 여전히 원본의 시선은 제어하지 못하는 모습입니다.
위 이미지는 마지막으로 Roop Unleashed로 얼굴을 바꾼 이미지에서, 눈을 제외한 얼굴의 나머지 부위를 모두 마스킹하고 인페인트를 진행했을 때의 결과입니다. 이로써 원하는 얼굴로, 원본 이미지의 시선까지 완벽히 카피한 이미지를 생성할 수 있게 되었습니다.