展會信息港展會大全

EasyPhoto:基于 SD WebUI 的藝術(shù)照生成插件來啦!
來源:互聯(lián)網(wǎng)   發(fā)布日期:2023-09-13 09:31:02   瀏覽:14625次  

導(dǎo)讀:作者 :wuziheng 背景介紹 最近,基于生成式AI技術(shù)批量產(chǎn)出真/像/美的個人寫真應(yīng)用非常受歡迎。同時,隨著 Stable Diffusion 領(lǐng)域開源社區(qū)的快速發(fā)展,社區(qū)也涌現(xiàn)了類似 FaceChain 的開源項目,幫助開發(fā)者開發(fā)個性化的真人寫真生成應(yīng)用。越來越多開發(fā)者對這...

作者:wuziheng

背景介紹

最近,基于生成式AI技術(shù)批量產(chǎn)出真/像/美的個人寫真應(yīng)用非常受歡迎。同時,隨著 Stable Diffusion 領(lǐng)域開源社區(qū)的快速發(fā)展,社區(qū)也涌現(xiàn)了類似 FaceChain 的開源項目,幫助開發(fā)者開發(fā)個性化的真人寫真生成應(yīng)用。越來越多開發(fā)者對這個方向投來關(guān)注,希望得到更多靈活的開發(fā)方式。

EasyPhoto項目介紹

作為FaceChain-Inpaint功能的開發(fā)團(tuán)隊,我們快速上線了一款基于 SD WebUI 插件生態(tài)的個性化寫真生成開源插件 EasyPhoto。這款插件允許用戶通過上傳幾張同一個人的照片,快速訓(xùn)練Lora模型,然后結(jié)合用戶自定義的模板圖片,生成 真/像/美的寫真圖片。

圖1

項目地址:https://github.com/aigc-apps/sd-webui-EasyPhoto

歡迎大家多多提ISSUE,一同優(yōu)化,讓每個AIGCer都擁有自己的AI寫真相機(jī)!

原理介紹

AI真人寫真是一個基于 StableDiffusion和AI人臉相關(guān)技術(shù),實現(xiàn)的定制化人像Lora模型訓(xùn)練和指定圖像生成鏈路的集合,這里我們簡單介紹我們在EasyPhoto中實現(xiàn)的相關(guān)技術(shù),下圖是EasyPhoto的生成鏈路介紹,

圖2

EasyPhoto整體分為訓(xùn)練和推理兩個階段, 下文圖3詳細(xì)展示了訓(xùn)練階段,上圖2展示了生成階段。

EasyPhoto生成

EasyPhoto生成采用基于開源模型StableDiffusion + 人物定制Lora的方式 + ControlNet 的方式完成藝術(shù)照生成

使用人臉檢測模型對輸入的指定模板進(jìn)行人臉檢測(crop & warp)并結(jié)合數(shù)字分身進(jìn)行模板替換。采用FaceID模型挑選用戶輸入的最佳ID Photo和模板照片進(jìn)行人臉融合(face fusion)。使用融合后的圖片作為基底圖片,使用替換后的人臉作為control條件,加上數(shù)字分身對應(yīng)的Lora,進(jìn)行圖到圖局部重繪生成。采用基于StableDiffusion + 超分的方式進(jìn)一步在保持ID的前提下生成高清結(jié)果圖。

EasyPhoto訓(xùn)練

圖3

EasyPhoto訓(xùn)練采用了大量的人臉預(yù)處理技術(shù),用于把用戶上傳的圖片進(jìn)行篩選和預(yù)處理,并引入相關(guān)驗證和模型融合技術(shù),參考圖3.

采用FaceID和圖像質(zhì)量分?jǐn)?shù)對所有圖片進(jìn)行聚類和評分,篩選非同ID照片。采用人臉檢測和主體分割,摳出1篩選后的人臉圖片進(jìn)行人臉檢測摳圖,并分割去除背景。采用美膚模型優(yōu)化部分低質(zhì)量人臉,推升訓(xùn)練數(shù)據(jù)的圖片質(zhì)量。采用單一標(biāo)注的方案,對處理后的訓(xùn)練圖片進(jìn)行打標(biāo),并使用相關(guān)的Lora 訓(xùn)練。訓(xùn)練過程中采用基于FaceID的驗證步驟,間隔一定的step保存模型,并最后根據(jù)相似度融合模型。

我們將從在后續(xù)的章節(jié)簡單介紹涉及到的相關(guān)技術(shù)的原理,更多細(xì)節(jié)也歡迎大家參考Repo的代碼。(如果你已經(jīng)對這一技術(shù)路線非常熟悉,歡迎直接跳到第三章 EasyPhoto & SDWebUI)

文圖生成(SD/Control/Lora)

StableDiffusion

StableDiffusion作為Stability-AI開源圖像生成模型,通常分為SD1.5/SD2.1/SDXL等版本, 是通過對海量的圖像文本(LAION-5B)對進(jìn)行訓(xùn)練結(jié)合文本引導(dǎo)的擴(kuò)散模型(DiffusionModel),使用訓(xùn)練后的模型,通過對輸入的文字進(jìn)行特征提取,引導(dǎo)擴(kuò)散模型在多次的迭代中生成高質(zhì)量且符合輸入語義的圖像。感興趣的同學(xué)可以參考 《stable diffusion原理解讀通俗易懂,史詩級萬字爆肝長文,..》, 下面的圖像就是 stablediffusion 官網(wǎng) Repo 貼出來的他們的效果。

 

ControlNet/Lora

針對使用文本控制的StableDiffusion模型,如何對生成的圖像內(nèi)容進(jìn)行更好的控制,一直是學(xué)術(shù)界和工業(yè)界試圖解決的問題,本小節(jié)介紹的ControlNet和Lora就是常用的兩種技術(shù)。也是圖2中使用的部分技術(shù),用于控制邊緣連貫性和指定ID生成。

ControlNet :由《Adding Conditional Control to Text-to-Image Diffusion Models》提出的通過添加部分訓(xùn)練過的參數(shù),對StableDiffsion模型進(jìn)行擴(kuò)展,用于處理一些額外的輸入信號,例如骨架圖/邊緣圖/深度圖/人體姿態(tài)圖等等輸入,從而完成利用這些額外輸入的信號,引導(dǎo)擴(kuò)散模型生成與信號相關(guān)的圖像內(nèi)容。例如我們在官方 Repo 可以看到的,使用Canny邊緣作為信號,控制輸出的小狗。

圖4

我們在圖2中看到 StableDiffusion有2個輸入,其中一個部分就是用于控制邊緣連貫性和臉型提示的ControlNet,我們使用了部分的Canny邊緣和OpenPose人體姿態(tài)。

Lora :由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一種基于低秩矩陣的對大參數(shù)模型進(jìn)行少量參數(shù)微調(diào)訓(xùn)練的方法,廣泛引用在各種大模型的下游使用中。AI真人寫真需要保證最后生成的圖像和我們想要生成的人是相像的,這就需要我們使用Lora 技術(shù),對輸入的少量圖片,進(jìn)行一個簡單的訓(xùn)練,從而使得我們可以得到一個小的指定人臉(ID)的模型。當(dāng)然這一技術(shù)也可以廣泛用于,風(fēng)格,物品等其他指定形象的Lora模型訓(xùn)練,大家可以在civitai.com等相關(guān)網(wǎng)頁上尋找自己想要的Lora模型。

人臉相關(guān)AI模型

針對AI寫真這一特定領(lǐng)域,如何使用盡量少的圖片,快速的訓(xùn)練出又真實又相像的人臉Lora模型,是我們能夠產(chǎn)出高質(zhì)量AI寫真的關(guān)鍵,網(wǎng)絡(luò)上也有大量的文章和視頻資料為大家介紹如何訓(xùn)練。這里我們介紹一些在這個過程中,我們使用的開源AI模型,用于提升最后人臉Lora訓(xùn)練的效果。

在這個過程中我們大量的使用了 ModelScope 和其他Github的開源模型,用于完成如下的人臉功能

人臉模型

模型卡片

功能

使用

FaceID

https://github.com/deepinsight/insightface

對矯正后的人臉提取特征,同一個人的特征距離會更接近

EasyPhoto圖片預(yù)處理,過濾非同ID人臉EasyPhoto訓(xùn)練中途驗證模型效果EasyPhoto預(yù)測挑選基圖片

人臉檢測

cv_resnet50_face

輸出一張圖片中人臉的檢測框和關(guān)鍵點

訓(xùn)練預(yù)處理,處理圖片并摳圖預(yù)測定位模板人臉和關(guān)鍵點

人臉分割

cv_u2net_salient

顯著目標(biāo)分割

訓(xùn)練預(yù)處理,處理圖片并去除背景

人臉融合

cv_unet-image-face-fusion

融合兩張輸入的人臉圖像

預(yù)測,用于融合挑選出的基圖片和生成圖片,使得圖片更像ID對應(yīng)的人

人臉美膚

cv_unet_skin_retouching_torch

對輸入的人臉進(jìn)行美膚

訓(xùn)練預(yù)處理:處理訓(xùn)練圖片,提升圖片質(zhì)量預(yù)測:用于提升輸出圖片的質(zhì)量。
EasyPhoto & SDWebUI

SDWebUI [Repo]是社區(qū)最常用的StableDiffusion開發(fā)工具,從年初開源至今,已在Github 擁有100k 的star,我們提到的文圖生成/ControlNet/Lora等功能,都被社區(qū)開發(fā)者貢獻(xiàn)到這一工具中,用于大家快速部署一個可以調(diào)試的文圖生成服務(wù),所以我們也在SDWebUI下實現(xiàn)了EasyPhoto插件,將上述原理提到的 人臉預(yù)處理/訓(xùn)練/藝術(shù)照生成全部集成到了這一插件中。

項目地址:https://github.com/aigc-apps/sd-webui-EasyPhoto

用戶可以參考SDWebUI的插件使用方式進(jìn)行安裝使用。

 

 

EasyPhoto插件簡介

EasyPhoto是一款Webui UI插件,用于生成AI肖像畫,該代碼可用于訓(xùn)練與用戶相關(guān)的數(shù)字分身。

建議使用 5 到 20 張肖像圖片進(jìn)行訓(xùn)練,最好是半身照片且不要佩戴眼鏡(少量可以接受)。訓(xùn)練完成后,EasyPhoto可以在推理部分生成圖像。EasyPhoto支持使用預(yù)設(shè)模板圖片與上傳自己的圖片進(jìn)行推理。

圖1, 圖5這些是插件的生成結(jié)果,從生成結(jié)果來看,插件的生成效果還是非常不錯的:

圖5

每個圖片背后都有一個模板,EasyPhoto會對模板進(jìn)行修改使其符合用戶的特征。在EasyPhoto插件中,Inference側(cè)已經(jīng)預(yù)置了一些模板,可以用插件預(yù)置的模板進(jìn)行體驗;另外,EasyPhoto同樣可以自定義模板,在Inference側(cè)有另外一個tab頁面,可以用于上傳自定義的模板。如下圖所示。

圖6

而在Inference預(yù)測前,我們需要進(jìn)行訓(xùn)練,訓(xùn)練需要上傳一定數(shù)量的用戶個人照片,訓(xùn)練的產(chǎn)出是一個Lora模型。該Lora模型會用于Inference預(yù)測。

總結(jié)而言,EasyPhoto的執(zhí)行流程非常簡單:1、上傳用戶圖片,訓(xùn)練一個與用戶相關(guān)的Lora模型;2、選擇模板進(jìn)行預(yù)測,獲得預(yù)測結(jié)果。

 

安裝方式一:SDWebUI界面安裝

網(wǎng)絡(luò)良好的情況下!。≡赟DWebUI中跳轉(zhuǎn)到Extentions,然后選擇install from URL。輸入https://github.com/aigc-apps/sd-webui-EasyPhoto,點擊下方的install即可安裝。

在安裝過程中,會自動安裝依賴包,這個需要耐心等待一下。安裝完需要重啟WebUI。

圖7

安裝方式二:源碼安裝

如果你想要使用項目源碼安裝,直接進(jìn)入到Webui的extensions文件夾,打開git工具,git clone即可。下載完成后,重新啟動webui,便會檢查需要的環(huán)境庫并且安裝。圖8

其他安裝項:ControlNet

EasyPhoto需要SDWebUI支持ControlNet,具體使用的相關(guān)插件是Mikubill/sd-webui-controlnet。在使用 EasyPhoto 之前,您需要安裝這個軟件源。

此外,我們至少需要三個 Controlnets 用于推理。因此,您需要設(shè)置Multi ControlNet: Max models amount (requires restart)

圖9

EasyPhoto訓(xùn)練

EasyPhoto訓(xùn)練包含如下2個步驟 1. 上傳個人圖片 2. 調(diào)整訓(xùn)練參數(shù) 3點擊訓(xùn)練并設(shè)置ID, 整體界面如下

圖10

上傳訓(xùn)練圖片

左邊是訓(xùn)練圖片,點擊Upload Photos即可上傳圖片,點擊Clear Photos可以刪除已經(jīng)上傳的圖片

調(diào)整訓(xùn)練參數(shù)

上傳完圖片后,右邊是訓(xùn)練參數(shù),初次訓(xùn)練可不做參數(shù)調(diào)整。圖11

這里我們也對參數(shù)進(jìn)行一個介紹

 

 

參數(shù)名

含義

resolution

訓(xùn)練時喂入網(wǎng)絡(luò)的圖片大小,默認(rèn)值為512

validation & save steps

驗證圖片與保存中間權(quán)重的steps數(shù),默認(rèn)值為100,代表每100步驗證一次圖片并保存權(quán)重

max train steps

最大訓(xùn)練步數(shù),默認(rèn)值為800

max steps per photos

每張圖片的最大訓(xùn)練數(shù),默認(rèn)為200,與max train steps結(jié)合取校

train batch size

訓(xùn)練的批次大小,默認(rèn)值為1

gradient accumulationsteps

進(jìn)行梯度累計,默認(rèn)值為4,train batch size=1的時候,每個step相當(dāng)于喂入四張圖片

dataloader num workers

數(shù)據(jù)加載的works數(shù)量,windows下不生效,因為設(shè)置了會報錯,Linux正常設(shè)置

learning rate

訓(xùn)練Lora的學(xué)習(xí)率,默認(rèn)為1e-4

rank Lora

權(quán)重的特征長度,默認(rèn)為128

network alpha

Lora訓(xùn)練的正則化參數(shù),一般為rank的二分之一,默認(rèn)為64

根據(jù)上述表格最終訓(xùn)練步數(shù)的計算公式也比較簡單。

簡單來理解就是:圖片數(shù)量少的時候,訓(xùn)練步數(shù)為photo_num*max_steps_per_photos。圖片數(shù)量多的時候,訓(xùn)練步數(shù)為max_train_steps。

訓(xùn)練&設(shè)置ID

完成設(shè)置后,點擊下方的開始訓(xùn)練,此時需要在上方填入一下User ID,比如 用戶的名字,然后就可以開始訓(xùn)練了。

圖12

 

 

 

 

 

 

 

 

 

 

觀察訓(xùn)練

!初次訓(xùn)練時會從我們預(yù)備的oss(公用)上下載一部分預(yù)訓(xùn)練模型的權(quán)重,我們耐心等待即可,下載進(jìn)度需要關(guān)注終端。

圖13

訓(xùn)練正常開始的相關(guān)log

圖14

終端顯示成這樣就已經(jīng)訓(xùn)練完了,最后這步是在計算驗證圖像與用戶圖像之間的人臉 ID 差距,從而實現(xiàn) Lora 融合,確保我們的 Lora 是用戶的完美數(shù)字分身。

圖15

EasyPhoto預(yù)測

訓(xùn)練完后,我們需要將tab頁轉(zhuǎn)到Inference。由于Gradio的特性,剛訓(xùn)練好的模型不會自動刷新,可以點擊Used id旁的藍(lán)色旋轉(zhuǎn)按鈕進(jìn)行模型刷新。

圖16

刷新完后選擇剛剛訓(xùn)練的模型,然后選擇對應(yīng)的模板即可開始預(yù)測。初次預(yù)測需要下載一些modelscope的模型,耐心等待一下即可。

預(yù)置了部分模板,也可以切到upload image,直接自己上傳模板進(jìn)行預(yù)測。然后我們就可以獲得預(yù)測結(jié)果了。

圖17

預(yù)測參數(shù)說明

關(guān)于預(yù)測界面的部分參數(shù)說明

參數(shù)名

含義

After Face Fusion Ratio

第二次人臉融合的比例,越大代表越像

First Diffusion steps

第一次Stable Diffusion的步數(shù)

First Diffusion denoising strength

第一次Stable Diffusion重建的比例

Second Diffusion steps

第二次Stable Diffusion的步數(shù)

Second Diffusion denoising strength

第二次Stable Diffusion重建的比例

Crop Face Preprocess

是否先裁剪人臉后再進(jìn)行處理,適合大圖

Apply Face Fusion Before

是否進(jìn)行第一次人臉融合

Apply Face Fusion After

是否進(jìn)行第一次人臉融合

寫在最后

EasyPhoto全部使用來自開源社區(qū)的模型和相關(guān)技術(shù),旨在探討StableDiffusion在AIGC X 真人寫真領(lǐng)域的技術(shù)和相關(guān)應(yīng)用,文章所有涉及的圖片僅做演示使用,如有侵權(quán)請及時聯(lián)系我們,也請大家引用時表明轉(zhuǎn)載。。

非常歡迎大家下載試用,并參與開發(fā),共建真像美的AI寫真!

 

贊助本站

人工智能實驗室
相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機(jī)會 | 展會港