目錄
01-FaceChain算法簡(jiǎn)介
02-FaceChain-FACT算法簡(jiǎn)介
03-FaceChain算法流程
04-FaceChain-FACT算法流程
05-FaceChain算法應(yīng)用場(chǎng)景????
06-FaceChain環(huán)境搭建與運(yùn)行
07-FaceChain算法效果展示
08-FaceChain-FACT算法效果展示
01-FaceChain算法簡(jiǎn)介
????FaceChain是一個(gè)可以用來打造個(gè)人數(shù)字形象的深度學(xué)習(xí)模型工具。用戶僅需要提供最低一張照片即可獲得獨(dú)屬于自己的個(gè)人形象數(shù)字替身。它是一個(gè)個(gè)性化的肖像生成框架,它結(jié)合了一系列定制的圖像生成模型和一組豐富的人臉相關(guān)感知理解模型(如人臉檢測(cè)、深度人臉嵌入提取和人臉屬性識(shí)別),以應(yīng)對(duì)上述挑戰(zhàn)并生成真實(shí)的個(gè)性化肖像,其中只有少數(shù)人像圖像作為輸入。
????具體而言,與之前的解決方案(如DreamBooth、InstantBooth或其它僅限LoRA的方法)相比,作者在生成過程中注入了幾個(gè)SOTA人臉模型,實(shí)現(xiàn)了更高效的標(biāo)簽標(biāo)記、數(shù)據(jù)處理和模型后處理。FaceChain被設(shè)計(jì)成一個(gè)由可插入組件組成的框架,這些組件可以輕松調(diào)整以適應(yīng)不同的風(fēng)格和個(gè)性化需求。此外,基于FaceChain,作者進(jìn)一步開發(fā)了幾個(gè)應(yīng)用程序,以構(gòu)建一個(gè)更廣闊的游樂場(chǎng),更好地展示其價(jià)值,包括虛擬試穿和2D會(huì)說話的頭。
??? FaceChain支持在gradio的界面中使用模型訓(xùn)練和推理能力、支持資深開發(fā)者使用python腳本進(jìn)行訓(xùn)練推理,也支持在sd webui中安裝插件使用。上圖展示了幾個(gè)FaceChain工具的測(cè)試樣例生成效果。
02-FaceChain-FACT算法簡(jiǎn)介
????雖然FaceChain是一款具有面部身份保護(hù)功能的個(gè)性化肖像生成工具,但是它需要訓(xùn)練用戶的LoRA模型,這增加了用戶的開發(fā)成本。為了解決該問題,作者提出了一種稱為FaceChain-FACT的零樣本版本,該版本不需要訓(xùn)練Face-LoRA模型。此外,只需要用戶的一張照片就可以生成定制的肖像。與SOTA的商業(yè)應(yīng)用相比,該算法的生成速度加快了100倍,達(dá)到了二級(jí)圖像生成速度。作者集成了一個(gè)基于變換器的人臉特征提取器,其結(jié)構(gòu)類似于穩(wěn)定擴(kuò)散,使穩(wěn)定擴(kuò)散能夠更好地利用人臉信息;該算法使用密集的細(xì)粒度特征作為人臉條件,具有更好的字符再現(xiàn)性;FaceChain FACT與ControlNet和LoRA插件無縫兼容,即插即用。
03-FaceChain算法流程
????上圖展示了FaceChain算法的整體流程,個(gè)人寫真模型的能力來源于Stable Diffusion模型的文生圖功能,輸入一段文本或一系列提示詞,輸出對(duì)應(yīng)的圖像。作者考慮影響個(gè)人寫真生成效果的主要因素:寫真風(fēng)格信息,以及用戶人物信息。為此,作者分別使用線下訓(xùn)練的風(fēng)格LoRA模型和線上訓(xùn)練的人臉LoRA模型以學(xué)習(xí)上述信息。LoRA是一種具有較少可訓(xùn)練參數(shù)的微調(diào)模型,在Stable Diffusion中,可以通過對(duì)少量輸入圖像進(jìn)行文生圖訓(xùn)練的方式將輸入圖像的信息注入到LoRA模型中。因此,個(gè)人寫真模型的能力分為訓(xùn)練與推斷兩個(gè)階段,訓(xùn)練階段生成用于微調(diào)Stable Diffusion模型的圖像與文本標(biāo)簽數(shù)據(jù),得到人臉LoRA模型;推斷階段基于人臉LoRA模型和風(fēng)格LoRA模型生成個(gè)人寫真圖像。
輸入:用戶上傳的包含清晰人臉區(qū)域的圖像
輸出:人臉LoRA模型
步驟:首先,分別使用基于朝向判斷的圖像旋轉(zhuǎn)模型,以及基于人臉檢測(cè)和關(guān)鍵點(diǎn)模型的人臉精細(xì)化旋轉(zhuǎn)方法處理用戶上傳圖像,得到包含正向人臉的圖像;接著,使用人體解析模型和人像美膚模型,以獲得高質(zhì)量的人臉訓(xùn)練圖像;隨后,使用人臉屬性模型和文本標(biāo)注模型,結(jié)合標(biāo)簽后處理方法,產(chǎn)生訓(xùn)練圖像的精細(xì)化標(biāo)簽;最后,使用上述圖像和標(biāo)簽數(shù)據(jù)微調(diào)Stable Diffusion模型得到人臉LoRA模型。
推理階段的細(xì)節(jié)如下所述:
輸入:訓(xùn)練階段用戶上傳圖像,預(yù)設(shè)的用于生成個(gè)人寫真的輸入提示詞
輸出:個(gè)人寫真圖像
步驟:首先,將人臉LoRA模型和風(fēng)格LoRA模型的權(quán)重融合到Stable Diffusion模型中;接著,使用Stable Diffusion模型的文生圖功能,基于預(yù)設(shè)的輸入提示詞初步生成個(gè)人寫真圖像;隨后,使用人臉融合模型進(jìn)一步改善上述寫真圖像的人臉細(xì)節(jié),其中用于融合的模板人臉通過人臉質(zhì)量評(píng)估模型在訓(xùn)練圖像中挑選;最后,使用人臉識(shí)別模型計(jì)算生成的寫真圖像與模板人臉的相似度,以此對(duì)寫真圖像進(jìn)行排序,并輸出排名靠前的個(gè)人寫真圖像作為最終輸出結(jié)果。
04-FaceChain-FACT算法流程
????上圖展示了FaceChain-FACT算法的具體流程。詳細(xì)的步驟如下所述:
首先,使用一系列圖像預(yù)處理,包括人臉分割、人臉裁剪和對(duì)齊、手部檢測(cè)、人臉質(zhì)量篩選等,來篩選并獲得訓(xùn)練數(shù)據(jù)集。
然后,利用基于transformer的人臉特征提取器來提取特征,并利用倒數(shù)第二層的密集細(xì)粒度特征作為人臉條件。
接著,穩(wěn)定擴(kuò)散通過FACT適配器接收人臉條件,并將其與文本嵌入相結(jié)合,生成人像圖像。
最后,通過融合FaceChain的各種LoRA模型,它可以生成各種風(fēng)格的肖像。
05-FaceChain算法應(yīng)用場(chǎng)景????
05.01-虛擬試衣
????隨著網(wǎng)上購(gòu)物的快速發(fā)展,人們對(duì)虛擬試穿的需求激增,虛擬試穿為特定的人和服裝提供虛擬試穿體驗(yàn)。根據(jù)人或服裝信息是否固定在交互體驗(yàn)中,虛擬試穿方法的核心思想可以分為生成服裝和人的數(shù)字雙胞胎。
????作為人臉/以人為中心的身份保護(hù)肖像生成的游樂場(chǎng),F(xiàn)aceChain還支持固定服裝和生成人物的虛擬試穿。具體來說,給定要試穿的服裝的真實(shí)或虛擬模型圖像,以及經(jīng)過訓(xùn)練的人臉LoRA模型,F(xiàn)aceChain可以重新繪制服裝外部的區(qū)域,包括人物和背景,以獲得虛擬試穿結(jié)果。
05.02-頭像特寫
????為了進(jìn)一步探索生成的肖像的使用案例,作者想到了讓肖像生動(dòng)起來,具體來說,如上圖所示,用戶從以前生成的人像庫(kù)中選擇一張人臉圖像,然后用戶提供一個(gè)音頻片段,F(xiàn)aceChain將使用它們輸出一個(gè)講肖像的視頻。為了實(shí)現(xiàn)這一點(diǎn),作者測(cè)試了幾種會(huì)說話的頭/臉?biāo)惴ǎ@些算法可以生成嘴唇與輸入音頻相對(duì)應(yīng)的人像視頻。最后,作者選擇sadtake作為我們的談話頭部后端算法,因?yàn)閣av2lip和視頻重新命名只能改變面部的嘴唇,而SadTaker提出的PoseVAE和ExpNet可以分別改變頭部姿勢(shì)和面部表情,其中頭部姿勢(shì)可以從46個(gè)嵌入中選擇一個(gè),表情系數(shù)可以控制,并且還可以控制眨眼頻率。
????因?yàn)镾adTaker的輸入和輸出分辨率是256或512,如果原始輸入圖像中的人臉分辨率相對(duì)較大,或者用戶只是想提高整體分辨率,我們也支持使用GFPGAN作為后處理模塊,可以將視頻的分辨率提高一倍。至于音頻剪輯,我們支持三種選項(xiàng):1)TTS合成,2)麥克風(fēng)錄制,3)本地文件上傳。至于TTS合成,作者使用微軟Edge的API,因?yàn)樗С侄嗾Z言混合輸入,并支持多種語言合成,這使得FaceChain對(duì)世界各地的用戶更加友好。
06-FaceChain環(huán)境搭建與運(yùn)行
06.01-環(huán)境準(zhǔn)備
FaceChain是一個(gè)組合模型,基于PyTorch機(jī)器學(xué)習(xí)框架,以下是已經(jīng)驗(yàn)證過的主要環(huán)境依賴:
# 軟件配置
python環(huán)境: py3.8, py3.10
pytorch版本: torch2.0.0, torch2.0.1
CUDA版本: 11.7
CUDNN版本: 8+
操作系統(tǒng)版本: Ubuntu 20.04, CentOS 7.9
GPU型號(hào): Nvidia-A10 24G
# 硬件配置
GPU: 顯存占用約19G
磁盤: 推薦預(yù)留50GB以上的存儲(chǔ)空間
06.02-Demo執(zhí)行方案???????
方案1--使用ModelScope提供的notebook環(huán)境
# Step1:?我的notebook?->?PAI-DSW?->?GPU環(huán)境
# Step2:?進(jìn)入Notebook cell,執(zhí)行下述命令從github clone代碼:
!GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
# Step3:?切換當(dāng)前工作路徑,安裝依賴
import os
os.chdir('/mnt/workspace/facechain') # 注意替換成上述clone后的代碼文件夾主路徑
print(os.getcwd())
!pip3 install gradio==3.50.2
!pip3 install controlnet_aux==0.0.6
!pip3 install python-slugify
!pip3 install onnxruntime==1.15.1
!pip3 install edge-tts
!pip3 install modelscope==1.10.0
# Step4:?啟動(dòng)服務(wù),點(diǎn)擊生成的URL即可訪問web頁(yè)面,上傳照片開始訓(xùn)練和預(yù)測(cè)
!python3 app.py
???????
方案2--創(chuàng)建docker鏡像
# Step1: 機(jī)器資源
您可以使用本地或云端帶有GPU資源的運(yùn)行環(huán)境。
如需使用阿里云ECS,可訪問:https://www.aliyun.com/product/ecs,推薦使用”鏡像市場(chǎng)“中的CentOS 7.9 64位(預(yù)裝NVIDIA GPU驅(qū)動(dòng))
# Step2: 將鏡像下載到本地 (前提是已經(jīng)安裝了docker engine并啟動(dòng)服務(wù),具體可參考:https://docs.docker.com/engine/install/)
# For China Mainland users:
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.4
# For users outside China Mainland:
docker pull registry.us-west-1.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.4
# Step3: 拉起鏡像運(yùn)行
docker run -it --name facechain -p 7860:7860 --gpus all registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.4 /bin/bash # 注意 your_xxx_image_id 替換成你的鏡像id
# 注意:如果提示無法使用宿主機(jī)GPU的錯(cuò)誤,可能需要安裝nvidia-container-runtime
# 1. 安裝nvidia-container-runtime:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
# 2. 重啟docker服務(wù):sudo systemctl restart docker
# Step4: 在容器中安裝gradio
pip3 install gradio==3.50.2
pip3 install controlnet_aux==0.0.6
pip3 install python-slugify
pip3 install onnxruntime==1.15.1
pip3 install edge-tts
pip3 install modelscope==1.10.0
# Step5: 獲取facechain源代碼
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
python3 app.py
# Note: FaceChain目前支持單卡GPU,如果您的環(huán)境有多卡,請(qǐng)使用如下命令
# CUDA_VISIBLE_DEVICES=0 python3 app.py
# Step6: 點(diǎn)擊 "public URL", 形式為 https://xxx.gradio.live
???????
方案3--創(chuàng)建Conda虛擬環(huán)境
#?Step1:?創(chuàng)建并進(jìn)入虛擬環(huán)境
conda create -n facechain python=3.8 # 已驗(yàn)證環(huán)境:3.8 和 3.10
conda activate facechain
#?Step2:?獲取源代碼
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
#?Step3:?安裝三方依賴
pip3 install -r requirements.txt
pip3 install -U openmim
mim install mmcv-full==1.7.0
#?Step4:?執(zhí)行demo
# 進(jìn)入facechain文件夾,執(zhí)行:
python3 app.py
# Note: FaceChain目前支持單卡GPU,如果您的環(huán)境有多卡,請(qǐng)使用如下命令
# CUDA_VISIBLE_DEVICES=0 python3 app.py
# 最后點(diǎn)擊log中生成的URL即可訪問頁(yè)面。
???????
方案4--Colab中執(zhí)行Demo
https://colab.research.google.com/github/modelscope/facechain/blob/main/f
07-FaceChain算法效果展示
圖7.1-FaceChain算法效果展示1
圖7.2-FaceChain算法效果展示2
08-FaceChain-FACT算法效果展示
圖8.1-FaceChain-FACT算法效果展示1
圖8.2-FaceChain-FACT算法效果展示2
文章來源:http://www.zghlxwxcb.cn/news/detail-797484.html
圖8.3-FaceChain-FACT算法效果展示3文章來源地址http://www.zghlxwxcb.cn/news/detail-797484.html
到了這里,關(guān)于AIGC內(nèi)容分享(三十五):AIGC賦能的“秒鴨相機(jī)”到底有多強(qiáng)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!