目錄
LoRA、ControlNet、T2I-Adapter 到diffusers 的全適配方案
首頁 科技週邊 人工智慧 適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

Apr 12, 2023 pm 06:16 PM
開發 程式碼

在ChatGPT 出圈不久,ControlNet 的橫空出世很快在英文和中文互聯網收穫了眾多開發者和普通用戶,甚至有用戶宣傳ControlNet 的出現將AI 創作帶入了直立行走的時代。不誇張地說,包括ControlNet 在內,同期的T2I-Adapter、Composer, 以及LoRA 訓練技巧,可控生成作為AI 創作最後一道高牆,極有可能在可預見的時間內有進一步突破,從而極大降低用戶的創作成本,提高創作的可玩性。距離 ControlNet 開源僅過去兩週,其官方 Star 就已經超過 1 萬,這種熱度無疑是空前的。

同時,開源社群也大幅降低了使用者的使用門檻,如Hugging Face 平台提供了基礎模型權重以及通用的模型訓練框架diffusers,stable-diffusion-webui開發了完善的一套Demo 平台,Civitai 貢獻了海量風格化LoRA 權重。

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

#儘管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框架的全套教學來了!從T2I-Adapter到大熱ControlNet

#本方案是為了支援在diffusers 框架中,使用ControlNet。基於開源社群的部分嘗試,我們提供了完整的 ControlNet Anything-V3 使用用例,支援將 base model 從原本 SD1.5 的替換到 anything-v3 模型,使 ControlNet 具備較好動漫生成的能力。

此外,我們也支援ControlNet Inpainting,並提供了適配diffusers 的pipeline,

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

以及多條件控制的Multi-ControlNet。

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

程式碼開源在:https://github.com/haofanwang/ControlNet-for-Diffusers

T2I-Adapter for diffusers

適配Diffusers框架的全套教學來了!從T2I-Adapter到大熱ControlNet

與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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
四款值得推薦的AI輔助程式工具 四款值得推薦的AI輔助程式工具 Apr 22, 2024 pm 05:34 PM

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

GE通用遠端程式碼可在任何裝置上編程 GE通用遠端程式碼可在任何裝置上編程 Mar 02, 2024 pm 01:58 PM

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

如何使用Copilot產生程式碼 如何使用Copilot產生程式碼 Mar 23, 2024 am 10:41 AM

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

AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 Apr 07, 2024 am 09:10 AM

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語言開發行動應用程式 Mar 28, 2024 pm 10:00 PM

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

Android開發最適合的Linux發行版是哪一個? Android開發最適合的Linux發行版是哪一個? Mar 14, 2024 pm 12:30 PM

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

Go語言前端技術探秘:前端開發新視野 Go語言前端技術探秘:前端開發新視野 Mar 28, 2024 pm 01:06 PM

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

清華大學與智譜AI重磅開源 GLM-4:掀起自然語言處理新革命 清華大學與智譜AI重磅開源 GLM-4:掀起自然語言處理新革命 Jun 12, 2024 pm 08:38 PM

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

See all articles