专栏首页YLH开发笔记手把手教学从0到1搭建人脸融合小程序(上)
原创

手把手教学从0到1搭建人脸融合小程序(上)

准备工作

在我们准备搭建人脸融合小程序之前,首先需要完成一些准备工作。大家可以将其理解为,我们现在要来做菜了,做菜之前要买一下做菜的原材料啦,洗一下锅洗一下菜啥的,耐心准备下~

1、了解人脸融合是什么东西

在不提任何概念之前,我们提起人脸融合,想到的是啥?按腾讯云官网文档的概念,人脸融合通过快速精准地定位人脸关键点,将用户上传的照片与特定形象进行面部层面融合,使生成的图片同时具备用户与特定形象的外貌特征。

翻译一下就是,将用户的图跟素材图人脸关键点融合,生成兼具这两张图特征的新的人脸图。

实际融合能衍生有很多玩法,比如cosplay,比如试衣,比如生成专属表情包等等。那么今天我们简单选择表情包这个主题,做一个小程序,看看从0开始的融合小程序,究竟怎么搞。

2、腾讯云人脸融合服务怎么回事

确定了要搞个融合小程序,那么融合算法能力咧?腾讯云提供人脸融合的能力,就它了。

在使用腾讯云人脸融合接口之前,我们来仔细瞅瞅这个官方文档

总结一下,使用腾讯云人脸融合服务,要做好以下准备:

注册腾讯云账号、做好实名认证

首先登陆腾讯云控制台,进行登陆注册。腾讯云注册方式包括以下几种:

注册方式

描述

微信扫码快速注册

使用您的微信扫码快速注册腾讯云,后续您可以使用微信扫码登录腾讯云,方便您的后续管理和使用。

邮箱注册

使用邮箱注册腾讯云,方便企业客户维护账号。

QQ 注册

使用您已有的 QQ 帐号注册腾讯云,直接用 QQ 帐号快捷登录腾讯云。

微信公众号注册

使用您已有的公众号注册腾讯云。

使用腾讯云人脸融合要求先进行实名认证:

类型

适用对象

账号归属

支持的认证方式

实名区别

操作指引

个人实名认证

个人

个人

微信认证、QQ 认证、人脸识别认证

可参加个人类运营活动、无法申请增值税专用发票

企业实名认证

企业、政府、事业单位、学校、组织等

企业

微信公众号认证、充值认证、企业对公打款认证

可参加企业类运营活动、可以申请增值税专用发票

开通人脸融合服务

登陆人脸融合控制台,点击开通服务:

创建活动

腾讯云人脸融合服务是按活动维度展开的,调用方(我们)需要告诉云的那一边,我们是哪个活动,用的哪张图片跟这个活动下的哪张素材融合

笔者简单创建了个活动,发现有好几个注意的地方:

  • 算法版本,指这个活动用的算法版本,我们先选择官方推荐Re-Invent

提供两种算法

在创建活动时选择,测试阶段支持在控制台的活动列表进行切换,但请您注意,一旦购买授权将无法切换算法。

Re-Invent 版:我们推出的新版本,融合相似度上表现较好,支持侧脸自动矫正。

Re-Define 版:线上运行时间较长、较为成熟的版本,性能稳定出色。

  • 基础QPS、素材额度,指当前这个活动的基础QPS以及素材图片的上限值

素材额度:指单个活动拥有的素材数量,在创建活动时选择,可选10/30/1000张,默认为10张。 素材额度的作用:对应的是技术授权费套餐类型,素材额度与授权费套餐的关系如下:

授权费套餐

资源包

固定 QPS

素材额度

素材可更新时间

套餐一

1万次

10QPS

10张

30天

套餐二

30万次

50QPS

30张

365天

套餐三

500万次

500QPS

1000张

365天

总结来说就是笔者创建的这个活动,最多只能创建10张素材,并且只支持10的并发数,融合算法用的是Re-Invent版。需要注意的是,在未购买活动授权之前,活动始终只有1的QPS,并且仅支持500次免费调用,因此在调试阶段要把握好用量了~

创建素材

多年保存的表情包派上用场,简单添加完素材图片后,观察下,陈列的信息基本都是素材图片的基础信息。有个神秘的按钮引起我的注意:【调节参数】

这个其实是在线试用人脸融合的入口,我们可以在控制台请求人脸融合,并调整融合参数实时查看调整的效果

控制台上上传输入图,点击【生成结果】,超哥拔你WIFI表情包就GET了,可以不可以!

  • 两个算法效果都能在弹窗展示,方便大家选择自己中意的算法版本
  • 在线调整融合参数,方便大家确定适合自己业务的融合参数,并保存下来
  • 支持选择上传多脸图,或上传多达三张输入图,实现多脸融合:

于是温碧霞、朱茵、杨幂的撒娇三连表情包GET!可以不可以!

素材图片审核

在实际接口调用时,素材图片状态必须是【审核成功】的状态,如果活动上线时间有要求,记得提前准备好素材

审核时效:上传后将于1-3个工作日内审核,政治/明星/名人等素材照片需提供版权证明。

3、API接口又怎么玩?

在控制台试用的效果不错,现在我热血沸腾,可以开搞了!然后呢?

然后先压制住内心的激动,前面都是在控制台利用交互点点鼠标完成了融合操作,现在我们先来看看,API的人脸融合接口要怎么用咧~

当前人脸融合提供两个接口,分别支持单脸融合与选脸融合,两个接口的出参入参不尽相同,我们一个一个来看:

人脸融合相关接口

接口名称

接口功能

人脸融合

选脸融合

FaceFusion

俗称单脸融合:

总结一下入参:

  • 腾讯云接口公共参数
  • 活动ID、素材ID,告诉云我用哪个活动,哪张素材图
  • 其他信息:输入图,这个图拿来跟素材图融合;返回的图片格式,url还是base64;输入图是否需要鉴政

单脸融合只涉及一张输入图、一张素材图,按要求填入参数即可。

FuseFace

俗称选脸融合、又名多脸融合:

入参与单脸融合多有相似,下面总结一下两者不同的地方:

  • MergeInfos.N:输入信息数组

用上面多脸融合的例子来说,API传参的方式如下:

MergeInfos = [{
  Image: '双人图',
  InputImageFaceRect: { // 温碧霞的脸
    X: 1,
    Y: 1,
    Width: 50,
    Height: 50
  },
  TemplateFaceID: '300215_2_1'
}, {
  Image: '双人图',
  InputImageFaceRect: { // 朱茵的脸
    X: 2,
    Y: 2,
    Width: 50,
    Height: 50
  },
  TemplateFaceID: '300215_2_2'
}, {
  Image: '三人图',
  InputImageFaceRect: { // 杨幂的脸
    X: 3,
    Y: 3,
    Width: 50,
    Height: 50
  },
  TemplateFaceID: '300215_2_3'
}]

通过输入数组,确定好每个融合组,以达到多脸融合的效果。

  • InputImageFaceRect

上面的输入数组告知了云我们想要哪两张脸作为组合融合,但是前提是需要知道我们上传的图的目标人脸的人脸框信息(X, Y, Width, Height),手无寸铁我们咋知道咧?~

按官方推荐,我们可以使用腾讯云人脸检测接口协助获取人脸框信息

因此,我们实际使用选脸融合之前,要先用人脸检测接口,获取目标人脸框信息,再将此作为入参,填入输入数组内,继而完成人脸融合请求

人脸检测接口入参较为简单,大家可以看官方文档使用,这里说一下出参:

人脸融合需要的人脸框信息集中在FaceInfos里,直接使用即可

  • FuseProfileDegree、FuseFaceDegree

素材的融合参数,不填默认用控制台保存的值

4、动手前先设计设计

好比做菜前,我们把原材料都准备好了洗干净了,为了让整个做菜过程更高效更清晰,我们可以先把菜谱设计好~

我们已经充分了解腾讯云人脸融合API接口是怎么使用的,结合微信小程序开发,笔者简单梳理了下整个融合小程序简易的系统架构图:

  • 腾讯云API提供封装好的SDK,我们可以直接在小程序端使用
  • 由于使用腾讯云API需要提供用户的API密钥,这是构建请求的重要凭证,强烈不建议放到端上直接使用,有泄漏风险。因此发起腾讯云API请求需要放到程序后端实现,这里我们选择微信小程序的云函数实现

最后的最后,再来啰嗦一下,扪心自问,NodeJS环境搭好了吗()?微信小程序开发工具下载好了吗()?

材料都准备好了,就可以开始下锅了!

不知不觉,准备工作就写了这么多,着实有点吓人,不过仔细阅读,其实整个准备跟理解过程都不算复杂。实战部分就放在下一篇文章,有兴趣的同学可以跟上~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教学从0到1搭建人脸融合小程序(下)

    由于本文主要介绍小程序端调用人脸融合云接口,所以前端这里简单设计,整个前端页面分为三个区域:

    MIKADO
  • 重磅:腾讯云发布多脸融合新功能,免费体验

    9月4日,腾讯云正式发布多脸融合新产品,该产品在之前单脸融合的基础上,新增多脸融合和选脸融合。同时,内置新型算法,让融合效果表现更优异。

    腾讯云AI中心
  • “疯狂变脸”再升级,腾讯云重磅发布多脸融合新功能

    人脸融合在实际应用中极具趣味性和参与性,目前已经被广泛应用于活动营销、相机类、变脸、换发、换装类APP和小程序等。最具代表性的就是2017年国庆节,人民日报和腾...

    陈华山
  • Go语言实战笔记(二十一)| Go 单元测试

    相信我们做程序员的,对单元测试都不陌生。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。

    飞雪无情
  • emlog文章短网址版权插件

    Youngxj
  • 遇见requestAnimationFrame

    今天,在读javascript异步编程的js事件深入理解部分的时候,了解到了requestAnimationFrame 这个api,在这里记录一下。 原文: s...

    吴裕超
  • 币聪财经-Sapien新秀社交媒体平台,分布式DAPP能否替代Facebook这样的传统社交?

    最近涉及社交媒体的丑闻引起了如此轰动,以至于一些评论员甚至宣称“ 互联网已经崩溃。”区块链创业公司 Sapien 正试图解决其中一些问题,包括糟糕的数据隐私标准...

    币聪财经
  • go语言学习-并发编程

    1.After函数:起到定时器的作用,指定的纳秒后会向返回的channel中放入一个当前时间(time.Time)的实例。

    solate
  • 设置SSL后如何实现https自动跳转

    IIS6.0路径:C:\WINDOWS\Help\iisHelp\common\403-4.htm

    德顺
  • 澳洲留学生银联银星计划办公网络/技术标准岗位面经

    牛客网

扫码关注云+社区

领取腾讯云代金券