배경 속에 AI 인물 그리기 – 스테이블 디퓨전 Inpaint 활용

스테이블 디퓨전을 활요하면 멋진 배경 속에 AI 인물 그리기는 이제 누워서 떡먹기가 되었습니다. 물론 현실감을 살리는 후보정 작업은 전문가들의 손을 거치지 않고서는 여전히 어려운 분야지만, 적어도 비전공자가 그래도 봐줄만한 그림을 만들어 낼 수는 있습니다. 본 글에서는 스테이블 디퓨전을 활용해 배경 속에 AI 인물 그리는 방법에 대해 간략히 살펴보도록 하겠습니다.

배경 속에 AI 인물 그리기 결과

먼저 스테이블 디퓨전으로 사람 하나 없는 배경 속에 AI 인물을 그려넣은 결과를 보면 다음과 같습니다.

배경 속에 AI 인물 그린 결과

그림자의 디테일, 인물의 피부질감 및 표정 등을 살려내지는 못했기에 합성한 티가 나긴 하지만, 언뜻 보면 그럴듯한 이미지가 만들어진 것처럼 보이기도 합니다. 특히 직접 그려서는 엄두도 못낼 이미지를 스테이블 디퓨전의 도움으로 시도라도 해볼 수 있다는 점에서는 꽤 의미가 있습니다.

게다가 후보정을 잘 하시는 분들이나 이미지 편집을 업으로 삼고 계신 분들께는 빠른 시간에 사람을 뚝딱 만들어 사용할 수 있기 때문에 스테이블 디퓨전이 굉장히 유용할 수 있습니다. 그럼 이제 실제로 위 사진을 만드는 과정을 함께 살펴보도록 하겠습니다.

배경 속에 AI 인물 그리는 과정

스테이블 디퓨전으로 배경 속에 AI 인물을 그리는 전체 과정은 다음과 같이 크게 3단계로 나눌 수 있습니다.

이미지 준비

먼저 인물을 그려넣을 배경 사진과 참고할 인물 사진을 준비합니다. 본문에서는 호텔 식당에서 식사를 앞두고 있는 인물을 그려보기 위해 아래와 같이 식당 사진과 식사중인 인물 사진을 준비했습니다.

배경 속에 AI 인물 그리기 위한 준비 이미지

왼쪽 이미지가 원본으로 사용될 이미지이고, 오른쪽 이미지에서 여성의 포즈를 따서 원본 이미지에 새로운 인물을 그려넣고자 함입니다. 포즈만 따면 되기 때문에 구글링을 통해 필요한 사진을 구하면 됩니다.

포지 참고 사진의 경우 워터마크 등이 있어도 포즈를 식별하는데 문제만 없다면 상관없고, 포즈의 수정이 가능하기 때문에 생각해둔 포즈와 적당히 유사하기만 하면 됩니다. 만약 정 구하기 어렵다면, 포즈 참고 사진 없이도 진행하실 수 있습니다.

인물 포즈 잡기

이제 인물의 포즈를 잡기 위해 포즈 참고 사진을 3D 오픈포즈 (3D openpose)로 불러옵니다. 3D 오픈포즈는 Automatic1111 WebUI 확장기능으로 Extensions 탭에서 Install from URL을 통해 아래 깃허브 주소를 입력하여 설치하여 사용하셔도 되며, 설치가 귀찮은 분들은 설치 없이도 웹브라우저에서 바로 사용 가능합니다.

3D 오픈포즈에서는 내가 업로드한 이미지에서 오픈포즈 스켈레톤을 추출하는 Detect From Image와, 화면에 원본 이미지를 비교해서 띄워줄 Set Background Image 메뉴를 활용할 예정입니다.

먼저 포즈를 러프하게 생성하기 위해 상단 메뉴에서 File > Detect From Image를 눌러 위에서 준비한 포즈 참고 이미지를 업로드 합니다.

3D 오픈포즈로 인물 포즈 추출

그럼 위 그림과 같이 사진으로부터 인물의 포즈가 추출됩니다. 이제 이 포즈를 활용하기 위해 File > Set Background Image를 눌러 원본이미지를 업로드 합니다.

원본 이미지에 인물 포즈 합성

그 후 위 그림과 같이 인물의 포즈를 내가 원하는 대로 적당히 수정합니다. 기본적으로 인물의 각 점을 누르면 회전이 가능하며, 마우스 좌클릭 드래그는 3차원 인물 방향 수정, 우클릭 드래그는 뼈따구(스켈레톤)의 이동, 휠을 돌려 스켈레톤 크기의 확대 및 축소가 가능합니다. 포즈를 잡는데 바닥면이 거슬리는 경우 Setting > Show Grid를 꺼주시면 됩니다.

인물의 포즈를 잡은 뒤에는 위 이미지 하단에 프리뷰가 있는데요, 그 프리뷰 최상단의 재생버튼 같은 것을 눌러줍니다. 그러면 프리뷰 이미지 우측으로 4개의 이미지가 쭉 생성되는데 그 중 첫번째 이미지가 바로 검은 바탕에 뼈따구만 그려진 이미지로, 우리가 활용할 이미지입니다. 해당 이미지는 마우스 좌클릭하면 바로 다운로드 됩니다.

다운로드 받은 뼈따구 이미지의 사이즈가 원본 이미지랑 다를 수 있습니다. 이 때는 당황하지 않고 이미지 편집 툴을 이용해 뼈따구 이미지의 높이를 원본이미지랑 동일하게 맞추고, 이미지를 중앙으로 배치하면, 위에서 우리가 배치했던 그 상태 그대로 뼈따구가 위치하게 됩니다. 포토스케이프X 같은 툴을 쓰면 쉽게 작업이 가능하며, 만약 이같은 작업이 어렵다면, 해당 이미지를 컨트롤넷에서 그대로 사용(crop & resize로)하셔도 됩니다.

인물 그리기

이제 마지막으로 실제로 인물을 그리는 단계입니다. 원본이미지 배경 속에 AI 인물을 그려넣기 위해 img2img의 인페인트 기능과 컨트롤넷 기능을 함께 활용합니다. 인페인트 탭에서 아래를 참고하여 설정값을 세팅합니다.

인페인트 설정

Mask mode에서는 inpaint masked를 선택하고, 디노이징 강도를 0.9로 매우 큰 값을 주고 있습니다. 이는 배경 이미지에는 없는 새로운 인물을 만들어내야 하기 때문입니다. 해상도는 원본 이미지의 크기를 고려해 적당한 값을 입력합니다.

컨트롤넷 설정

컨트롤넷 세팅에서는 Upload independent control image를 활성화 한 뒤 아까 만든 뼈다구 이미지를 올려줍니다. Control Type은 OpenPose로, 전처리기(Preprocessor)는 없음(none)으로 두고, Resize Mode에서 Crop and Resize를 선택합니다. 앞서 이미 원본 이미지와 크기를 맞추신 분들은 Resize 모드 셋 중 어떤 옵션을 사용해도 상관 없습니다.

배경 속에 AI 인물 그리기

이제 만드려는 인물을 묘사하는 프롬프트를 작성하고, 원본 이미지의 인물이 생성되기 바라는 위치(뼈따구를 그렸던 위치)에 인페인트 마스킹을 해줍니다. 이 때 마스킹 영역을 확대해서 보고싶으신 분들은 원본이미지 좌 상단의 i를 누른 뒤 단축키 S를 누르면 전체 화면에서 마스킹을 하실 수 있습니다.

전체화면 마스킹

마스킹이 끝난 후에는 Generate 버튼을 눌러 인물을 생성합니다. 한 번에 원하는 이미지가 나오지 않는 경우가 대부분입니다. 프롬프트와 마스킹 영역을 조금씩 수정하면서 반복적으로 생성하시다가 적당히 마음에 드는 이미지가 나오면 저장하시면 됩니다.

이렇게 얻은 이미지는 원본 이미지와 사이즈가 동일하기 때문에 이미지 편집 프로그램으로 불러와서 불필요한 부분을 지우고, 다듬어 이미지를 완성합니다. 필요에 따라 다듬기 후 다시 img2img로 불러와 WebUI에서 디테일링을 해줍니다.

배경 속에 AI 인물 디테일링

조금 뭉개진 얼굴은 타일리샘플 등을 이용해 디테일을 살리고, 마찬가지로 인물과 배경의 경계 또한 위 사진처럼 인페인트를 해서 디테일을 살려줍니다. 능력이 되시는 분들은 포토샵으로 불러와 마지막으로 리터칭을 해주시면 더욱 그럴듯한 배경 속에 AI 인물을 만들어낼 수 있습니다.