[튜토리얼]인공지능 생성이미지 인물의 포즈를 내 멋대로! <ControlNet 깨부수기 -2->
본문 바로가기
ai 만들어보기(feat ai artwork lab)

[튜토리얼]인공지능 생성이미지 인물의 포즈를 내 멋대로! <ControlNet 깨부수기 -2->

by mement0mori 2023. 7. 4.

가지고 있는 기능이 많고 폭넓기 때문에 하나하나 설명하려고 든다면 한도 끝도 없이 길어질 수도 있는 게 ControlNet입니다. 다 알면 좋지만, 일단 제 기준에서 재미나고 필요한 기능 위주로 짧게 하나씩 정리해보도록 하겠습니다. 그래서 제가 ControlNet을 어떻게든 써보려고 한 이유인 포즈 잡기 부터 일단 정리해보겠습니다. 역시나 원리보다는 현상 위주의 튜토리얼로서 긴 설명보다는 그냥 이대로 따라해서 결과물이 나오는 걸 우선합니다. (그래도 길어질 듯...;;)

3줄 요약 프로세스 먼저.

1. 레퍼런스 포즈 이미지 입력

2. ControlNet 작동

3. 프롬프트 입력 및 이미지 생성

끝입니다.

1. 레퍼런스 포즈 이미지 입력

이건 뭐든 좋습니다. 저 사진의 포즈를 한 이미지를 생성하고 싶은데? 하는 사진을 입력하면 됩니다. Single Image 탭에 이미지를 끌어오거나 클릭해서 업로드하면 됩니다. 저는 이런 포즈를 한 여성의 사진을 입력해보겠습니다. 이 포즈를 기억해주세요!

2. ControlNet 작동

사진 아래 쪽의 설정을 다음과 같이 적용해보겠습니다.

중요한 건 Enable 체크해서 ControlNet이 작동하도록 해야하고, Contro Type에서 OpenPose를 선택합니다. 그러면 preprocessor하고 model이 자동으로 선택될텐데 위처럼 나오도록 합시다. 다른 설정은 건드리지 말고 일단 둡니다.

3. 프롬프트 입력 및 이미지 생성

프롬프트는 그냥 블루드레스 입은 여성으로 입력해보겠습니다. 모델은 dreamshaper를 썼습니다. 아래 설정대로 바로 뽑아보겠습니다.

두두두두두 그 결과는!?

캬!!!!!!! 어떻습니까? 위에 입력한 이미지와 거의 똑같은 포즈를 가진 이미지가 생성됐습니다. 프롬프트를 좀 더 만지면 내가 원하는 이미지에 더 가까워질 수도 있겠습니다. 일단 여기까지만 해도 ControlNet의 OpenPose를 이용하는 프로세스 자체는 대강 이해하셨으리라 믿습니다.

자 지금부터는 약간 심화버전, 원리까지는 아니고 2번 단계에서 그냥 넘어간 ControlNet의 여러 변수와 설정에 대해 알아보도록 합시다. 이건 귀찮으시면 넘어가도 됩니다. ㅎㅎ

Control Weight는 말그대로 가중치입니다. 이 숫자가 커지면 커질수록 프롬프트에 영향을 강하게 미칩니다. 1이면 입력한 이미지와 거의 똑같이 나온다는 거죠. 0.1이면 저 포즈 안나옵니다. 0.1로 했을 땐 이렇게 나옵니다.

seed 고정을 안해서 사람이 바꼈지만 아무튼 뭐 그렇다는 겁니다. 그리고 control step은 sampling step이랑도 비슷한데 starting이 0이고 Ending이 1이면 처음부터 끝까지 다 작동하는 것이고, 0이고 0.3이면 30% 정도까지만 작동하고 멈추는 겁니다. 해보시면 아시겠지만 스타트가 0이고 0.2만 돼도 포즈 잡습니다. ㅋㅋㅋ 초기 잠재공간 설정이 중요하기 때문에 그런 겁니다. 그러니까 스타트가 느린 경우 더 큰 영향을 받는다는 겁니다. 뭐 이렇게까지 알 필요 있나 싶긴 한데... 아무튼 혹여 원하는 이미지가 안 나오는 경우 그렇게 알고 건드려보면 되겠습니다.

preprocessor resolution 은 말 그대로 이미지 전처리 단계의 해상도를 설정하는 건데, 우리가 기준 이미지를 입력하는 경우 이 전처리 단계가 먼저 진행돼서 포즈를 설정합니다. 위 과정을 진행하면 그 전처리 포즈 설정 이미지도 같이 결과물에 나오죠. 이렇게요.

이건 굳이 해상도를 높이지 않아도 결과물 잘 나오던데, 일단 내용만 아시면 되겠습니다.

Control Mode는 프롬프트와 ControlNet 가중치 사이의 균형을 어디에 둘 거냐 입니다. 프롬프트가 더 중요하면 그쪽에 가중치를 더 줍니다. 원하는 결과물이 안 나오는 경우 위쪽의 가중치하고 함께 만지면서 작업해보시면 되겠습니다.

Resize Mode는 ControlNet이 제어하는 이미지와 최종 생성물 사이에 사이즈 차이가 있을 때 어떻게 할 거냐는 건데 보시다시피 그냥 resize. crop resize, resize full이 있는데, 비율상 문제가 생길 수 있으니 어지간하면 뒤에 두 개 중에 골라봅시다. ㅎㅎ기본 세팅은 보이는대로 입니다.

아래 체크박스는 생성이미지를 ControlNet 입력 이미지로 자동 보내기인데 뭐 굳이 할 필요 있나 싶네요. 아무튼 이 정도 알면 이제 원하는대로 포즈 잡는 것 정도는 잘 하실 수 있을 겁니다.

그런데.. 하나만 더 하고 넘어가죠. OpenPose의 Preprocessor를 보면 OpenPose 뿐만 아니라 다른 것들이 보일겁니다. 이렇게요.

프리프로세서 렌더 이미지보면 기능을 단번에 알 수 있습니다.

openpose = 입력이미지에서 포즈 따와서 생성이미지에 적용

openpose_hand = 입력이미지에서 포즈+손가락을 따와서 생성이미지에 적용

openpose_face = 입력이미지에서 포즈+얼굴 표정을 따와서 생성이미지에 적용

openpose_faceonly = 입력이미지에서 얼굴 표정만 따와서 생성이미지에 적용

openpose_full = 입력이미지에서 포즈+얼굴표정+손가락 전부 따와서 생성이미지에 적용

당연히 따올 게 많을 수록 자원소모가 많고 잘 될 확률이 낮아지겠죠? 잘 보시면서 테스트하면 되겠습니다. 그럼 이만~

 

출처 - AI ARTWORK LAB : 네이버 카페 (naver.com)

 

AI ARTWORK LAB : 네이버 카페

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

cafe.naver.com