手把手教學從0到1搭建人臉融合小程式(上)

  • 2019 年 12 月 23 日
  • 筆記

準備工作

在我們準備搭建人臉融合小程式之前,首先需要完成一些準備工作。大家可以將其理解為,我們現在要來做菜了,做菜之前要買一下做菜的原材料啦,洗一下鍋洗一下菜啥的,耐心準備下~

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環境搭好了嗎()?微信小程式開發工具下載好了嗎()?

材料都準備好了,就可以開始下鍋了!

不知不覺,準備工作就寫了這麼多,著實有點嚇人,不過仔細閱讀,其實整個準備跟理解過程都不算複雜。實戰部分就放在下一篇文章,有興趣的同學可以跟上~