Stable Diffusion webui의 무한한 확장 가능성 Controlnet(컨트롤넷) 기능부터 사용방법까지
안녕하세요 Allan입니다.
이번 포스팅 주제는 webui의 Exstension 중 하나인 Controlnet(컨트롤넷)입니다.
보통 Controlnet 하면 자세 지정해 주는 기능으로 알고 계시는 분들이 많은데 (제가 그랬음)
그건 Controlnet의 종류 중 하나인 openpose의 기능입니다.
그럼 Controlnet이 도대체 무엇인지, 그리고 각각 무슨 기능을 하는지, 어떻게 사용하는지 알아보도록 하겠습니다.
controlnet 설치 방법을 모르신다면, 혹은 아직 설치하지 않으셨다면
아래 포스팅을 보고 오시는 것을 추천드립니다.
webui openpose로 원하는 자세로 이미지를 생성해 보기
Ⅰ. ControlNet(컨트롤넷)이란?
ControlNet is a neural network structure to control diffusion models by adding extra conditions.
사실 저도 전공자가 아니기 때문에 자세한 의미는 모릅니다만,
대강 해석해 보면 "추가적인 조건을 추가하여 디퓨전 모델을 컨트롤하는 신경망 구조"라는 뜻입니다.
webui를 단지 사용하는 사용자 입장에서 자세한 뜻은 알지 못해도 괜찮으므로
diffusion model을 제어해 주는 역할을 하는 친구라고 생각하고 넘어가도록 하겠습니다.
Ⅱ. ControlNet 옵션값 설정
맨 위에서 부터 순서대로 알아보겠습니다.
1. Enable만 체크하고 넘어가 줍니다. Vram이 8기가 이하이신 분들은 Low VRAM도 체크하시는 것을 추천드립니다.
2. Preprocessor에서 어떤 Controlnet을 사용할지 선택해 줍니다.
Model에서는 Preprocessor에 맞는 다운받은 모델을 선택해 주시면 됩니다.
3. Weight : ControlNet으로 추출한 데이터를 생성할 이미지에 얼마나 많이 반영할 것인지 조절하는 기능입니다.
예를들면 1보다 더 높으면 현재보다 더 많이 반영하게 될 것입니다.
Guidance는 0,1그대로 둡니다.
4. Annotator Resolution : 데이터의 해상도를 얼마나 좋게 할지 설정합니다.
선택한 모델에 따라서 Annotator가 아니라 다른 단어인 경우도 있습니다.
다만, Resolution을 높인다고 무조건 좋은 것은 아니므로 적절하게 설정하는 것이 중요합니다.
처음 사용하시는 분은 512그대로 두시는 것을 추천드립니다.
5. Threshold A, B : 추출한 데이터에 영향을 주는 기능인 것 같은데
정확하게 어떤 기능이다! 라고 말씀 못드리는 점 죄송합니다..
그냥 기본값으로 설정하시는 것을 추천 드립니다.
6. Resize Mode : 왼쪽이랑 오른쪽 거는 짤리거나 찌그러지거나 하기 때문에
무조건 Scale to fit 체크하시는 것을 추천드립니다.
7. Canvas Width, Canvas Height : 추출한 데이터 이미지의 사이즈를 조절하는 기능입니다.
별로 신경안쓰셔도 됩니다.
Ⅲ. ControlNet의 종류/기능
webui를 켜셔서 Controlnet을 열어서 preprocessor를 클릭해 보면
다음과 같이 여러 항목들이 있는 것을 볼 수 있습니다.
여기에 있는 모든 모델들을 설명해 드리지는 못할 것 같고
자주 사용되는 몇몇만 소개해 드리도록 하겠습니다.
다운은 아래 사이트에서 받을 수 있습니다.
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
모델 다운받고 설치하는 방법은
포스팅 상단에 링크된 게시글에 설명해 놓았으니 참고해 주세요.
이미지를 통해서 각각이 어떤 기능을 하는지 직접 보도록 하겠습니다.
모든 이미지의 출처는 아래 링크입니다.
https://github.com/lllyasviel/ControlNet
자세한 내용 참고하시면 될 것 같습니다.
앞으로 나올 8개의 이미지의 이해를 돕기 위해서 설명을 해드리자면,
좌측은 ControlNet을 통해 데이터를 추출을 할 이미지이고
우측 첫 번째 이미지는 추출된 데이터 이미지(앞으로 result라 하겠습니다.),
그리고 첫 번째를 제외한 우측의 모든 이미지는 result를 기반으로 생성된 이미지 들입니다.
또한 이번 포스팅에서는 각각 어떤 기능을 하는지 대략적인 설명만 해 드리고
사용방법에 대해서는 차차 포스팅하여 링크를 걸어 두도록 하겠습니다.
1. Canny
우측 첫 번째 이미지를 보시면 스케치한 것 같은 이미지가 있습니다.
주어진 이미지를 스케치한 듯한 result로 바꿔주고 그를 통해서 이미지를 생성하는 방법입니다.
스케치 형태의 result를 기반으로 이미지가 생성되기 때문에
이미지의 그림체는 비슷하고 색감이나 질감등을 바꾸는데 유용하게 사용됩니다.
Canny 사용방법
webui ControlNet(컨트롤넷) - Canny 사용방법 완벽정리
2. Depth
Depth는 말 그대로 깊이를 표현하는 result가 추출됩니다.
보시는 것처럼 기반이 되는 이미지와 거의 동일한 구도로 이미지가 생성되는 것을 볼 수 있습니다.
Canny가 스케치 형태의 result이라면
Depth는 입체감을 표현해 주는 result를 추출하기 때문에
입체감을 재현하는 데 있어 더 유리하다고 볼 수 있습니다.
스테이블 디퓨전 ControlNet : Depth 사용방법 총정리
3. HED
HED는 Cany와 비슷한 느낌으로 이미지를 생성할 수 있습니다.
result가 색을 빼는 느낌이라 색감만 다르게 그림을 재생성하는데 적합합니다.
4. M-LSD
MLSD는 직선을 감지하여 직선만 추출해 주는 형태의 result를 생성합니다.
보시는 것처럼 인테리어 혹은 건물 등의 직선적인 형태의 이미지를 재구성하기에 적합합니다.
5. Normal
Normal map이라고 하는데 Depth와 비슷한 기능을 합니다.
구도와 입체감등을 재현하는데 적합합니다.
Depth와의 차이점이 있다면
Normal은 피사체의 입체감을 표현하는 데에 더 강하고
Depth는 피사체의 입체감을 표현하는 데에는 Normal보다 약하지만
주위 배경의 입체감까지 상세하게 표현해 주는 result를 생성해 줍니다.
6. OpenPose
Openpose는 가장 많이 이용되는 ControlNet입니다.
보시는 것처럼 기반이 되는 이미지에서 자세를 막대기형태로 구현한 result을 생성합니다.
원하는 자세를 구현하는데 적합합니다.
개인적으로 Depth나 Normal이 좀 더 성능이 좋은 것 같긴 합니다.
Openpose 사용방법에 대한 글은 게시물 상단 링크에 있으니 참고하시는 것을 추천드립니다!
7. Scribble
그림판에서 그린 그림을 기반으로 이미지를 생성할 수 있습니다.
그림 잘 그리시는 분들만 이용하시는 것을 추천드립니다.
조금 재밌을 것 같기도 하네요.
8. Segmentation
색을 분리해서 result을 생성합니다.
아직은 성능이 그닥이라고 하니 다른 ControlNet을 사용하시는 것을 추천드립니다.
이렇게 해서
Controlnet에 대해 처음부터 끝까지 알아보았습니다.
위에서 말씀드린 대로 각각 사용방법은 차차 포스팅할 예정이니
즐겨찾기 해두시고 자주 놀러 와 주시면 감사하겠습니다.
컨트롤넷 1.1v 업데이트 내용이 궁금하신 분들은 아래 포스팅을 참고해 주세요.
컨트롤넷(controlnet) 1.1 업데이트 분석│설치 방법 및 기존 버전에서 업데이트 방법
Allan의 모든 경험과 노하우가 담긴 [미드저니&스테이블 디퓨전의 모든 것] 전자책 구매 링크
[미드저니&스테이블 디퓨전의 모든 것] : 올인원 가이드북
도움이 되셨다면 광고 한번씩 클릭해 주시면 정말 감사하겠습니다. :)