안녕하세요. 코딩산책입니다.
ControlNet은 Stable Diffusion Web UI의 확장 기능 중 하나로 생성되는 이미지를 제어할 수 있습니다. 이 포스트에서는 Stable Diffusion Web UI에서 ContorlNet을 설치하는 방법을 요약합니다. 아울러 ControlNet의 모델의 하나인 Canny에 대해 소개합니다.
ControlNet 이란?
ControlNet은 Stable Diffusion 모델에서 입력 이미지의 세부 사항을 더 정밀하게 제어할 수 있도록 도와주는 확장 기능입니다. 일반적인 Text-to-Image 모델은 텍스트 프롬프트를 입력으로 받지만, ControlNet을 사용하면 텍스트 프롬프트 외에도 스케치, 윤곽선, 포즈, 에지(edge) 등 다양한 추가 이미지 정보를 이용해 생성 결과를 구체적으로 조정할 수 있습니다. 예를 들어, 사람의 포즈를 담은 사진을 ControlNet의 가이드로 제공하면, 해당 포즈를 유지하면서도 다른 특징을 가진 이미지를 생성할 수 있습니다.
ControlNet은 특히 이미지의 구조적인 정보를 보존하거나 특정한 형태로 이미지를 생성하고자 할 때 매우 유용하며, 다양한 입력 유형에 따라 가이드를 제공하여 세밀한 조정을 지원합니다. 따라서 기존의 텍스트 기반 생성에 비해 훨씬 구체적이고 정밀한 이미지 생성이 가능해집니다.
ControlNet은 Stable Diffusion 모델의 여러 버전과 함께 사용될 수 있으며, 주로 다음과 같은 모델과 확장 기능을 통해 활용됩니다.
ControlNet 설치 방법
Stable Diffusion과 ControlNet 버전이 맞지 않으면 작동하지 않습니다.
앞으로 설정할 ControlNet 버전은 v1.1.454이며, Stable Diffusion Web UI 버전은 v1.10.1을 사용합니다.
ControlNet을 설치하는 절차는 다음과 같습니다.
- Stable Diffusion WebUI의 Extensions 탭을 클릭합니다.
- Install from URL 탭을 클릭합니다.
- URL for extension's git repository에 ControlNet을 설치하는 URL (https://github.com/Mikubill/sd-webui-controlnet.git)을 기입합니다.
- Install 버튼을 클릭하여 설치를 진행합니다.
Installed 탭을 열고 확장 프로그램이 설치되었는지 확인한 다음 Apply and restart UI 버튼을 클릭하여 웹 UI에 변경 내용을 반영합니다.
업데이트가 완료되면 txt2img 탭에서 ControlNet v1.1.xxx이 표시되는지 확인합니다.
ControlNet 전용 모델 다운로드
ControlNet을 사용하려면 앞서 언급한 ControlNet 설치 외에도 ControlNet 전용 모델을 다운로드해야 합니다. 다운로드하는 ControlNet의 모델은 약 40여개의 파일이 존재합니다. 일괄로 모델을 다운로드하는 방법과 개별로 다운로드하는 방법, 두 가지를 소개합니다. 개인적인 생각이지만, 하나씩 수동으로 다운로드하는 것은 번거롭기 때문에 일괄 다운로드를 권장합니다.
일괄적으로 모델을 다운로드하는 방법
ControlNet 모델을 일괄로 다운로드 하려면 아래의 명령어로 python 패키지를 설치해주셔야 합니다.
pip install huggingface_hub
터미널에서 python을 시작하여 아래의 명령을 실행합니다. ( local_dir의 경우, 본인의 절대경로를 작성 )
from huggingface_hub import snapshot_download
snapshot_download(repo_id="lllyasviel/sd_control_collection", revision="main",allow_patterns=["*.pth", "*.safetensors", "*.bin"], local_dir="C:\\Users\\codingwalks\\Documents\\stable-diffusion-webui\\models\\ControlNet")
개별적으로 모델을 다운로드하는 방법
아래의 Hugging Face 리포지토리에 접속해주세요.
그리에 표시된 확장자 *.pth / *.safetensors / *.bin 의 여러 파일이 ControlNet 전용 모델입니다. 다안로드 아이콘을 클릭하여 모델 파일을 하나씩 다운로드 합니다.
다운로드한 모델 파일을 stable-diffusion-webui > models > ControlNet 디렉토리에 저장합니다.
ControlNet Canny 란?
ControlNet의 Canny는 Canny Edge Detection을 사용하여 아래와 같이 이미지를 생성할 수 있습니다. Canny Edge Detection에 대하여 자세한 설명은 아래의 링크에서 확인이 가능합니다. 이미지의 경계선을 이용해 특정 윤곽을 유지하면서도 스타일을 바꿀 수 있습니다. 혹은 원본 이미지에서 특정 부분인 머리카락, 눈, 코 또는 입술 등의 색상을 자유롭게 바꿀 수 있는 모델입니다. 이것을 사용해 같은 형태를 한 인물로 다양한 색조나 화풍의 이미지를 생성할 수 있습니다.
사전 준비
미리 Canny에 사용할 원본 이미지를 준비합니다. Stable Diffusion에서 생성한 이미지라도 좋고, 외부에서 준비한 이미지라도 상관없습니다. 원본 이미지는 사진, 애니메이션풍, 필기 등 제한은 없습니다만, 엣지를 추출하므로 윤곽이 뚜렷한 화상 쪽이 바람직합니다. 이 포스트에서는 원본 이미지에서 선화를 추출하고 화풍을 변환하는 모델(Checkpoint)을 제공합니다. 모델(Checkpoint)은 다음을 사용했습니다.
모델(Checkpoint)의 사용법은 아래의 포스트를 참고해주세요.
ControlNet Canny 설정
ControlNet Canny 설정 절차는 아래와 같습니다. Stable Diffusion Web UI에서 txt2image의 탭을 누르고 Generation 탭에서 ControlNet v1.1.xxx의 ◀ 아이콘을 클릭합니다.
Single Image의 "이미지를 끌어 놓으세요 또는 클릭해서 업로드하기"에 원본 이미지를 업로드합니다. 해당 이미지는 엣지를 추출하기 위한 이미지가 됩니다.
원본 이미지 업로드가 완료되면 아래의 절차에 따라 ControlNet Canny 를 설정하면 됩니다.
- Enable 체크박스를 클릭합니다.
- Control Type에서 Canny를 선택합니다.
- Preprocessor의 드롭다운 메뉴에서 Canny를 선택합니다.
- 모델의 업데이트 아이콘을 클릭하고 드롭다운 메뉴에서 diffusers_xl_canny_full 을 선택합니다.
- 특징을 추출하기 위해 불꽃 모양의 아이콘을 클릭합니다.
설정이 완료되면 모델을 설정하고 프롬프트에 텍스트를 입력한 다음 Generate 버튼을 클릭합니다.
위의 결과는 아래의 프롬프트를 사용해서 나온 결과입니다.
(Prompt)
(masterpiece:1.3), (highly detailed:1.3), (highres:1.1), best quality, Ultra-detail, 1girl, platinum blonde hair, , gorgeous girl, beautiful face, dark orange eyes, black pupils, small firm breasts, ribs, eyeliner, shoulder tattoos, shy smile, black eyeshadow, long hair, tan skin, tan girl, ear piercings, round eyes, dynamic angle, athletic, cute, 18 year old college girl, tan skin, tall, tan, long legs, slender, skinny, blush, embarrassed, bracelets, rings, hourglass waist, beautiful, skinny, black eyeliner, tan skin, from below, cute feet, legs straight, pine forest, campfire, metallic gold eyeshadow, long legs, native princess, thick thighs, thigh strap, black fox ears, hair in face, messy hair, curly hair, cream fur trim, fangs, night, full moon, moonlight, Fox tail, Fox girl, lace necklace, narrow face, foxish features, braided ponytail, ponytail, single braid, head tilt, shrug, white negligee, gold trim, white pajamas, crawling towards viewer, nightgown, hands and knees, all fours
(Negative Prompt)
(3d, render, cgi, doll, painting, fake, cartoon, 3d modeling:1.4), (worst quality, low quality:1.4), monochrome, deformed, malformed, deformed face, bad teeth, bad hands, bad fingers, bad eyes, long body, blurry, duplicate, cloned, duplicate body parts, disfigured, extra limbs, fused fingers, extra fingers, twisted, distorted, malformed hands, mutated hands and fingers, conjoined, missing limbs, bad anatomy, bad proportions, logo, watermark, text, copyright, signature, lowres, mutated, mutilated, artifacts, gross, ugly
(Other metadata)
Samping steps: 35, Sampling method: Euler a, CFG Scale: 4.5, Seed: 4081671530, Size: 896x1152, Model hash: 008322675D, Model: ThisIsHanimeXL, ControlNet Unit 0
원본 이미지의 엣지를 유지하면서 애니메이션 스타일의 이미지를 생성하였습니다.
왼쪽이 [ 원본 ], 중간이 [ 엣지 ], 오른쪽이 [ 추출된 엣지 + 프롬프트의 요소를 더한 이미지 ] 입니다.
ControlNet을 업데이트하는 방법
- Stable Diffusion Web UI의 Extensions 탭을 누릅니다.
- Installed 탭을 누릅니다.
- Check for updates 버튼을 클릭합니다.
- 아래의 표에 sd-webui-controlnet 패키지의 오른쪽 끝에 Update 항목에 "latest(최신버전)", "new commit(업데이트 가능)", "unknown(알수없음)"이 표시되며, 업데이트가 있는경우 클릭합니다.
- Apply and restart UI 버튼을 클릭하면 ControlNet을 포함한 확장 프로그램이 일괄 업데이트 됩니다.
요약
해당 포스트에서는 Stable Diffusion Web UI에 ControlNet을 설치하는 방법을 소개하였고, ControlNet 중에서 Canny 라는 모델을 사용해 원본 이미지에서 윤곽선을 추출하여 이를 기반으로 모델과 프롬프트를 사용해 새로운 이미지를 생성해보았습니다.
해당 포스트가 유용하셨다면 하단의 좋아요와 구독하기 부탁드립니다. ^^
'강의 (Lecture) > 이미지 생성형 AI' 카테고리의 다른 글
Stable Diffusion XL 이란? 사용법이나 이전 모델과의 차이 (3) | 2024.11.11 |
---|---|
[Stable Diffusion Web UI] 모델 사용 방법 (Checkpoint) (3) | 2024.11.06 |
[AUTOMATIC1111] Windows에 설치하는 방법 (3) | 2024.11.05 |
[SwarmUI] Windows에 설치하는 방법 (4) | 2024.11.04 |