facefusion服务化改造facefusion服务化改造代码:https://gitee
com/hzlxf/facefusion-http-apifacefusion有两种使用方式,一种是官方文档上面写的,安装好后直接运行pythonrun
py,这会提供一个web的交互界面,相当友好
另一种是在这基础上,添加--headless的参数,同时,指定如source,input,output等其它一大堆参数,命令行运行
参数表可以--help显示,也可以阅读facefusion/core
py中的cli()函数查阅
但是如果我们要把它作为我们的服务,对外提供接口,就都不太合适了
首先headless的方式是肯定不行的,每次运行都要加载模型,多耗时啊
而web的方式呢
通过F12查看其接口,发现其请求体、接口十分不规则,不符合常见的http接口的形式,很难推断出接口参数是什么
(除了upload,就全TM是/run/predict这个接口)针对性的研究facefusion关于代码逻辑后发现,这是由于facefusion的前端并不是通过常见的前端框架开发的,而是通过一个叫gradio的库
这个库是专门给研究员们进行算法可视化,展示demo用的
(看了一下文档,还确实挺方便的,前后端都不用写,声明一下就行了
专属算法人员的“低代码”框架无疑了)不得已,简单的研究一下源码,看它是怎么调用算法的,然后我们自己用fastapi手撸一个服务接口得了
首先还是在入口函数,facefusion/core
cli()这个函数是命令行的入口
在这里定义了所有的参数,也设了默认值
1defcli()->None:2signal
signal(signal
SIGINT,lambdasignal_number,frame:destroy())3program=ArgumentParser