当前位置: 首页 > news >正文

AI换人脸facefusion项目口型同步‌API化改造及部署

一. 简介

‌FaceFusion‌是一款强大的AI换脸软件,它支持图片、视频以及直播换脸,官方将其称为“下一代脸部交换器和增强器”。FaceFusion的最新版本为2.6.1,这个版本在原有基础上增加了更多的模型和高清算法,显著提升了图片和视频的换脸效果。此外,FaceFusion还新增了三种遮罩功能,有效解决了脸部有物体遮挡时的融合效果差和跳闪问题。该软件拥有大量的模型,包括基础换脸模型、帧着色器模型、帧增强器模型、人脸增强模型以及人脸调试模型,所有模型总数达到44个,模型文件总计超过10GB。

FaceFusion的使用条件包括支持Windows 10或Windows 11操作系统,并且需要NVIDIA GPU(即[CUDA)版本至少为11.8。对于没有NVIDIA显卡的用户,软件也提供了CPU处理模式。安装过程相对简单,只需解压整合包并运行启动程序,然后按照提示操作即可。

FaceFusion的功能特点包括但不限于:
‌换脸功能‌:用户可以选择不同的换脸模型,实现高质量的面部替换。
‌遮罩功能‌:解决了脸部有物体遮挡时的融合问题,提高了换脸的自然度。
‌高清修复‌:提供人脸替换、人脸高清修复和背景高清修复等多种策略,每种策略下包含多个模型可自由切换。
‌自定义选项‌:用户可以根据自己的需求调整执行线程、执行队列、最大内存和输出路径等参数。
‌预览功能‌:在换脸前可以预览效果,支持自由选择换脸对象和多人换脸。
‌口型同步‌:通过Lip Sync技术,实现换脸后的视频中口型的自然同步。
此外,FaceFusion还提供了保姆级教程和免费学习工具,旨在让用户能够轻松上手,实现“换脸自由”,无论是自媒体从业者还是普通用户,都能通过这款软件探索无限创意,创造独一无二的面孔融合艺术作品‌12。

本项目的目的是在FaceFusion的基础上,使用其‌口型同步‌的功能,进一步改造封装,使其能够更高效调用执行,以及部署。

二. 源码分析

  1. 从程序入口 ./run.py 出发进入 ./facefusion/core.py
    在这里插入图片描述

  2. 不难得知,首先会加载配置文档 ./facefusion.ini 的相关参数
    在这里插入图片描述

  3. 由于此项目只需使用其口型同步功能,所以需要提前设定 ./facefusion.ini 的相关参数

    target_path            需要替换嘴型的视频素材路径
    execution_providers    若有CUDA环境设置为cuda,否则cpu
    execution_thread_count 推理线程数量,值越大占用显存越多,1080ti推荐4
    face_selector_mode     若视频素材中包含多个人脸,设置为one,表示只对识别到的第一个人脸对口型
    temp_frame_format      视频切片的帧格式,推荐jpg,png
    output_video_encoder   视频编码器,推荐h264_nvenc,可提高数据处理速度
    output_video_preset    若想要提高合成速度,且能忽略微小瑕疵,推荐ultrafast
    output_video_fps       输出视频数据的帧数,推荐25
    frame_processors       帧处理模型,口型同步必选lip_syncer
    
  4. 当程序完成参数的加载后,进入到 run函数 ,首先检查参数是否配置正确,随即将参数提交到全局变量 facefusion.globals 中方便后续调用,然后进行检查并下载所需模型数据文件,当然,如果已经手动下载添加,可将配置文档skip_download 的值设置为true,从而跳过模型下载,或者使用代理进行下载,否则很慢。最后通过判断headless的值,判断是否为无头模式,否则启动为webui模式,到此初始化工作已完成
    在这里插入图片描述

三. API改造

  1. 近期较忙,如有需求请参考GIT: https://gitee.com/xiaofang113/facefusion

四. API部署

http://www.lryc.cn/news/484561.html

相关文章:

  • 移动端问题
  • Linux网络——网络初识
  • 从华为到创业公司
  • Vue 组件通信及进阶语法
  • vue文本高亮处理
  • androidstudio入门到放弃配置
  • NLP论文速读(谷歌出品)|缩放LLM推理的自动化过程验证器
  • 【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1
  • 【Qt】Qt在窗口中加载Web界面的方法汇总
  • Java集合框架之Collection集合遍历
  • 基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
  • windows 查看yolo11 是否安装了cuda
  • 机器学习【激活函数】
  • 【OpenEuler】配置虚拟ip
  • 数据分析师证书怎么考
  • 【人工智能】text2vec-large-chinese模型搭建本地知识库
  • 前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set
  • DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能
  • IP数据云 识别和分析tor、proxy等各类型代理
  • vue2 自动化部署 shell 脚本
  • 服务器数据恢复——Ext4文件系统使用fsck后mount不上的数据恢复案例
  • CTF攻防世界小白刷题自学笔记14
  • 家政服务小程序,家政行业数字化发展下的优势
  • Springboot如何打包部署服务器
  • ubuntu将firewall-config导出为.deb文件
  • C++算法练习-day40——617.合并二叉树
  • 2024数维杯国际赛C题【脉冲星定时噪声推断和大气时间信号的时间延迟推断的建模】思路详解
  • 【Linux】MTD 分区
  • MySQL(5)【数据类型 —— 字符串类型】
  • 【数据搜集】初创企业获客,B端数据获取