來源:Jack Cui
今天分享一個演算法 KalidoKit,我們看下效果:
根據真實的人物肢體、面部、手的動作,來驅動虛擬形象。
KalidoKit 是整合了多種演算法實現的,Facemesh、Blazepose、Handpose、Holistic。
這個技術的主流應用方向就是虛擬主播。
可以驅動虛擬人物跳舞:
也可以像開頭的動圖那樣,捕捉全身的動作,面部表情、手勢等。
除了這種驅動虛擬形象型別的,還可以發揮自己的想象力,做一些有趣的小應用。
KalidoKit
該專案是基於 Tensorflow.js 實現的。
專案地址:
https://github.com/yeemachine/kalidokit
捕捉的關鍵點資訊,可以用來驅動 2D 和 3D 的虛擬形象,結合一些虛擬形象的驅動引擎,即可實現文章開頭所展示的效果。
既可以驅動 Live2D 形象,又可以驅動 3D VRM 形象。
這裡涉及的技術點一篇文章講不完,今天主要講述基礎的關鍵點檢測技術:人臉關鍵點檢測、人體姿態估計、手勢姿態估計。
人臉關鍵點檢測
人臉關鍵點檢測,有稀疏的,有稠密的。
像基礎一點的,68 個關鍵點檢測。
一般來說,一些閉眼、頭部姿態、張閉嘴的檢測,用這種簡單的 68 個關鍵點就夠了。
當然,也有更加稠密的關鍵點檢測。
對於一些面板美容類的應用場景,就需要稠密的關鍵點檢測演算法了,成千上萬的那種。
不過演算法的思想都是一樣的,迴歸出這些關鍵點的位置座標,通常搭配人臉檢測演算法使用。
想要學習人臉關鍵點檢測演算法的,推薦兩個入門專案:
https://github.com/1adrianb/face-alignment
https://github.com/ChanChiChoi/awesome-Face_Recognition
一個是基礎的入門專案,一個整合了人臉關鍵點的主流演算法。
人體姿態估計
人體姿態估計也是計算機視覺中一個很基礎的問題。
從名字的角度來看,可以理解為對“人體”的姿態(關鍵點,比如頭,左手,右腳等)的位置估計。
一般可以分為 4 種任務:
- 單人姿態估計 (Single-Person Skeleton Estimation)
- 多人姿態估計 (Multi-person Pose Estimation)
- 人體姿態跟蹤 (Video Pose Tracking)
- 3D人體姿態估計 (3D Skeleton Estimation)
簡單來說,就是對於人體骨骼關節點進行檢測,定位人體的姿態。
人體姿態估計,應用範圍寬廣,比如在自動駕駛行業進行街景中行人的姿態檢測、動作預測;在安防領域的行人再識別問題,特殊場景的特定動作監控;影視產業的電影特效等。
想要學習的小夥伴,可以看這整理的論文:
https://github.com/cbsudux/awesome-human-pose-estimation
手勢姿態估計
手關節更加靈活,動作敏捷和存在自我遮擋,因此略複雜一些。
不過原理和人體姿態估計類似。
除了這種常規的手勢識別,也可以用來做一些特效。
其實,很多這種人體特效,位置的定位,都是藉助這些關鍵點實現的。
總結
本文介紹了一些基礎的演算法,並推薦了一些學習資料,比較基礎。