如今要拍攝一組寫真,需要服裝、道具、燈光、場地、布景、拍攝、后期等過程。整個過程需要統一才能形成好的寫真效果?,F在有了AI繪圖技術,我們可以實現通過AI繪圖,只用計算機計算就得到一組接近真實的寫真照嗎?答案是可以的!
其實基于現有的很多AI工具,都能實現真人AI寫真,之前我介紹過了Stable Diffusion的WebUI和ComfyUI,今天我們仍然以所有AI繪圖工具中,控圖能力最強的Stable Diffusion為例,為大家深入淺出地介紹如何使用Stable Diffusion進行真人AI寫真的創作。
話不多說,我們先看效果,下圖是我做過的一部分AI寫真,有男人,女人,和小孩
一、如何實現
現在,我們來整理一下思路,如何利用AI實現真人寫真?大致上,我們大概可以想到以下幾個思路:
在以上思路中,我們進一步分析拆解,可以發現其實可以得到以下幾個關鍵步驟
我們就以其中最小關鍵步驟為切入點來講解
二、AI換臉
在Stable Diffusion中進行AI換臉是十分容易的,主要得益于WebUI強大的第三方插件商店,目前常用的roop和faceSwap兩款插件,可以非常方便快速的實現AI換臉
1. 環境準備
要使用AI換臉插件,我們需要先安裝在需要的環境 準備環境的過程中,可能出現各種安裝錯誤,這里不一一列舉,大家有問題可以提出來,我看到會為大家解答!
1. 安裝Microsoft C++ 生成工具
1. 進入 頁面,點擊“下載生成工具”。
2. 打開下載的exe文件,選擇“使用C++的桌面開發”,然后點擊“安裝”。安裝會占用大約9G空間,建議選擇非系統盤并預留空間
3. 安裝完成后,最好重啟電腦。
2. 安裝insightface 打開命令行窗口(Win+r,輸入cmd,回車,可快速打開命令行窗口)
2. 進入stable-diffusion-webui的Scripts目錄下:“X:\xxx\stable-diffusion-webui根目錄\venv\Scripts”
輸入命令pip install insightface==0.7.3(安裝特定版本)
以下換臉示例中,我們就以馬斯克的一張網圖為原型進行換臉替換
馬斯克
2. roop
roop插件是WebUI中的其中一款換臉插件
安裝
通過代碼倉庫安裝:擴展->從網址安裝->擴展的git倉庫網址 輸入再點擊安裝即可
通過代碼倉庫安裝
通過插件商店安裝:擴展->可下載->加載擴展列表 輸入roop搜索,再點擊安裝即可
通過插件商店安裝
下載模型
下載 inswapper_128.onnx 模型: 將下載的 inswapper_128.onnx 模型替換到 /models/roop/ 目錄中。
使用
安裝完成之后,重啟sd-webui,我們就能在文生圖和圖生圖都看到roop插件了。roop插件的界面基本上也一目了然,大概看看就知道怎么使用了。 Roop只會修改五官、眉毛以及臉型,不會改變膚色
1. 文生圖
我們用以下咒語先畫一個帥哥出來
best quality,masterpiece,
1boy,male focus,solo,facial hair,necktie,realistic,formal,suit,brown background,black necktie,looking at viewer,upper body,beard,brown hair,shirt,jacket,tongue,white shirt,black jacket,collared shirt,stubble,brown eyes,black suit,
文生圖帥哥
這時,我們還沒啟用roop,現在我們再啟用roop,把馬斯克的臉替換上去
roop
于是,我們就得到了這樣的圖片
融合圖片
圖生圖
文生圖如此,那圖生圖其實也大同小異,我們隨便從網絡抓一個帥哥圖片
網絡帥哥
然后調整我們的SD參數
SD參數
按照普通的圖生圖模式,把重繪幅度拉低到0.3-0.6之間就行,當然最重要的還是啟動roop換臉插件` 于是,我們最終得到這樣的融合圖片
網絡帥哥+馬斯克
進階使用
上面流程中,我們使用默認參數即可,其實它的界面上還有一些可調整的參數
逗號分割的面部編號 即我們可以選擇替換圖片中的第幾個人臉,從左往右從0開始(比如我們圖片有兩個人,我們要替換右邊的人臉,則填1),非常適合多人臉替換,我們可以挨個進行替換 面部修復/面部修復強度 可以選擇面部修復算法為CodeFormer或GFPGAN 放大算法/放大倍數 即對輸入圖片進行放大,可以選擇不同的放大算法來保證圖片放大后的質量
注意:請確保輸入圖像的臉部不要被頭發帽子等遮擋物遮擋
3. faceSwap
那另一款換臉插件faceSwap其實也和roop非常類似
安裝
通過代碼倉庫安裝:擴展->從網址安裝->擴展的git倉庫網址輸入再點擊安裝即可
通過代碼倉庫安裝
通過插件商店安裝:擴展->可下載->加載擴展列表 輸入faceSwapLab搜索,再點擊安裝即可
通過插件商店安裝
使用
faceSwap
通過faceSwap換臉,我們得到以下效果
文生圖換臉
具體過程就不贅述了,同roop一樣,文生圖和圖生圖均能換臉
進階使用
faceSwap,相比于roop來說,要稍微強大一點,它提供的功能更全,提供配置參數更多,不過大體和roop差不多,包括面部序號、面部修復、放大算法以及后重繪等。值得一提的是,faceSwap提供了一個非常輕量的人臉模型訓練功能,它只需要你提供少量圖片(當然圖片越多效果越好),就能輕松訓練一個輕量模型,跟直接替換相比,使用訓練的模型進行換臉,可以使得最終結果更像,在插件界面可以選擇自己訓練好的人臉模型
模型訓練
總體來說,不管是roop還是faceSwap,他們都提供了一種快速便捷的AI換臉功能,在很多場景下,這樣的方式,其實就能完成真人AI寫真了。
當然,如果你親自去嘗試了,你還是會發現這樣的換臉插件在某些情況下,圖片是很難達到預期的,包括臉部融合度,包括畫面精細度等。
因此,如果需要讓寫真更加“真”,我們需要繼續探索其他的方式!
三、AI繪制人物
在聊真人模型訓練之前,我們先要學會如何用SD繪制人物的圖片。首先,讓我們繪制一個美女出來吧!
1. 大模型
首先確定你要繪制的畫面風格,選擇一個大模型,一般來說,我會將大模型粗暴的分為寫實、動漫、2.5D三大類,然后再去細分不同的畫風 比如以下是我收藏的一些寫實大模型
寫實大模型
我們就以國風大模型為例,選擇“國風漢服寫實”大模型
2. lora模型
根據實際情況選擇是否使用lora模型,lora模型可以是畫風lora、可以是人物lora、也可以是特定部位lora 比如以下是我收藏的一些lora模型
lora模型
這里,我不需要選擇lora模型
關于模型下載,我一般使用c站和國內的liblib (不能下載的文末掃碼找我直接獲?。?/p>
C站:
liblib:
下載模型之后,保存網站上的首圖首圖,以及作者的一些出圖建議,能更加方便下次使用
3.咒語(提示詞)
提示詞,是出圖的關鍵,Stable Diffusion會根據你的提示詞的內容、關系、以及權重等,來決定它會如何進行降噪出圖。一般來說提示詞分為幾個部分
畫質畫風詞
畫質詞:(masterpiece:1.2), best quality, highres,extremely detailed CG,perfect lighting,8k wallpaper, 真實系:photograph, photorealistic, 插畫風:Illustration, painting, paintbrush, 二次元:anime, comic, game CG, 3D:3D,C4D render,unreal engine,octane render,
畫風詞:Cyberpunk 賽博朋克 8bit/16bit pixel 像素風 studio ghibli 宮崎駿風格 pixel style 皮克斯風格 Chinese ink style 水墨畫
2. 畫面主體描述
人物、年齡、發型,頭發顏色情緒表情,衣服裝束,正在干什么
環境/場景/燈光/構圖
比如下雨天的咖啡廳,正面視覺、人物特寫
Lora(如果需要)
加載lora、hypernetwork等觸發內容
負面提示詞
負面提示詞基本可以通用,包括一些低畫質,多手多腳之類的
負面詞:NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)),((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331),(morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331),(extra legs:1.331), (fused fingers:1.5), (too many fingers:1.5), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))), NSFW:not Suitable For Work不適合在公開場合出現的圖片
我們使用以下提示詞來畫一個國風漢服寫實美女`
best quality,masterpiece,absurdres,Highly detailed,ultra-fine painting,extreme detail description,Professional,
1girl,full body,hair ornament,holding,necklace,orange with white chest pleated skirt,red waistband,red with white waistband,tang style outfits,transparent background,
hanfu,tang style outfits,
4. 其他參數
這里的很多參數都還有各自能繼續深究的點,今天重點不在這,就先略過了,有必要可以出文單獨分析
1. 采樣方法:不同的采樣方法適用于不同畫風
2. 迭代步數:理論上迭代步數越高,畫面越精細,出圖時間也越長,但也和采樣方法對應,有的采樣方法可以在很少的步數內就出圖,后續增加的迭代步數所換來的收益就不大了
3. 高分辨率修復:開啟高分辨率修復可以讓SD對圖像進行二次高清重繪放大
4. 放大算法:不同的放大算法有不同放大效果,一般寫實畫風推薦4x-UltralSharp或8x_NMKD_Superscale_150000_G,動漫畫風推薦R-ESRGAN 4x Anime6B
5. 寬高:定義出圖尺寸,一般需要參考大模型作者或lora作者給出的參考尺寸,需要更大尺寸圖片可以再通過后期放大
6. 隨機種子數:方便重現出圖
最終我以如下參數(圖中標注為關鍵參數),來繪制一張國風漢服美女圖
參數
國風美女
四、lora模型訓練
學會繪制美女之后,下一步我們就需要使用自己訓練的lora模型去和繪制的美女融合了,那么我們就需要學習如何訓練lora模型
訓練步驟
訓練一個自己的lora模型分為幾個步驟
1. 準備數據集:準備好需要訓練的lora的數據來源
2. 圖片預處理:如果是煉制人物臉部lora,那么盡量讓畫面純凈,僅包含人物上半身,且只有想要訓練的人臉
3. 數據集打標簽:這一步的作用是告訴AI你的圖片包含什么元素
對于標簽:如果你想保留人物的某個特征,就刪掉對應標簽,這樣AI就會認為這個人就是這個特征;如果你想靈活調整某個特征,那就要把這個特征打上標簽。舉個例子:如果你有紅色頭發,你不打紅色頭發標簽,那么煉制的lora模型很大概率會一直出紅頭發,即保留了這個特征
4. 開始訓練:這個過程的時間長短,取決于你的電腦配置
5. 測試lora:除了測試訓練出來的lora出圖是否和原圖像以外,也要測試lora的泛化程度,是否存在和原圖過于擬合的情況等
工具
lora訓練的方式有很多,有通過執行腳本訓練,也有通過界面訓練。目前比較常用的lora訓練工具有sd-trainer和賽博煉丹爐。 注意訓練lora對配置有一定要求,顯存至少需要6G,我個人是3060ti 8G的顯卡,20張圖片的訓練時長在三個半小時左右
煉丹工具在結尾給下載地址
1.sd-trainer
sd-trainer
一般來說,我們直接選用新手模式進行訓練即可,當你真正掌握了其中參數的含義之后,再去嘗試專家模型 新手模式下,我們一般只需要修改訓練用的底模(即基于什么大模型進行訓練),數據集目錄,和模型保存名稱即可,其他參數如訓練輪數,學習率等,都可以在熟悉了訓練流程之后再做調整 其中,WD1.4標簽器可以幫助對目錄下的圖片自動打標簽(對應前面數據集打標簽步驟)
WD1.4標簽器
2.賽博煉丹爐
賽博煉丹爐
賽博煉丹爐相對來說界面更加友好,基本上按照界面提示一步一步走即可
1. 選擇大模型,訓練風格,召喚詞
根據自己的需求,來選擇大模型和風格
選擇
2. 上傳數據集圖片
上傳訓練數據集,訓練人物lora盡量為半身像,最好包含人物各個角度的照片
上傳數據集圖片
3. 設置預處理參數
設置訓練分辨率(1.5模型一般默認為512x512),模式以及是否勾選臉部加強(訓練人物臉部lora要勾選)
上傳數據集圖片
4. 數據集打標簽
點擊預處理之后,煉丹爐會對圖片進行人臉識別和裁剪,以及自動打標簽
預處理
我們需要對標簽再做一遍篩選,看看AI識別的標簽是否正確,進行一遍校正
image-1709474293871
5. 開始訓練
沒有問題之后,就可以開始訓練,訓練時間取決于你的電腦配置
lora測試
不管是sd-trainer還是賽博煉丹爐,訓練完成之后,都會得到幾個訓練好的模型文件,模型文件數量根據你的配置決定,對于賽博煉丹爐來說,默認是每一輪訓練結束都生成一個lora模型文件 以下是我之前訓練的lora模型
lora模型
訓練完成之后,我們就要對這些模型進行測試了,我們需要以1-10(假如訓練為10輪,生成了10個lora模型)的全部模型和0.1-1的全部強度兩個維度來進行測試,這塊我們可以使用stable diffusion的xyz腳本來進行一個測試,最終確定哪個模型下的哪個強度,是我們訓練效果最好的
我之前訓練的lora模型的真人原型,后續出圖示例也以這個原型為準
真人原型
比如我之前訓練的模型有iris_20240125002809-000001.safetensors到iris_20240125002809-000010.safetensors,那么我就可以在正向提示詞引入lora時,使用參數替換
并且在最下方選擇使用XYZ腳本進行出圖
XYZ參數
配置正向提示詞加入“銀色頭發”,這樣,我們能測試lora的泛化程度
(silver hair:1), best quality, masterpiec8K.HDR. highresabsurdres:1.2, Kodak portra 400, film grain, blurrybokeh:1.2, lens flare, (vibrant color:1.2),1girl, red dress, looking at viewer
這樣,就能得到一個以模型和強度為維度的二維xyz圖表
xyz圖表
通過觀察xyz圖表,我們就可以很快的找到在相似度和泛化度都很合適的lora模型以及使用強度(既很相像,又能出現銀色頭發)
五、真人AI寫真
經過以上一系列步驟,我們就真的可以開始出AI寫真了 使用訓練的lora模型出真人AI寫真,也有幾種方式
1. lora文生圖直出
這個很好理解,直接用到我們上面提到的繪制美女的方法,加上我們提煉的lora即可
best quality,masterpiece,absurdres,Highly detailed,ultra-fine painting,extreme detail description,Professional,
1girl,full body,hair ornament,holding,necklace,orange with white chest pleated skirt,red waistband,red with white waistband,tang style outfits,transparent background,
lora:iris_v1_000006_0.7-1:0.8,hanfu,tang style outfits,
文生圖+lora直出
不難發現,雖然生成的美女很漂亮,但是她和原型差的太多了,主要原因是人臉在畫面占比太小導致,如果是半身像或近攝,這個相似度會更高
2. 文生圖+lora換臉
為了解決全身像相似度太低的問題,有一種解決方式是使用SD中的強大的修臉工具——ADetailer??赡艽蠹抑繟Detailer能修復崩壞的人臉,但是不知道大家有沒有注意到,ADetailer是可以配置提示詞的,也就是說,我在修臉的時候,可以用上自己的lora來進行修臉
ADetailer修臉
提示詞中,我們去掉人物lora,僅僅使用ADetailer中的lora,我們再試一次
best quality,masterpiece,absurdres,Highly detailed,ultra-fine painting,extreme detail description,Professional,
1girl,full body,hair ornament,holding,necklace,orange with white chest pleated skirt,red waistband,red with white waistband,tang style outfits,transparent background,
hanfu,tang style outfits,
文生圖+lora換臉
這樣一來,這個美女就和原型很像了,但是你可能也發現了,原型的人物臉型更飽滿,而這個美女,是個很明顯的錐子臉,雖然更好看了,但是相似度也就降低了,那這個我們有辦法解決嗎?
當然了,如果對方要求,我就是想要錐子臉,那么到這一步,就夠了
3. lora文生圖+lora換臉
解決臉型問題,其實也不難,還記得我們之前去掉了提示詞中的人物lora的引用嗎?其實只要這里也引用lora,情況就會好很多。首先,我們在文生圖時,就以我們的人物lora為基準出圖,那么臉型一定是相像的,其次,我們再使用ADetailer進行lora換臉,相當于對自己的臉型再做一次換臉,那它的融合度一定是更高的
best quality,masterpiece,absurdres,Highly detailed,ultra-fine painting,extreme detail description,Professional,
1girl,full body,hair ornament,holding,necklace,orange with white chest pleated skirt,red waistband,red with white waistband,tang style outfits,transparent background,
lora:iris_v1_000006_0.7-1:0.8,hanfu,tang style outfits,
lora文生圖+lora換臉
4. 文生圖+圖生圖+lora換臉
除了lora文生圖以外,我們也可以去掉人物lora來出圖,正常繪制美女圖,然后通過圖生圖的ADetailer加lora去做臉部替換,可以通過批量出圖,總會有融合度高的臉型。當然了,這種方式也適用于直接使用網圖來進行lora換臉
下一篇:Tim Vicary創作的小說