- 글쓴시간
- 분류 기술,IT/스테이블 디퓨전
Stable Diffusion - ControlNet
컨트롤넷. 특정한 구도로 Stable Diffusion 이미지 생성시 그려주는 SD 의 확장이다. 구도는 유사한 이미지를 사용해 입력해주거나, 새롭게 그려줄 수 있다. 그냥 윈도에 있는 그림판으로도 그려줄 수 있다. 그정도만 그려줘도 충분하다.
ControlNet 의 원리. 뭔소리인지는 나도 모르지만 뭔가 마지막 직전에 + 해주는 것 같다
- Stable Diffusion web UI 에서는 익스텐션 탭에 가면 쉽게 설치할 수 있다.
확장을 설치했으면, https://huggingface.co/lllyasviel/ControlNet/tree/main/models 에서 원하는 모델을 받은 후, (필자는 control_sd15_openpose.pth 을 받았다) \stable-diffusion-webui\extensions\sd-webui-controlnet\models 에 넣어준다.
설치후 UI 를 재로드 하면 (Apply and restart UI 를 클릭하면) txt2img 탭의 아래에 Control Net 패널이 보인다.
- 이미지를 생성하는 설정은 설치 전과 동일하게 한 후, 이미지넷에 구도에 참고할만한 이미지를 넣어준후 설정해준다. Model 에서 openpose 를 선택하고 바로 아래 Enable, Low VRAM 을 클릭한 후, 이후 Generate 를 누르면 이미지넷에 넣어준 이미지와 유사한 구도의 이미지가 생성된다.
- 이미지 생성시 메모리를 더 사용한다. 7.9 GB -> 8.9 GB 로 말이다. ControlNet 에서 사용하는 모델(.pth 파일)이 5.7 GB 정도 되는데 뭔가 최적화 되서 들어가는 듯. 아래화면은 512x512 이미지를 이미지넷을 사용해서 생성 중인 상태다.
생성할때 아래와 같이 콘솔에 표시된다.
Loading model: control_sd15_openpose [fef5e48e]
Loaded state_dict from [경로\stable-diffusion-webui\extensions\sd-webui-controlnet\models\control_sd15_openpose.pth]
ControlNet model control_sd15_openpose [fef5e48e] loaded.
- 요즘 나오는 AI 이미지는 이를 사용해서 만든다고 생각한다. ControlNet 을 사용해 시드번호를 일치시키지 않고도 손가락이 제대로 나오는 포즈를 고정시킬 수 있기 때문이다. SD 로 그리기 너무 어려웠는데 그나마 이걸 사용하면 손가락을 숨기기 쉬워진다.
- 신체 부위에서 손가락이 그리기 어려운 편에 속하는데 워낙 관절이 작은데다 꺾이는 곳이 많고, 그만큼 다양한 각도에서 보면 처음보는 구도가 나오기 때문이다. 일러스트레이터들은 자기 손가락으로 형태를 취해보고 그대로 그리면 되는데 AI 는 그걸 못하기 때문. 그래서 AI가 그린 포즈가 일정해졌다. 그리고 ControlNet 을 사용해 어느정도 고정시킬 수 있게 되었다. 또한 로라 같은걸 사용해 새로운 포즈와 그에 따른 손가락을 새롭게 학습시키는게 어렵진 않으니 그나마 다행.
- OpenPose 를 사용하는 경우 OpenPose 에디터 확장도 같이 설치하자.