1.概述
AI數(shù)字人在營銷和品牌推廣中扮演著至關(guān)重要的角色,許多企業(yè)和個(gè)人正積極利用數(shù)字技術(shù)來打造屬于自己的財(cái)富。有沒有一種簡單而免費(fèi)的方式來創(chuàng)建自己的數(shù)字人呢?本篇博客筆者將為大家介紹如何搭建屬于自己的AI數(shù)字人。
2.內(nèi)容
2.1 什么是SadTalker?
生成頭部說話視頻通過人臉圖像和語音音頻仍然面臨著多項(xiàng)挑戰(zhàn),包括不自然的頭部運(yùn)動(dòng)、扭曲的表情和身份的修改。這些問題主要源于對耦合的二維運(yùn)動(dòng)場進(jìn)行學(xué)習(xí)。另一方面,明確使用3D信息也可能導(dǎo)致表達(dá)僵硬和視頻不連貫的問題。
為了應(yīng)對這些挑戰(zhàn),提出了SadTalker模型。該模型從音頻中生成3DMM的3D運(yùn)動(dòng)系數(shù)(包括頭部姿勢和表情),并通過隱式調(diào)制一種新穎的3D感知面部渲染,生成具有說話動(dòng)作的頭部視頻。為了學(xué)習(xí)真實(shí)的運(yùn)動(dòng)系數(shù),分別對音頻和不同類型的運(yùn)動(dòng)系數(shù)之間的連接進(jìn)行了顯式建模。具體而言,我引入了ExpNet,通過從音頻中提取系數(shù)和3D渲染的面部,學(xué)習(xí)準(zhǔn)確的面部表情。
對于頭部姿勢,設(shè)計(jì)了PoseVAE,通過有條件的變分自編碼器合成不同風(fēng)格的頭部運(yùn)動(dòng)。最后,生成的3D運(yùn)動(dòng)系數(shù)被映射到所提出的面部渲染的無監(jiān)督3D關(guān)鍵點(diǎn)空間,并合成最終的視頻。通過大量實(shí)驗(yàn)證明了該方法在運(yùn)動(dòng)和視頻質(zhì)量方面的卓越性。
2.2 快速安裝
GitHub地址:https://github.com/OpenTalker/SadTalker
論文:https://arxiv.org/pdf/2211.12194.pdf
1.環(huán)境準(zhǔn)備
git clone https://github.com/OpenTalker/SadTalker.git
cd SadTalker
conda create -n sadtalker python=3.9
conda activate sadtalker
# install torch 2.2
pip install torch torchvision torchaudio
conda install ffmpeg
pip install -r requirements.txt
pip install dlib # macOS needs to install the original dlib.
2.下載模型
執(zhí)行如下命令,會自動(dòng)下載模型:
bash scripts/download_models.sh
3.安裝深度學(xué)習(xí)工具包
pip install tts
4.啟動(dòng)
python app_sadtalker.py
3.表情建模
Audio Encoder采用ResNet為主框架的編碼器,整合了Wav2Lip模型的音頻編碼分支。這是一個(gè)預(yù)訓(xùn)練的編碼器,通過微調(diào)后續(xù)的全連接層即可完成。Wav2Lip的輸入包括單張人臉圖片和一段音頻,輸出為僅包含嘴巴動(dòng)作的圖片序列。生成的表情系數(shù)與嘴巴相關(guān),有效減少了其他3D系數(shù)(特別是頭部姿態(tài))對表情系數(shù)的影響。
由于現(xiàn)實(shí)中的視頻通常在三維環(huán)境中拍攝,因此三維信息對于提高生成視頻的真實(shí)性至關(guān)重要。然而,之前的研究很少考慮到三維空間,因?yàn)閮H僅從一張平面圖像中很難獲取原始的三維稀疏信息,同時(shí)設(shè)計(jì)高質(zhì)量的面部渲染器也頗具挑戰(zhàn)。受到最近單圖像深度三維重建方法的啟發(fā),研究人員將預(yù)測的三維形變模型(3DMMs)的空間表示作為中間表征。在3DMM中,三維臉部形狀S可以被解耦為:
在這里,S代表三維人臉的平均形狀,而Uid和Uexp則是LSFM morphable模型中身份和表情的正則。系數(shù)α(80維)和β(64維)分別描述個(gè)體身份和表情。為了維持不同姿勢的差異性,系數(shù)r和t分別表示頭部旋轉(zhuǎn)和平移。為了實(shí)現(xiàn)身份無關(guān)的系數(shù)生成,僅將運(yùn)動(dòng)參數(shù)建模為{β, r, t}。
換句話說,我們從輸入的音頻中獨(dú)立學(xué)習(xí)頭部姿勢ρ=[r, t]和表情系數(shù)β,然后使用這些運(yùn)動(dòng)系數(shù)來隱式調(diào)制面部渲染,用于最終的視頻合成。這個(gè)方法保證了生成的視頻在維持頭部姿勢的差異性的同時(shí),實(shí)現(xiàn)了身份無關(guān)的系數(shù)生成,為最終合成的視頻提供了更加自然和逼真的效果。
三維運(yùn)動(dòng)系數(shù)涵蓋了頭部姿勢和表情,其中頭部姿勢表示全局運(yùn)動(dòng),而表情則是相對局部的。由于頭部姿勢與音頻的關(guān)系相對較弱,而嘴唇的運(yùn)動(dòng)與音頻高度相關(guān),完全學(xué)習(xí)所有的系數(shù)可能給網(wǎng)絡(luò)帶來巨大的不確定性。
因此,SadTalker采用了PoseVAE和ExpNet兩個(gè)模塊,分別用于生成頭部姿勢和表情的運(yùn)動(dòng)。通過這種方式,網(wǎng)絡(luò)能夠更有效地處理頭部姿勢和表情之間的關(guān)系,避免不必要的不確定性,同時(shí)更專注于與音頻高度關(guān)聯(lián)的嘴唇運(yùn)動(dòng)的生成。
4.頭部建模
在訓(xùn)練中,我們采用基于編碼器-解碼器結(jié)構(gòu)的方法對固定數(shù)量的幀進(jìn)行PoseVAE(頭部姿勢變分自編碼器)訓(xùn)練。編碼器和解碼器都是兩層MLP(多層感知機(jī)),接受一個(gè)包含連續(xù)t幀頭部姿勢的輸入,并將其嵌入到高斯分布中。在解碼器中,網(wǎng)絡(luò)從采樣分布中學(xué)習(xí)生成t幀姿勢。
值得注意的是,PoseVAE并不直接生成姿勢,而是學(xué)習(xí)第一幀條件下的姿勢殘差。這一特性使得該方法在測試中能夠在第一幀的條件下生成更長、更穩(wěn)定、更連續(xù)的頭部運(yùn)動(dòng)。
類似于條件變分自編碼器(CVAE),PoseVAE在模型中還引入了相應(yīng)的音頻特征和風(fēng)格標(biāo)識,用作節(jié)奏感知和身份風(fēng)格的條件。模型使用KL散度來度量生成運(yùn)動(dòng)的分布,同時(shí)采用均方損失和對抗性損失來確保生成的質(zhì)量。這樣的設(shè)計(jì)綜合考慮了多個(gè)因素,提高了生成視頻的運(yùn)動(dòng)真實(shí)性和質(zhì)量。
?5.人臉合成
在生成真實(shí)的三維運(yùn)動(dòng)系數(shù)后,研究人員采用了一個(gè)精心設(shè)計(jì)的三維圖像動(dòng)畫器來渲染最終的視頻。最近提出的圖像動(dòng)畫方法,如face-vid2vid,能夠隱含地從單一圖像中學(xué)習(xí)3D信息,但該方法需要一個(gè)真實(shí)的視頻作為動(dòng)作驅(qū)動(dòng)信號。而在本論文中提出的臉部渲染方法,通過3DMM系數(shù)來驅(qū)動(dòng)。
為了解決這個(gè)問題,研究人員引入了mappingNet,該網(wǎng)絡(luò)被設(shè)計(jì)用于學(xué)習(xí)顯式的3DMM運(yùn)動(dòng)系數(shù)(頭部姿勢和表情)以及隱式的無監(jiān)督3D關(guān)鍵點(diǎn)之間的關(guān)系。這個(gè)創(chuàng)新性的方法使得從生成的三維運(yùn)動(dòng)系數(shù)到最終視頻的渲染過程更加精準(zhǔn)和可控,為數(shù)字圖像動(dòng)畫領(lǐng)域帶來了新的突破。
通過使用幾個(gè)一維卷積層,mappingNet建立了一個(gè)模型,類似于PIRenderer,它采用時(shí)間系數(shù)的時(shí)間窗口進(jìn)行平滑處理。與PIRenderer不同的是,研究人員發(fā)現(xiàn)在PIRenderer中,人臉對齊的運(yùn)動(dòng)系數(shù)會顯著影響音頻驅(qū)動(dòng)的視頻生成的運(yùn)動(dòng)自然度。因此,mappingNet僅使用表情和頭部姿勢的系數(shù)。
訓(xùn)練階段包含兩個(gè)關(guān)鍵步驟:首先,按照原論文的方法,以自監(jiān)督的方式訓(xùn)練face-vid2vid。然后,在凍結(jié)外觀編碼器、canonical關(guān)鍵點(diǎn)估計(jì)器和圖像生成器的所有參數(shù)之后,使用ground truth視頻的3DMM系數(shù)對mappingNet進(jìn)行微調(diào),以重建的方式進(jìn)行訓(xùn)練。
在無監(jiān)督關(guān)鍵點(diǎn)的領(lǐng)域中,使用L1損失進(jìn)行監(jiān)督訓(xùn)練,并按照其原始實(shí)現(xiàn)方式生成最終的視頻。這種方法可以提高生成視頻的質(zhì)量和自然度,尤其是在考慮到人臉對齊運(yùn)動(dòng)系數(shù)對音頻驅(qū)動(dòng)的影響的情況下。
6.預(yù)覽
本地瀏覽器訪問:http://127.0.0.1:7860/
文章轉(zhuǎn)載自:哥不是小蘿莉
原文鏈接:https://www.cnblogs.com/smartloli/p/18033296文章來源:http://www.zghlxwxcb.cn/news/detail-859948.html
體驗(yàn)地址:引邁 - JNPF快速開發(fā)平臺_低代碼開發(fā)平臺_零代碼開發(fā)平臺_流程設(shè)計(jì)器_表單引擎_工作流引擎_軟件架構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-859948.html
到了這里,關(guān)于AI數(shù)字人SadTalker實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!