適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet
在ChatGPT 出圈不久,ControlNet 的橫空出世很快在英文和中文互聯網收穫了眾多開發者和普通用戶,甚至有用戶宣傳ControlNet 的出現將AI 創作帶入了直立行走的時代。不誇張地說,包括ControlNet 在內,同期的T2I-Adapter、Composer, 以及LoRA 訓練技巧,可控生成作為AI 創作最後一道高牆,極有可能在可預見的時間內有進一步突破,從而極大降低用戶的創作成本,提高創作的可玩性。距離 ControlNet 開源僅過去兩週,其官方 Star 就已經超過 1 萬,這種熱度無疑是空前的。
同時,開源社群也大幅降低了使用者的使用門檻,如Hugging Face 平台提供了基礎模型權重以及通用的模型訓練框架diffusers,stable-diffusion-webui開發了完善的一套Demo 平台,Civitai 貢獻了海量風格化LoRA 權重。
#儘管webui 作為目前最受歡迎的視覺化工具,已經快速地支援了近期推出的各種生成模型,並且支援眾多選項供用戶設定。由於其重點考慮了前端介面的易用性,背後程式碼結構其實十分複雜,對於開發者而言不夠友善。例如 webui 儘管支援了多種類型的載入和推理,但卻無法支援不同框架下的轉換,也無法支援模型的靈活訓練。我們在社群討論中發現了許多現有開源程式碼暫未解決的痛點。
首先,程式碼框架不相容,目前熱門的模型,如ControlNet、T2I-Adapter,與主流的Stable Diffusion 訓練庫diffusers 不相容,ControlNet 預先訓練的模型無法直接在diffusers 框架中被使用。
其次,模型載入受限,目前模型保存格式多樣,如.bin、.ckpt、.pth、.satetensors 等,除了webui 外,目前diffusers 框架對於這些模型格式的支援還有限,考慮到LoRA 大部分模型以safetensors 保存為主,用戶很難直接將LoRA 的模型加載到已有的基於diffusers 框架訓練的模型中。
第三,基礎模型受限,目前ControlNet、T2I-Adapter 皆基於Stable-Diffusion-1.5 進行訓練,且僅開源了SD1.5 下的模型權重,考慮到特定場景,已經存在諸如anything-v4、ChilloutMix 等優質動漫模型,即使引入了可控信息,最終生成結果仍然受限於SD1.5 中UNet 的能力。
最後,模型訓練受限,目前LoRA 已經被廣泛驗證是風格遷移、保持特定形象IP 最有效的方法之一,但diffusers 框架目前僅支援UNet 的LoRA 嵌入,無法支援text encoder 的嵌入,會限制LoRA 的訓練。
我們和開源社群討論後,了解到diffusers 框架作為通用程式碼庫,正計劃同時適配近期不斷推出的生成模型;由於涉及較多底層介面重寫,仍然需要一段時間更新。為此,我們從以上實際存在的問題出發,率先提出了每個問題的自研解決方案,快速幫助開發者更容易開發。
LoRA、ControlNet、T2I-Adapter 到diffusers 的全適配方案
LoRA for diffusers
#本方案是為了在diffusers 框架,即基於diffusers 訓練保存的模型中,靈活嵌入各種格式的LoRA 權重。由於 LoRA 的訓練通常會凍結 base model,因此可以輕鬆地作為可插拔模組嵌入已有模型,作為風格或 IP 條件約束。 LoRA 本身是一種通用的訓練技巧,它的基本原理是,透過低秩分解,可以大幅減少模組的參數量,目前在影像生成中,一般用於訓練獨立於base model 以外的可插拔模組,實際使用是以殘差形式與base model 的輸出合併。
首先是 LoRA 權重的嵌入,目前 Civitai 平台上提供的權重主要以 ckpt 或 safetensors 格式存儲,分以下兩種情況。
(1)Full model(base model LoRA 模組)
如果full model 是safetensors 格式,可以透過以下diffusers 腳本轉換
python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.safetensors--dump_path save_dir --from_safetensors
如果full model 是ckpt 格式,可以透過以下diffusers 腳本轉換
python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.ckpt--dump_path save_dir
轉換完成後,可直接利用diffusers 的API 進行模型加載
from diffusers import StableDiffusionPipeline pipeline = StableDiffusionPipeline.from_pretrained (save_dir,torch_dtype=torch.float32)
(2)LoRA only (僅包含LoRA 模組)
目前diffusers 官方無法支援僅載入LoRA 權重,而開源平台上的LoRA 權重基本上以這種形式存儲。本質上是完成 LoRA 權重中 key-value 的重新映射,使其適配到 diffusers 模型中。為此,我們自行支援這個功能,提供了轉換腳本。
pipeline = StableDiffusionPipeline.from_pretrained (model_id,torch_dtype=torch.float32) model_path = "onePieceWanoSagaStyle_v2Offset.safetensors" state_dict = load_file (model_path)
只需要指定 diffusers 格式的模型,以及儲存為 safetensors 格式的 LoRA 權重。我們提供了一個轉換範例。
# the default mergering ratio is 0.75, you can manually set it python convert_lora_safetensor_to_diffusers.py
此外,LoRA 本身由於其輕量化,可以在小數據情況下快速完成訓練,並能夠嵌入到其他網路中。為了不限於已有LoRA 權重,我們在diffusers 框架中支援了LoRA 的多模組(UNet text encoder)訓練,並已經在官方程式碼庫提交PR(https://github.com/huggingface/diffusers/pull/ 2479),並支持了ColossalAI 中訓練LoRA。
程式碼開源在:https://github.com/haofanwang/Lora-for-Diffusers
ControlNet for diffusers
#本方案是為了支援在diffusers 框架中,使用ControlNet。基於開源社群的部分嘗試,我們提供了完整的 ControlNet Anything-V3 使用用例,支援將 base model 從原本 SD1.5 的替換到 anything-v3 模型,使 ControlNet 具備較好動漫生成的能力。
此外,我們也支援ControlNet Inpainting,並提供了適配diffusers 的pipeline,
以及多條件控制的Multi-ControlNet。
程式碼開源在:https://github.com/haofanwang/ControlNet-for-Diffusers
T2I-Adapter for diffusers
與ControlNet 相似,我們也同時支援了同期開源的T2I-Adapter 到diffusers 的適配。
程式碼開源在:https://github.com/haofanwang/T2I-Adapter-for-Diffusers
目前以上三種適配方案都已經向社群開源,並在 ControlNet、T2I-Adapter 中被官方分別致謝,也收到了來自 stable-diffusion-webui-colab 作者的感謝。我們正在與 diffusers 官方保持討論,並會在近期完成以上方案向官方程式碼庫的整合工作。也歡迎大家提前嘗試我們的工作,有任何問題可以直接提 issue,我們會盡快回覆。
以上是適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

如果您需要遠端編程任何設備,這篇文章會為您帶來幫助。我們將分享編程任何設備的頂級GE通用遠端代碼。通用電氣的遙控器是什麼? GEUniversalRemote是一款遙控器,可用於控制多個設備,如智慧電視、LG、Vizio、索尼、藍光、DVD、DVR、Roku、AppleTV、串流媒體播放器等。 GEUniversal遙控器有各種型號,具有不同的功能和功能。 GEUniversalRemote最多可以控制四台設備。頂級通用遙控器代碼,可在任何裝置上編程GE遙控器配備一組代碼,使其能夠與不同設備配合。您可

身為一名程式設計師,對於能夠簡化程式設計體驗的工具,我感到非常興奮。借助人工智慧工具的幫助,我們可以產生演示程式碼,並根據需求進行必要的修改。在VisualStudioCode中新引入的Copilot工具讓我們能夠創建具有自然語言聊天互動的AI生成程式碼。透過解釋功能,我們可以更好地理解現有程式碼的含義。如何使用Copilot產生程式碼?要開始,我們首先需要取得最新的PowerPlatformTools擴充。要實現這一點,你需要進入擴充頁面,搜尋“PowerPlatformTool”,然後點擊Install按鈕

2022年3月3日,距離世界首個AI程式設計師Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程式設計師SWE-agent。它利用GPT-4模型在GitHub儲存庫中自動解決問題。 SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。 SWE-agent透過與專用終端交互,可以開啟、搜尋文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。 (註:以上內容為原始內容微調,但保留了原文中的關鍵訊息,未超過指定字數限制。)SWE-A

Go語言開發行動應用程式教學隨著行動應用程式市場的不斷蓬勃發展,越來越多的開發者開始探索如何利用Go語言開發行動應用程式。作為一種簡潔高效的程式語言,Go語言在行動應用開發中也展現了強大的潛力。本文將詳細介紹如何利用Go語言開發行動應用程序,並附上具體的程式碼範例,幫助讀者快速入門並開始開發自己的行動應用程式。一、準備工作在開始之前,我們需要準備好開發環境和工具。首

Android開發是一項繁忙而又令人興奮的工作,而選擇適合的Linux發行版來進行開發則顯得尤為重要。在眾多的Linux發行版中,究竟哪一個最適合Android開發呢?本文將從幾個方面來探討這個問題,並給出具體的程式碼範例。首先,我們來看看目前流行的幾個Linux發行版:Ubuntu、Fedora、Debian、CentOS等,它們都有各自的優點和特點。

Go語言作為一種快速、高效的程式語言,在後端開發領域廣受歡迎。然而,很少有人將Go語言與前端開發聯繫起來。事實上,使用Go語言進行前端開發不僅可以提高效率,還能為開發者帶來全新的視野。本文將探討使用Go語言進行前端開發的可能性,並提供具體的程式碼範例,幫助讀者更了解這一領域。在傳統的前端開發中,通常會使用JavaScript、HTML和CSS來建立使用者介面

自2023年3月14日開始,ChatGLM-6B以來,GLM系列模型受到了廣泛的關注與認可。特別是在ChatGLM3-6B開源之後,開發者對智譜AI推出的第四代模型充滿了期待。而這項期待,隨著GLM-4-9B的發布,終於得到了充分的滿足。 GLM-4-9B的誕生為了賦予小模型(10B及以下)更加強大的能力,GLM技術團隊經過近半年的探索,推出了這款全新的第四代GLM系列開源模型:GLM-4-9B。這一模型在確保精度的同時,大幅度壓縮了模型大小,具有更快的推理速度和更高的效率。 GLM技術團隊的探索沒
