自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

修復(fù) SadTalker 無法在新版本 Stable Diffusion WebUI 中運行的問題,你學(xué)會了嗎?

開發(fā) 前端
簡單介紹下SadTalker:SadTalker 可以說是比較早的開源數(shù)字人生產(chǎn)工具,只需要一張人物的照片和語音,我們就可以生成一個人物說話的視頻。雖然現(xiàn)在已經(jīng)有效果更好、更豐富的各種數(shù)字人產(chǎn)品,不過SadTalker還是有一些用處的。

大家好,我是每天分享AI應(yīng)用的螢火君!

使用 Stable Diffusion WebUI 的同學(xué)可能會發(fā)現(xiàn)一個問題,升級到新版本之后(大約是1.9.0之后的版本),原本可以正常使用的 SadTalker 生成時報錯了,用不了了。本文就來分析和解決這個問題。

簡單介紹下SadTalker:SadTalker 可以說是比較早的開源數(shù)字人生產(chǎn)工具,只需要一張人物的照片和語音,我們就可以生成一個人物說話的視頻。雖然現(xiàn)在已經(jīng)有效果更好、更豐富的各種數(shù)字人產(chǎn)品,不過SadTalker還是有一些用處的。

言歸正傳,SadTalker在新版 Stable Diffusion WebUI 中到底發(fā)生了什么問題呢?

分析問題

即然它能運行在老版本的 Stable Diffusion WebUI 中,我猜就是程序兼容性的問題了。

那么到底哪里不兼容呢?程序出了問題,我們一般要先看看錯誤信息是什么。

前端頁面中只顯示了一個 Error,具體的錯誤還得看控制臺中輸出的日志,我這里給大家粘貼出來:

File "/root/SDWebUI/program/extensions/SadTalker/src/face3d/util/my_awing_arch.py", line 18, in calculate_points
    preds = preds.astype(np.float, copy=False)
  File "/root/miniconda3/envs/SDWebUI/lib/python3.10/site-packages/numpy/__init__.py", line 324, in __getattr__
    raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations. Did you mean: 'cfloat'?

看不懂英文的同學(xué)不要害怕,可以找個工具自行翻譯下。

這個錯誤從上往下看是SadTalk中的這個文件報錯了,位置是第18行:

SadTalker/src/face3d/util/my_awing_arch.py

繼續(xù)往下看是 Python3.10 中的 numpy 包拋出的錯誤:

python3.10/site-packages/numpy/__init__.py

再往下是詳細的錯誤說明,大概是說程序使用了 numpy 包中不存在的屬性 float,np.float 是一個過期的別名:

AttributeError: module 'numpy' has no attribute 'float'.

`np.float` was a deprecated alias for the builtin `float`.

而且錯誤說明還給了一個明確的解決方案,直接使用 float 或者使用 np.float64。

To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.

我們做個總結(jié):SadTalk使用了 numpy 中的一個被過期刪除的屬性,然后程序報錯了,解決方案是換個用法。

另外,這個問題僅在新版本的 Stable Diffusion WebUI 中出現(xiàn),可以猜測是新版 SD WebUI 依賴的 numpy 版本升級了,而 SadTalker 沒有同步升級,還在使用舊的 numpy。

解決問題

既然問題說的這么明白了,解決起來就很簡單了。

我們不能將 numpy 降低到舊的版本,因為有的程序需要新版本,那就只能修改 SadTalker 使用新的方式了。

找到 src/face3d/util/my_awing_arch.py 第18行:

preds = preds.astype(np.float, copy=False)

修改為:

preds = preds.astype(float, copy=False)

除了這個地方,還有一處需要修改:

src/face3d/util/preprocess.py 第101行

trans_params = np.array([w0, h0, s, t[0], t[1]])

修改為:

trans_params = np.array([w0, h0, s, t[0][0], t[1][0]])

這個問題也是 numpy 版本升級導(dǎo)致的,t[0] 和 t[1] 是兩個序列,不能直接作為數(shù)組中的元素。根據(jù)上下文我們使用索引取其中的第一個元素就可以了。

修改了這兩處代碼,SadTalker 又能正確的生成視頻了。

安裝插件

修改后的 SadTalker 我也發(fā)布在 Github上了,大家也可以直接使用下面這個鏈接來安裝插件:

https://github.com/bosima/SadTalker

圖片圖片

安裝成功之后別忘了重啟 Stable Diffusion WebUI。

責任編輯:武曉燕 來源: 螢火架構(gòu)
相關(guān)推薦

2023-12-12 08:02:10

2023-06-05 08:36:04

SQL函數(shù)RANK()

2025-01-26 15:31:27

2022-11-09 07:20:43

調(diào)用日志502報錯nginx

2023-09-06 11:31:24

MERGE用法SQL

2023-10-13 09:04:09

2024-10-16 11:28:42

2022-07-08 09:27:48

CSSIFC模型

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2023-06-27 07:21:51

前端開發(fā)坑點

2024-09-30 09:05:46

Linux網(wǎng)絡(luò)延遲

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-19 08:25:38

死鎖Java通信

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機器學(xué)習模型

2024-03-04 07:41:18

SpringAOPOOP?

2025-01-14 08:32:55

JWT令牌.NET

2023-12-07 07:23:39

APIsSDKs
點贊
收藏

51CTO技術(shù)棧公眾號