본문 바로가기
[TIP] Stable Diffusion

[SD. TIP] controlnet으로 원하는 포즈를 추출하자

by doobam 2023. 4. 7.
반응형

안녕하세요. 이번에는 stablediffusion의 extension cotrolnet을 이용해서 모델의 포즈를 따오고 변형하고 적용하는 방법에 대해 간단하게 다뤄보겠습니다.

 

1. controlnet 설치

sd webui를 실행한 후 extesions > install from URL에 들어가서 "https://github.com/Mikubill/sd-webui-controlnet" 붙여 넣어주고 Install을 합니다. 그리고 SD를 재실행하시고 UI를 리로딩해 주시면 설치가 되신 화면을 볼 수 있습니다.

controlnet 설치하기

2. controlnet 메뉴 구성

컨트롤이 설치되면 txt2img와 img2img 하단에 ControlNet이라는 메뉴가 생긴 것을 확인할 수 있는데요. 옆에 있는 ◀ 버튼을 통해 세부 옵션을 확인할 수 있습니다.

Controlnet 세부 메뉴

세부 옵션에 체크박스에 Enable을 체크해서 controlnet을 사용하며, 램이 부족할 경우 Low VRAM을 체크하시면 됩니다. Preprocessor(전처리기)에서 내가 원하는 스타일의 처리방법을 선택하여 Model에서 선택한 방법으로 적용할 수 있습니다.

여러 가지 처리기가 있으나 내가 원하는 모델의 동작을 추출하기 위해서는 Openpose를 사용하면 됩니다.

 

Resize Mode는 3가지 방법이 있으나 저는 기본적으로 Scale to Fit으로 사용합니다. 

 

이 포스팅에서는 모델의 원하는 포즈를 생성하는 목적으로 글을 작성하니 다른 사용법에 대해서 깃허브(https://github.com/Mikubill/sd-webui-controlnet)를 참고해주세요

 

3. openpose : 모델에서 포즈 추출하기

추출하고 싶은 포즈를 하고 있는 이미지를 controlnet에 등록합니다. 저는 유튜브에서 가져왔는데요. 원하는 포즈를 찾지 못한 경우 본인의 사진을 직접 찍어서 올려도 됩니다.  사진을 등록한 후 Enable 체크 후 Preprocessor와 Model을 둘 다 openpose와 controlnetPreTrained_openpose로 선택하여 줍니다. 

Openpose로 포즈 추출하기

그리고 이미지를 생성해 주면 아래와 같이 두장의 이미지로 생성된 것을 볼 수 있습니다.

openpose로 생성된 화면

이대로 원하는 포즈를 추출해서 프롬프트를 적당하게 가감하여 다른 스타일의 이미지로 생성할 수 도 있고요. 이 뼈대를 따로 저장해 놨다가 나중에 사용하거나 이 포즈를 직접 변경해서 사용할 수 있습니다. (OpenPose Editor 이용) 

 

4. openpose 뼈대 활용하기

생성된 pose 뼈대는 따로 저장해놨다가 필요할 때 뼈대만 가져와서 사용할 수 있습니다. 저장한 pose를 컨트롤넷으로 가져옵니다. 이번에는 포즈가 생성되어 있으므로 전처리 과정을 생략합니다. preprocessor에서 'none'으로 변경하고 model에서는 controlnetPreTrained_openpose를 선택해 줍니다. 3번에서 진행할 때는 이미지를 기본으로 포즈를 추출해야 되므로 전처리기 선택이 필요한 거고 이미 포즈 뼈대가 있으면 전처리 과정을 생략합니다. 이제 원하는 그림이 나올 때까지 Generate 해주면 됩니다!

반응형

댓글