ChatGPT가 나온 지 얼마 지나지 않아 ControlNet의 출현으로 영어와 중국어 인터넷에서 많은 개발자와 일반 사용자가 빠르게 확보되었습니다. 일부 사용자는 ControlNet의 출현으로 AI 생성이 직립보행 시대에 이르렀다고 홍보하기도 했습니다. ControlNet, T2I-Adapter, Composer, LoRA 훈련 기술 등 동시대의 제어 가능한 세대를 포함하여 AI 생성의 마지막 높은 벽으로서 가까운 시일 내에 추가적인 돌파구가 나올 가능성이 매우 높다고 해도 과언이 아닙니다. , 이를 통해 사용자의 창작 비용을 크게 줄이고 창작의 플레이 가능성을 향상시킵니다. ControlNet이 오픈 소스로 공개된 지 불과 2주 만에 공식 스타 수가 10,000개를 넘어섰습니다. 이러한 인기는 의심할 여지 없이 전례가 없습니다.
동시에 오픈 소스 커뮤니티에서는 사용자 임계값도 크게 낮췄습니다. 예를 들어 Hugging Face 플랫폼은 기본 모델 가중치와 일반 모델 훈련 프레임워크 디퓨저를 제공하며 stable-diffusion-webui는 완전한 세트를 개발했습니다. 데모 플랫폼의 Civitai는 수많은 양식화된 LoRA 가중치를 제공했습니다.
webui는 현재 가장 인기 있는 시각화 도구이지만 최근 출시된 다양한 세대 모델을 빠르게 지원하고 사용자가 설정할 수 있는 다양한 옵션을 지원합니다. 프런트 엔드 인터페이스의 사용 편의성에 중점을 두기 때문에 그 뒤에 있는 코드 구조는 실제로 매우 복잡하고 개발자에게 친숙하지 않습니다. 예를 들어, webui는 다양한 유형의 로딩 및 추론을 지원하지만, 다양한 프레임워크에서의 변환을 지원하거나 유연한 모델 교육을 지원할 수 없습니다. 커뮤니티 토론에서 우리는 기존 오픈 소스 코드로 아직 해결되지 않은 많은 문제점을 발견했습니다.
우선, 코드 프레임워크는 호환되지 않습니다. ControlNet 및 T2I-Adapter와 같은 현재 인기 있는 모델은 주류 Stable Diffusion 교육 라이브러리 디퓨저와 호환되지 않습니다. 디퓨저 프레임워크에서 사용됩니다.
둘째, 모델 로딩이 제한되어 있습니다. 현재 모델은 .bin, .ckpt, .pth, .satetensors 등 다양한 형식으로 저장됩니다. 현재 webui 외에도 디퓨저 프레임워크에는 이러한 모델 형식에 대한 지원은 제한적입니다. 대부분의 LoRA 모델이 주로 safetensor에 저장된다는 점을 고려하면 사용자가 디퓨저 프레임워크를 기반으로 학습된 기존 모델에 LoRA 모델을 직접 로드하기는 어렵습니다.
셋째, 기본 모델은 제한적입니다. 현재 ControlNet과 T2I-Adapter는 Stable-Diffusion-1.5를 기반으로 학습되었으며, 특정 시나리오를 고려하여 SD1.5 이하의 모델 가중치만 오픈 소스로 제공됩니다. everything-v4, ChilloutMix 등과 같은 고품질 애니메이션 모델이 있습니다. 제어 가능한 정보가 도입되더라도 최종 생성된 결과는 여전히 SD1.5의 UNet 기능에 의해 제한됩니다.
마지막으로, 모델 교육은 제한적입니다. LoRA는 스타일 마이그레이션 및 특정 이미지 IP 유지를 위한 가장 효과적인 방법 중 하나로 널리 검증되었습니다. 그러나 디퓨저 프레임워크는 현재 UNet의 LoRA 임베딩 및 유지 관리만 지원합니다. 텍스트를 지원할 수 없습니다. 인코더를 삽입하면 LoRA 학습이 제한됩니다.
오픈 소스 커뮤니티와 논의한 결과, 우리는 일반 코드 라이브러리인 디퓨저 프레임워크가 많은 기본 인터페이스를 다시 작성해야 하기 때문에 최근 출시된 세대 모델에 동시에 적응할 계획이라는 것을 알게 되었습니다. 업데이트하는 데 시간이 좀 필요합니다. 이를 위해 우리는 위의 실제 문제에서 출발하여 개발자가 보다 쉽게 개발할 수 있도록 신속하게 각 문제에 대한 자체 개발 솔루션을 제안하는 데 앞장섰습니다.
디퓨저용 LoRA
이 솔루션은 디퓨저 프레임워크에 다양한 유형의 모델을 유연하게 내장하는 것, 즉 모델을 기반으로 합니다. 디퓨저 훈련을 통해 LoRA 가중치 형식을 저장했습니다. LoRA 훈련은 일반적으로 기본 모델을 고정시키기 때문에 스타일 또는 IP 조건 제약 조건에 따라 플러그형 모듈로 기존 모델에 쉽게 내장될 수 있습니다. LoRA 자체는 일반적인 학습 기법으로, 낮은 순위 분해를 통해 모듈의 매개변수 수를 크게 줄일 수 있다는 것이 기본 원리입니다. 현재 이미지 생성에서는 일반적으로 모듈과 독립적인 플러그형 모듈을 학습하는 데 사용됩니다. 기본 모델의 경우 실제 사용은 잔차 형태로 기본 모델의 출력과 병합하는 것입니다.
첫 번째는 LoRA 가중치의 임베딩입니다. 현재 Civitai 플랫폼에서 제공되는 가중치는 주로 ckpt 또는 safetensor 형식으로 저장되며 이는 다음 두 가지 상황으로 나눌 수 있습니다.
(1) 전체 모델(기본 모델 + LoRA 모듈)
전체 모델이 safetensors 형식인 경우 다음 디퓨저 스크립트를 통해 변환할 수 있습니다
python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.safetensors--dump_path save_dir --from_safetensors
전체 모델이 ckpt 형식인 경우 형식은 다음 디퓨저 스크립트를 통해 변환할 수 있습니다. Conversion
python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.ckpt--dump_path save_dir
변환이 완료된 후 디퓨저의 API를 직접 사용하여 모델을 로드할 수 있습니다
from diffusers import StableDiffusionPipeline pipeline = StableDiffusionPipeline.from_pretrained (save_dir,torch_dtype=torch.float32)
(2) LoRA 전용(LoRA 모듈만 포함) )
현재 디퓨저는 공식적으로 LoRA 가중치 로딩만을 지원할 수 없으며, 오픈소스 플랫폼의 LoRA 가중치는 기본적으로 이런 형태로 저장됩니다. 기본적으로 LoRA 가중치의 키-값 재매핑을 완료하고 이를 디퓨저 모델에 적용합니다. 이러한 이유로 우리는 이 기능을 자체적으로 지원하고 변환 스크립트를 제공합니다.
pipeline = StableDiffusionPipeline.from_pretrained (model_id,torch_dtype=torch.float32) model_path = "onePieceWanoSagaStyle_v2Offset.safetensors" state_dict = load_file (model_path)
모델을 디퓨저 형식으로 지정하고 LoRA 가중치는 safetensors 형식으로 저장하면 됩니다. 우리는 예제 변환을 제공합니다.
# the default mergering ratio is 0.75, you can manually set it python convert_lora_safetensor_to_diffusers.py
또한 LoRA 자체는 가볍기 때문에 작은 데이터로도 빠르게 학습을 완료할 수 있으며 다른 네트워크에 내장할 수도 있습니다. 기존 LoRA 가중치에 국한되지 않기 위해 디퓨저 프레임워크에서 LoRA의 다중 모듈(UNet+텍스트 인코더) 교육을 지원하고 공식 코드 베이스(https://github.com/)에 PR을 제출했습니다. Huggingface/diffusers/pull /2479), ColossalAI에서 LoRA 교육을 지원합니다. Code는 다음과 같은 오픈 소스입니다. , ControlNet이 사용됩니다. 오픈 소스 커뮤니티의 일부 시도를 기반으로 ControlNet+Anything-V3의 완전한 사용 사례를 제공하여 기본 모델을 원래 SD1.5에서 any-v3 모델로 교체하여 ControlNet이 더 나은 애니메이션 생성을 지원하도록 지원합니다. 능력.
또한 ControlNet+Inpainting을 지원하고 디퓨저,
및 다중 조건 제어를 위한 Multi-ControlNet에 적합한 파이프라인을 제공합니다.
코드는 https://github.com/haofanwang/ControlNet-for-Diffusers
T2I-디퓨저용 어댑터
ControlNet과 유사하게 오픈 소스 T2I-Adapter를 디퓨저에 적용하는 것도 동시에 지원합니다.
코드는 https://github.com/haofanwang/T2I-Adapter-for-Diffusers
에서 오픈 소스입니다.현재 위의 세 가지 적응 솔루션은 커뮤니티에 오픈 소스로 공개되었으며 각각 ControlNet과 T2I-Adapter에서 공식적으로 인정되었습니다. 또한 stable-diffusion-webui-colab 작성자로부터 감사를 받았습니다. 우리는 디퓨저 관계자와 논의를 계속하고 있으며 가까운 시일 내에 위 솔루션을 공식 코드 베이스에 통합하는 작업을 완료할 예정입니다. 궁금한 점이 있으시면 직접 문제를 제기해 주시면 최대한 빨리 답변해 드리겠습니다.
위 내용은 Diffusers 프레임워크를 적용하기 위한 전체 튜토리얼 세트가 여기에 있습니다! T2I-Adapter에서 인기 있는 ControlNet까지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!