0

1006

关于Ai换脸开源项目roop源码的研究

前几天的折腾中,终于把基于英伟达 GPUCUDA 计算引擎推理模型环境搭建起来, 相比 CPU 一下子快了不少。

在解读 roop 项目源码时,发现它其实引用了一个开源人脸识别库 InsightFace , 查资料发现背后的团队竟然是国人主导的,并且这个开源项目在github上的关注度非常高, 突然很惊讶,原来国内的人脸识别技术还是全球领先的。

分析源码,整个换脸过程大概分为几个步骤:

  • 将视频按帧数要求切成图片
  • 对每一张图片进行处理:检测出其中的人脸及其特征,等待程模型推理;在该阶段使用经典的面部处理库insightface进行面部的检测和特征识别;
  • 发现存在的源脸和需要更换的目标脸后,针对每一帧进行换脸模型(Inswapper128)的推理,并且引入图像处理(插值&缝合边缘的高斯模糊&…)和面部修复模型(GFPGAN/CodeFormer)来提高最终产生的图像质量;
  • 用ffmpeg工具命令将换脸后的图片合成成视频;

……

乐果   发表于   2024 年 03 月 21 日 标签:ai 继续阅读

0

666

基于ubuntu22.04系统下“人脸替换”项目roop环境搭建与测试

有了英伟达显卡终于可以作一些开源Ai项目的研究测试了。 今天准备对大名鼎鼎的 roop (视频人脸替换)项目做一下效果测试。

环境搭建

首先要安装 Anaconda安装笔记

为了 python的依赖下载更快,配置国内更新源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --set show_channel_urls yes

……

乐果   发表于   2024 年 03 月 18 日 标签:ubuntuai 继续阅读

0

646

ubuntu22.04 安装英伟达nvidia驱动 笔记

因为很多 Ai 模型基于英伟达显卡的 cuda,之前的电脑都没有英伟达显卡,所以最近特意买了 一款英伟达显卡的笔记本捣腾。

前几天笔记本刚买回来,为了节省时间直接把 nuc(inter显卡)mini主机的 ssd 硬盘插过来, 但安装 nvidia 时一直报错,可能因为原系统依赖各种不匹配导致的,于是最终还是重装了 ubuntu 系统。

今天终于在新安装的 ubuntu22.04 版本系统下将它搞定了。

安装步骤

首先去官网下载驱动程序:nvidia

如下图,选择对应的显卡型号(例如我笔记本为 Rtx4060 ):

……

乐果   发表于   2024 年 03 月 16 日 标签:ubuntu 继续阅读

0

414

docker swarm 模式相关常见操作

因2024年要加入公司的运维组了,最近必须提前预习一下 docker swarm 模式下常见的命令以及部署方法等,故整理了一些资料。

什么是Swarm

Swarm这个名称特别贴切。在Wiki中解释道:

Swarm behavior是指动物的群集行为。比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavior。

Swarm通过把多个Docker Engine聚集在一起,形成一个大的docker-engine,对外提供容器的集群服务。同时这个集群对外提供Swarm API,用户可以像使用Docker Engine一样使用Docker集群。

……

乐果   发表于   2024 年 01 月 31 日 标签:Docker 继续阅读

0

678

rk3588平台人脸识别sdk封装(.so动态链接库):Golang调用 笔记

上周的预研中,测试了离线 sdk 中官方的 demo 代码编译、运行测试,均已达到预期测试效果。

但官方 demo 源码只是简单样例,实际业务应用时需要对它做更多逻辑操作,并且业务逻辑层很可能不是 CC++ 语言,例如我一般使用 golang 语言作为业务层的开发语言。那么,基于这个现实场景,需要对原生sdk的源码采用 C 语言进行二次暴露封装,然后将它编译成动态链接库(例如 .so ),使其他编程语言能方便调用。

二次暴露封装

采用 C 语言对 官方 sdkC++ 源码进行二次封装暴露,为啥要做这一步?

  • 首先 C 语言作为更通用的系统语言,它封装的接口在与其他高级语言嵌入时更具兼容性;
  • 其次 C++ 内置的类概念,在 Go 依赖的 cgo 方式调用动态链接库方式中 并不支持。 因此,为方便 Go 语言集成,必须对它用 C 语言作二次封装暴露。

二次封装例子:

新建 C 源码文件 face_api.cpp

……

乐果   发表于   2024 年 01 月 12 日 标签:cc++golangcgoai 继续阅读

较旧的文章 较新的文章
热评文章