开源人脸融合 AI换脸工具-FaceFusion

这篇具有很好参考价值的文章主要介绍了开源人脸融合 AI换脸工具-FaceFusion。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、介绍

FaceFusion是一个免费开源的人脸融合-AI换脸工具,使用python开发

facefusion神奇人脸合成,Ai智能,人工智能,python

二、 安装

提示:安装需要技术技能,不适合初学者。

基本

1.设置你的平台 

Linux

Python

apt install python3.10

PIP

apt install python3-pip

GIT

apt install git-all

FFmpeg

apt install ffmpeg
MacOS

Python

brew install python@3.10

PIP

python -m ensurepip

GIT

brew install git

FFmpeg

brew install ffmpeg
Windows 

 Python

winget install -e --id Python.Python.3.10

PIP

python -m ensurepip

GIT

winget install -e --id Git.Git

FFmpeg

winget install -e --id Gyan.FFmpeg

重新启动系统以使 FFmpeg 正常运行。

shutdown /r

工具集:

Microsoft Visual C++ 2015 可再发行组件

winget install -e --id Microsoft.VCRedist.2015+.x64

Microsoft Visual Studio 2022 构建工具

在安装过程中,请确保选择包含C++包的桌面开发。

winget install -e --id Microsoft.VisualStudio.2022.BuildTools --override "--wait --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended"

2. 克隆存储库

git clone https://github.com/facefusion/facefusion

 3. 安装依赖项

强烈建议使用 venvconda 以避免出现问题。

pip install -r requirements.txt

4. 完成

使用 python run.py 命令运行 FaceFusion。

加速度

CUDA (Nvidia)

1.安装CUDA 工具包 11.8cuDNN for Cuda 11.x

2.安装依赖项:

pip uninstall onnxruntime onnxruntime-gpu
pip install onnxruntime-gpu==1.15.1

3.提供程序可用时的用法:

python run.py --execution-providers cuda
CoreML (Apple)

Apple Silicon

1.安装依赖项:

pip uninstall onnxruntime onnxruntime-silicon
pip install onnxruntime-silicon==1.13.1

2.提供程序可用时的用法:

python run.py --execution-providers coreml

Apple Legacy

1.安装依赖项:

pip uninstall onnxruntime onnxruntime-coreml
pip install onnxruntime-coreml==1.13.1

2.提供程序可用时的用法: 

python run.py --execution-providers coreml

DirectML (Windows)

1.安装依赖项:

pip uninstall onnxruntime onnxruntime-directml
pip install onnxruntime-directml==1.15.1

2.提供程序可用时的用法:

python run.py --execution-providers dml

OpenVINO (英特尔)

1.安装依赖项:

pip uninstall onnxruntime onnxruntime-openvino
pip install onnxruntime-openvino==1.15.0

2.提供程序可用时的用法:

python run.py --execution-providers openvino

三、故障排除

平台相关:

错误的依赖项解析

确保运行 Python 3.10 以防止依赖项冲突。

没有名为“xxx”的模块

ModuleNotFoundError 表示依赖项未正确安装。

pip install -r requirements.txt

模块“xxx”没有属性“xxx”

属性错误表示依赖项未正确安装。

pip install -r requirements.txt

大多数OpenCV错误的解决方案

在大多数情况下,重新安装 opencv-python 依赖项会有所帮助。

pip uninstall opencv-python opencv-python-headless

pip install opencv-python

大多数Protobuf错误的解决方案

在大多数情况下,重新安装提供 insightfaceopennsfw2 等模型的所有依赖项会有所帮助。

找不到 DNN 库

确保安装了最新的 CuDNN 运行时,因为第三方库可能会使用更高版本进行编译。

非法指令

这可能是由缺少 CPU 的指令集引起的。您可以从源代码编译张量流,也可以降级它。

pip install tensorflow@1.5

用法相关:

无类型对象没有属性形状

确保删除 -s/--source-path、-t/--target-path 和 -o/--output-path 参数中的特殊字符和 unicode。

无法分配内存

处理过程中的内存异常通常是在 GPU 耗尽 VRAM 时引起的。尝试将 --execution-thread-count 降低到 1,然后慢慢增加它。

泄露的信号量对象

处理过程中信号量泄漏通常是在 GPU 耗尽 VRAM 时引起的。尝试将 --execution-thread-count 降低到 1,然后慢慢增加它。

仅使用中央处理器

不要同时安装 onnxruntime 和 onnxruntime-xxx

pip uninstall onnxruntime onnxruntime-xxx

pip install onnxruntime-xxx

 文章来源地址https://www.toymoban.com/news/detail-716888.html

Linux

无法加载库拉斯 Lt.so.12

确保安装全局 libcublas 依赖项。

sudo apt-get install libcublas-12-0

用于洞察力的构建轮失效

确保安装全局生成基本依赖项。

sudo apt install build-essential

 

MacOS

非法硬件指令

不要通过 Rosetta 仿真运行 Python。

模糊的面孔

请不要将 onnxruntime 升级到 requirements.txt 文件中定义的版本以外的版本。

Windows

未设置CUDA_PATH

当库在您的系统上找不到 CUDA 时,会发生此错误。确保将 CUDA 安装的二进制路径添加到 环境变量中的$PATH

CUDA_PATH已设置,但无法加载 CUDA

看来您的 CUDA 安装$PATH的二进制路径 是错误的。

找不到 CUDA 或 ZLIB dll 文件

似乎您在$PATH中安装的二进制路径 丢失或错误。

用于洞察力的构建轮失效

确保安装了最新版本的 Microsoft Visual C++可再发行组件和  Microsoft C++生成工具。

四、Workshop

在Cloud中运行 

略 

在Docker中运行

安装

克隆存储库:

git clone https://github.com/facefusion/facefusion-docker.git

运行 CPU 容器:

docker-compose -f docker-compose.cpu.yml up

运行 CUDA 容器:

docker-compose -f docker-compose.cuda.yml up

运行 ROCM 容器:

docker-compose -f docker-compose.rocm.yml up

用法

浏览 CPU 容器:

http://localhost:7870

浏览 CUDA 容器:

http://localhost:7880

浏览 ROCM 容器:

http://localhost:7890

 

Linux

安装

apt install nvidia-docker2

设置

nvidia-ctk runtime configure

systemctl restart docker

 

 

编写 UI 布局

1. 创建一个新的 Python 文件

facefusion/uis/layouts目录中创建一个文件 example.py

2. 定义钩子

此钩子在程序启动时调用。

pre_check() -> bool

此挂钩在渲染之前调用。

pre_render() -> bool

呈现布局时调用此挂钩。

render() -> gradio.Blocks

调用此挂钩以添加事件侦听器。

listen() -> None

使用此骨架

import gradio

from facefusion.uis.components import example


def pre_check() -> bool:
	return True


def pre_render() -> bool:
	return True


def render() -> gradio.Blocks:
	with gradio.Blocks() as layout:
		example.render()
	return layout


def listen() -> None:
	example.listen()

3. 运行 UI 布局

定义挂钩后,可以运行 UI 布局。

python run.py --ui-layouts example

 

编写 UI 组件

1. 创建一个新的 Python 文件

facefusion/uis/components 目录中创建一个文件 example.py

2. 定义函数

呈现组件时调用此函数。

render() -> None

调用此函数以添加事件侦听器。

listen() -> None

此函数在组件更改时调用。

update() -> Update

使用此骨架

from typing import Optional
import gradio

from facefusion.uis.typing import Update

EXAMPLE_IMAGE : Optional[gradio.Image] = None


def render() -> None:
	global EXAMPLE_IMAGE

	EXAMPLE_IMAGE = gradio.Image()


def listen() -> None:
	EXAMPLE_IMAGE.change(update, inputs = EXAMPLE_IMAGE, outputs = EXAMPLE_IMAGE)


def update() -> Update:
	return gradio.update()

3. 添加 UI 组件

定义函数后,可以将 UI 组件添加到 UI 布局。

编写帧处理器

1. 创建一个新的 Python 文件

facefusion/processor/frame/modules 目录中创建一个文件 example.py

2. 定义钩子

此挂钩返回帧处理器的实例。

get_frame_processor() -> Any

此挂钩清除帧处理器的实例。

clear_frame_processor() -> None

此钩子在程序启动时调用。

pre_check() -> bool

此挂钩在处理之前调用。

pre_process(mode : ProcessMode) -> bool

此钩子在处理后调用,可用于清除内存。

post_process() -> None

调用此挂钩以处理单个帧。

process_frame(source_face : Face, reference_face : Face, temp_frame : Frame) -> Frame

调用此挂钩以处理多个帧并更新进度条。

process_frames(source_path : str, temp_frame_paths : List[str], update: Callable[[], None]) -> None

处理图像时调用此挂钩。 

process_image(source_path : str, target_path : str, output_path : str) -> None

处理视频时调用此挂钩。 

process_video(source_path : str, temp_frame_paths : List[str]) -> None

使用此骨架 

from typing import Any, List, Callable

from facefusion.typing import Face, Frame

FRAME_PROCESSOR = None
NAME = 'FACEFUSION.FRAME_PROCESSOR.EXAMPLE'


def get_frame_processor() -> Any:
	pass


def clear_frame_processor() -> None:
	pass


def pre_check() -> bool:
	return True


def pre_process(is_preview : bool = False) -> bool:
	pass


def post_process() -> None:
	pass


def process_frame(source_face : Face, reference_face : Face, temp_frame : Frame) -> Frame:
	pass


def process_frames(source_path : str, temp_frame_paths : List[str], update: Callable[[], None]) -> None:
	pass


def process_image(source_path : str, target_path : str, output_path : str) -> None:
	pass


def process_video(source_path : str, temp_frame_paths : List[str]) -> None:
	pass

3. 运行帧处理器

定义所需的钩子后,即可运行帧处理器。

python run.py --frame-processors example

 

 五、知识库

高级功能

执行提供程序

onnxruntime 执行提供程序会根据您的 GPU 或 CPU 加速处理。

参数: --执行提供程序

默认值:[中央处理器]

示例:--执行提供程序 cpu cuda

执行线程计数

控制并行运行以处理帧的线程数。

参数 --执行线程计数

默认值:1

示例:--执行线程计数 1

执行队列计数

控制每个线程处理的帧数。

参数 --执行队列计数

默认值:1

示例:--执行队列计数 1

帧处理器

通过向管道添加更多帧处理器来提高输出。

参数: --帧处理器

默认值:[face_swapper]

示例:--帧处理器face_swapper face_enhancer

用户界面布局

根据需要混合和匹配不同的 UI 布局。

参数:--ui-layouts

默认值:[默认]

示例:默认 --ui 布局

人脸词汇

人脸分析仪

描述软件中负责检测和识别人脸的部分。

人脸参考

描述在处理帧期间用于人脸识别的人脸的快照。

人脸识别

描述将两个人脸与给定阈值(称为人脸距离)进行比较的过程。

面距

描述两个人脸的相似程度。

面部弹跳

将处理帧期间人与人之间的闪烁描述为人脸识别失败。

六、项目获取 

地址:点击下载 

 

到了这里,关于开源人脸融合 AI换脸工具-FaceFusion的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何利用Java实现 AI 人脸融合特效

    最近自从chat-gpt爆火以来,AI技术在人工智能领域持续迭代的创新,为人们的生活带来了许多震撼的应用。比如其中的,AI人脸融合特效,在各大抖音、B站等平台上,越来越火热,基于这,我也打算利用第三方开源的API,来实现一个自己的人脸融合。 AI人脸融合特效是一种 基

    2024年02月13日
    浏览(43)
  • AI换脸软件有哪些?这几个工具能轻松实现换脸

    AI换脸是指利用人工智能技术将一张人脸的特征迁移到另一张人脸上,从而实现人脸转换的过程。这种技术已经被广泛应用于各个领域中,例如视频制作、视频修复、艺术创作和模拟仿真等。但是也有很多小伙伴感觉这个操作很有趣,想要将自己的照片进行AI换脸,体验一下身

    2024年02月05日
    浏览(51)
  • 换脸视频怎么做出来的?AI视频换脸教程【完整版手把手】免费AI换脸视频工具制作过程详解

    上期分享了wav2lip-GFPGan图片说话转视频的文章: 超写实虚拟数字人再升级:Wav2Lip-GFPGAN完整版教程及效果视频评测【手把手】_baoxueyuan的博客-CSDN博客 部分饱子好奇 视频如何换脸 。因为近期视频换脸太火爆了,所以今天就给大家分享一个可复现的免费的AI视频换脸完整教程(

    2024年02月15日
    浏览(64)
  • 高效写作,尝试AI写作工具的神奇效果!

    写作是每个职场人必备的一项技能,无论是撰写论文、工作报告、还是创作小说、写博客等,都需要花费我们大量的时间。 随着AI时代的到来,AI写作正成为工作必备的技能之一,本文将为大家揭秘AI写作最简单快捷的方法,相信使用相同的方式,你也能创作出高质量的文案。

    2024年02月16日
    浏览(41)
  • 【AIGC】一款离线版的AI智能换脸工具V2.0分享(支持图片、视频、直播)

    随着人工智能技术的爆发,AI不再局限于大语言模型,在图片处理方面也有非常大的进步,其中AI换脸也是大家一直比较感兴趣的,但这个技术的应用一直有很大的争议。 今天给大家分享一个开源你的 AI换脸工具2.0 ,只需要一张所需脸部的图像,无需数据集,无需训练,你就

    2024年02月11日
    浏览(57)
  • 最新ChatGPT4.0工具使用教程:GPTs使用,Midjourney绘画,AI换脸,Suno-AI音乐生成大模型一站式系统使用教程

    ChatGPT3.5、GPT4.0、相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普通用户来说都是需要额外付费才可以使用。所以今天小编就整理一个真正可免费的AI工具,

    2024年04月14日
    浏览(58)
  • 最新AI工具系统ChatGPT网站运营源码SparkAi系统V6.0版本,GPTs应用、AI绘画、AI换脸、垫图混图、Suno-v3-AI音乐生成大模型全支持

    SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT语音对话、GPT-4模型、DALL-E3文生图、图片对话能

    2024年04月09日
    浏览(57)
  • LCHub:融合低代码与GPT,微软的又一个神奇颠覆

        在Bing搜索框上打上,页面右侧就能获得GPT的智能回复;就因为多了这一个新点,微软敢放言,谷歌搜索引擎存在的规模优势不复存在。 这如果放在人们不了解GPT是什么之前,大家都会觉得微软疯了。可当人们在之前半年间,充分体验到GPT的神奇之后,微软的狂言

    2024年02月12日
    浏览(38)
  • 【AIGC】AI工具合集人脸动漫化,老照片修复和视频补帧工具

    Paper2GUI : 一款面向普通人的 AI 桌面 APP 工具箱,免安装即开即用,已支持 40+AI 模型,内容涵盖 AI 绘画、语音合成、视频补帧、视频超分、目标检测、图片风格化、OCR 识别等领域。支持 Windows、Mac、Linux 系统。 小白兔AI 3.0版起永久免费AI绘画、人脸动漫化,图片修复和视频补

    2024年02月11日
    浏览(54)
  • 十个高质量工具网站推荐,AI自动抠图换背景,任意背景自动融合

    AI 背景更换是一种利用生成式人工智能创建新图像背景的软件工具。与传统方法需要移除原有的背景并更换新的不同,AI背景生成器使用先进的算法生成与前景完美融合的全新背景。这项技术彻底改变了图像编辑的方式,为设计提供了更多的创造自由和灵活性。 AI背景生成器

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包