ControlNet 및 기타 주입 기반 SD 컨트롤을 위한 WebUI 확장입니다.
이 확장은 AUTOMATIC1111의 Stable Diffusion 웹 UI용으로, 웹 UI가 원래 Stable Diffusion 모델에 ControlNet을 추가하여 이미지를 생성할 수 있도록 합니다. 추가는 즉시 이루어지며 병합은 필요하지 않습니다.
https://github.com/Mikubill/sd-webui-controlnet.git
를 입력합니다.여기에서 모든 다운로드 링크를 찾을 수 있습니다: https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download.
이제 우리는 T2I 스타일 어댑터 및 ControlNet 1.1 Shuffle에 대한 완벽한 지원을 포함하여 사용 가능한 모든 모델과 전처리기를 완벽하게 지원합니다. (YAML 파일 이름과 모델 파일 이름이 동일한지 확인하세요. "stable-diffusion-webuiextensionssd-webui-controlnetmodels"의 YAML 파일도 참조하세요.)
이제 A1111에서 High-Res Fix를 켜면 각 컨트롤넷은 두 개의 서로 다른 제어 이미지(작은 이미지와 큰 이미지)를 출력합니다. 작은 것은 기본 생성용이고, 큰 것은 고해상도 수정 생성용입니다. 두 개의 제어 이미지는 "초고품질 제어 이미지 리샘플링"이라는 스마트 알고리즘에 의해 계산됩니다. 이는 기본적으로 켜져 있으므로 설정을 변경할 필요가 없습니다.
이제 ControlNet은 "Inpaint Masked"/"Inpaint not Masked", "Whole picture"/"Only Masked", "Only Masked Padding"&"Mask Blur"를 포함한 A1111의 다양한 마스크 유형으로 광범위하게 테스트되었습니다. 크기 조정은 A1111의 "Just resize"/"Crop and resize"/"Resize and fill"과 완벽하게 일치합니다. 이는 A1111 UI의 거의 모든 곳에서 어려움 없이 ControlNet을 사용할 수 있다는 것을 의미합니다!
이제 픽셀 퍼펙트 모드를 켜면 전처리기(주석자) 해상도를 수동으로 설정할 필요가 없습니다. ControlNet은 각 픽셀이 Stable Diffusion과 완벽하게 일치하도록 최상의 주석자 해상도를 자동으로 계산합니다.
"새 캔버스의 캔버스 너비/높이"와 같이 이전에 혼란스러웠던 일부 UI를 재구성했으며 이제는 버튼에 있습니다. 이제 미리보기 GUI는 "미리보기 허용" 옵션과 트리거 버튼 ?으로 제어됩니다. 미리보기 이미지 크기는 이전보다 좋아졌으며 위아래로 스크롤할 필요가 없습니다. a1111 GUI가 더 이상 엉망이 되지 않습니다!
이제 ControlNet 1.1은 거의 모든 업스케일링/타일 방법을 지원할 수 있습니다. ControlNet 1.1은 "Ultimate SD upscale" 스크립트와 거의 모든 기타 타일 기반 확장을 지원합니다. "Ultimate SD upscale"과 "SD upscale"을 혼동하지 마십시오. 둘은 서로 다른 스크립트입니다. 가장 권장되는 업스케일링 방법은 "타일형 VAE/확산"이지만 가능한 한 많은 방법/확장을 테스트합니다. "SD 업스케일"은 1.1.117부터 지원되며 이를 사용하는 경우 모든 ControlNet 이미지를 공백으로 남겨 두어야 합니다. ("SD 업스케일"은 다소 버그가 있고 유지 관리할 수 없으므로 권장하지 않습니다. " Ultimate SD Upscale'을 선택하세요.)
이전 1.0의 추측 모드에서 많은 버그가 수정되었으며 이제는 제어 모드라고 합니다.
이제 어느 측면이 더 중요한지 제어할 수 있습니다(프롬프트 또는 ControlNet).
"균형": CFG 스케일의 양쪽에 있는 ControlNet, ControlNet 1.0에서 "추측 모드"를 끄는 것과 동일
"나의 프롬프트가 더 중요합니다": SD U-Net 주입이 점진적으로 감소된 CFG 규모의 양쪽에 있는 ControlNet(layer_weight*=0.825**I, 여기서 0<=I <13, 13은 ControlNet이 SD 13번 주입됨을 의미함) ). 이러한 방식으로 생성된 이미지에 프롬프트가 완벽하게 표시되는지 확인할 수 있습니다.
"ControlNet이 더 중요합니다": CFG 규모의 조건부 측면에서만 ControlNet(A1111의 배치-조건-비조건 조건). 이는 cfg-scale이 X이면 ControlNet이 X배 더 강력하다는 의미입니다. 예를 들어, cfg-scale이 7이면 ControlNet은 7배 더 강력합니다. 여기서 X배 더 강한 것은 가중치가 수정되지 않기 때문에 "제어 가중치"와 다르다는 점에 유의하세요. 이 "더 강한" 효과는 일반적으로 아티팩트가 적고 ControlNet이 프롬프트에서 누락된 내용을 추측할 수 있는 더 많은 공간을 제공합니다(이전 1.0에서는 "추측 모드"라고 함).
입력(깊이+캐니+헤드) | "균형" | "내 메시지가 더 중요해요" | "ControlNet이 더 중요합니다" |
이제 제어 모델이 필요하지 않은 reference-only
전처리기가 생겼습니다. 이미지를 참조로 사용하여 직접 확산을 유도할 수 있습니다.
("초원에서 달리는 개, 품질이 최고, ..."라는 메시지)
이 방법은 inpaint 기반 참조와 유사하지만 이미지를 혼란스럽게 만들지는 않습니다.
많은 전문 A1111 사용자는 인페인트를 통한 참조로 이미지를 확산시키는 방법을 알고 있습니다. 예를 들어, 개에 대한 512x512 이미지가 있고 동일한 개를 사용하여 또 다른 512x512 이미지를 생성하려는 경우 일부 사용자는 512x512 개 이미지와 512x512 빈 이미지를 1024x512 이미지로 연결하고 인페인트로 보낸 다음 마스크 아웃합니다. 512x512의 공백 부분을 사용하여 비슷한 모습의 강아지를 확산시킵니다. 그러나 이 방법은 이미지가 연결되어 있고 왜곡이 많이 나타나기 때문에 일반적으로 그다지 만족스럽지 않습니다.
이 reference-only
ControlNet은 SD의 주의 레이어를 독립적인 이미지에 직접 연결할 수 있으므로 SD가 참조용으로 임의의 이미지를 읽을 수 있습니다. 이를 사용하려면 최소한 ControlNet 1.1.153이 필요합니다.
사용하려면 reference-only
전처리기로 선택하고 이미지를 넣으면 됩니다. SD는 이미지를 참조용으로만 사용합니다.
이 방법은 가능한 한 "의견이 없는" 방법입니다. 개인적인 선호도 없이 매우 기본적인 연결 코드만 포함되어 있어 참고 이미지와 주의 레이어를 연결합니다. 그러나 우리가 주장하는 코드를 포함하지 않으려고 최선을 다하더라도 여전히 가중치, cfg-scale 등을 처리하기 위한 주관적인 구현을 작성해야 합니다. 기술 보고서가 곧 작성될 예정입니다.
여기에 더 많은 예가 있습니다.
ControlNet 1.1 문서도 참조하십시오.
https://github.com/lllyasviel/ControlNet-v1-1-nightly#model-사양
이것이 내 설정입니다. 문제가 발생하면 이 설정을 온전성 검사로 사용할 수 있습니다.
https://huggingface.co/lllyasviel/ControlNet/tree/main/models
이전 ControlNet 1.0에서도 이전 모델을 모두 사용할 수 있습니다. 이제 이전 "깊이"는 "깊이_미다스", 이전 "노멀"은 "노멀_미다스", 이전 "헤드"는 "소프트엣지_헤드"라고 합니다. 그리고 1.1부터 모든 선 맵, 가장자리 맵, 선화 맵, 경계 맵에는 검정색 배경과 흰색 선이 있습니다.
(TencentARC/T2I-Adapter에서)
T2I-어댑터 모델을 사용하려면:
"CoAdapter"는 아직 구현되지 않았습니다.
아래 결과는 ControlNet 1.0의 결과입니다.
원천 | 입력 | 산출 |
---|---|---|
(전처리기 없음) | ||
(전처리기 없음) | ||
아래 예는 T2I-Adapter에서 가져온 것입니다.
t2iadapter_color_sd14v1.pth
에서:
원천 | 입력 | 산출 |
---|---|---|
t2iadapter_style_sd14v1.pth
에서:
원천 | 입력 | 산출 |
---|---|---|
(클립, 비이미지) |
--xformers
가 활성화되고 UI에서 Low VRAM
모드가 선택되면 최대 768x832까지 올라갑니다. 이 옵션은 단일 세대에 대해 여러 ControlNet 입력을 허용합니다. 이 옵션을 활성화하려면 설정에서 Multi ControlNet: Max models amount (requires restart)
변경하십시오. 변경 사항을 적용하려면 WebUI를 다시 시작해야 합니다.
소스 A | 소스 B | 산출 |
가중치는 컨트롤넷 "영향력"의 가중치입니다. 주의를 환기시키거나 강조하는 것과 유사합니다. 예(myprompt: 1.2). 기술적으로 이는 원래 SD Unet과 병합하기 전에 ControlNet 출력을 곱하는 요소입니다.
가이던스 시작/종료는 컨트롤넷이 적용하는 전체 단계의 백분율입니다(가이던스 강도 = 가이던스 종료). 이는 신속한 편집/이동과 유사합니다. 예: [myprompt::0.8] (처음부터 전체 단계의 80%까지 적용됩니다)
모든 장치에 대해 배치 모드를 활성화하려면 임의의 장치를 배치 모드로 설정하세요. 각 단위에 대한 배치 디렉터리를 지정하거나 img2img 배치 탭의 새 텍스트 상자를 대체 수단으로 사용하세요. 텍스트 상자는 img2img 배치 탭에 있지만 이를 사용하여 txt2img 탭에서도 이미지를 생성할 수 있습니다.
이 기능은 Gradio 사용자 인터페이스에서만 사용할 수 있습니다. 사용자 지정 일괄 예약을 위해 원하는 만큼 API를 호출하세요.
이 확장은 API 또는 외부 확장 호출을 통해 txt2img 또는 img2img 작업을 허용할 수 있습니다. 외부 통화 설정에서 Allow other scripts to control this extension
을 활성화해야 할 수도 있습니다.
API를 사용하려면 --api
인수로 WebUI를 시작하고 http://webui-address/docs
로 이동하여 문서나 체크아웃 예제를 확인하세요.
외부 통화를 사용하려면: Checkout Wiki
이 확장은 webui에 다음 명령줄 인수를 추가합니다.
--controlnet-dir ADD a controlnet models directory
--controlnet-annotator-models-path SET the directory for annotator models
--no-half-controlnet load controlnet models in full precision
--controlnet-preprocessor-cache-size Cache size for controlnet preprocessor results
--controlnet-loglevel Log level for the controlnet extension
--controlnet-tracemalloc Enable malloc memory tracing
야간에 pytorch로 테스트됨: #143(댓글)
mps 및 일반 pytorch와 함께 이 확장을 사용하려면 현재 --no-half
로 WebUI를 시작해야 할 수도 있습니다.
이전 버전(sd-webui-controlnet 1.0)은 다음에 보관되어 있습니다.
https://github.com/lllyasviel/webui-controlnet-v1-archived
이 버전을 사용한다고 해서 업데이트가 일시적으로 중단되는 것은 아닙니다. 모든 업데이트가 영원히 중지됩니다.
이전의 모든 결과를 픽셀 단위로 100% 재현해야 하는 전문 스튜디오에서 작업하는 경우 이 버전을 고려해 보십시오.
이 구현은 kohya-ss/sd-webui-additional-networks에서 영감을 받았습니다.