大家好,歡迎來到 Crossin的程式設計教室 !
大家都有在看奧運會嗎?
截至本文發稿前,中國隊已經拿了
32塊金牌
,位列金牌榜榜首。
在為運動員們加油助威的同時,我們不妨再回顧一下本屆奧運會開幕式上,最讓人印象深刻的節目:《超級變變變》。表演者們相互配合,用道具搭配肢體動作,展現了乒乓球、射擊、鐵人三項等50個圖示。
其實,在1964年的東京奧運會上,日本人就首次發明了體育專案圖示,隨後這也逐漸成為奧運會的傳統之一,得以延續。
藉著奧運熱潮,不少象形文字專案也受到了關注。
比如,日本一位叫做高橋的嵌入式工程師就親自開發了一個軟體,透過相機捕捉動作和姿勢,然後把它們
變成奧運風格的象形動圖
,就像這樣:
最終識別效果如下圖所示,可以說是
“動作不夠,機器來湊”
啊。
手把手教你把自己變成象形動圖
目前,該專案已經在GitHub上開源了。
GitHub連結:
https://github。com/Kazuhito00/Tokyo2020-Pictogram-using-MediaPipe
下面我們就來在自己的電腦上試一試這個專案。
首先,我們需要下載這個GitHub倉庫到本地。
然後,建立一個Python虛擬環境,並安裝所需要的庫。
準備工作做完之後,可能會遇到在原生代碼無效的情況,可以
對VideoCapture的寬度和高度適當做出調整
。
隨後就可以執行該專案了。
這時候你就會發現,相機識別出來的圖變成了這個樣子:
最後,高橋也大方地給出了試玩地址,感興趣的同學可別錯過了:
試玩地址:
https://pictogram-san。com/
象形動圖升級:霹靂舞也能玩出花!
這麼有意思的專案僅限於此未免有些可惜了。
於是,一位叫做巖田智哉的同學就對高橋的程式進行了進一步的改進和完善,比如說,用來跳霹靂舞。
巖田透過
讓程式讀取影片
,來製作象形圖。
考慮到這點後,他做出瞭如下修改,把程式改成了
由命令列引數傳遞的影片檔案的象形圖
,同時還
刪除了反轉影片的邏輯
。
然後就能得到這樣的影片識別效果:
想看動圖?滿足你:
怎麼樣,是不是覺得竟然還有一絲酷炫?
最後,巖田表示,既然都做到這一步了,我們就順理成章地再新增邏輯,把這個栩栩如生的影片儲存為一個單獨的mp4檔案。
第一次載入作為命令列引數傳遞的影片檔案時,需要建立一個檔名為-pictgram-output。mp4的影片檔案,並在每次迴圈後新增一個程序來匯出象形圖象即可。
基於機器學習技術的手勢識別演算法MediaPipe
據瞭解,高橋所使用的為谷歌開源機器學習工具“MediaPipe”。
MediaPipe是一種基於機器學習技術的手勢識別演算法,其特點是
準確率高
,支援
五指和手勢追蹤
,可
根據一幀影象推斷出單手21個立體節點
。
與目前市面上較先進的手勢識別技術相比,MediaPipe不需要依賴桌上型電腦,在手機上就能進行實時追蹤,還支援同時追蹤多隻手,識別遮擋等。
MediaPipe框架由3個模型組成,包括:手掌識別模型
BlazePalm
(用於識別手的整體框架和方向)、
Landmark模型
(識別立體手部節點)、
手勢識別模型
(將識別到的節點分類成一系列手勢)。
其中,BlazePalm是一個可識別單幀影象的模型,主要為Landmark模型提供準確剪裁的手掌影象,在經過訓練後手掌識別準確率可達
95.7%
。這大大降低了對旋轉、轉化和縮放等資料增強方式的依賴,讓演算法將更多計算能力用在提高預測準確性上。
此外,BlazePalm可識別多種不同手掌大小,還能識別手部遮擋,並且能透過對手臂、軀幹或個人特徵等的識別來準確定位手部。
Landmark模型在BlazePalm基礎上識別到的21個立體節點座標,這些節點之間的位置遮擋也可被識別。
透過手勢識別模型,從Landmark提取的資料來推斷每根手指伸直或彎曲等動作,接著將這些動作與預設的手勢匹配,以預測基礎的靜態手勢。預設手勢包括美國、歐洲、中國通用手勢,以及豎大拇指、握拳、OK、“蜘蛛俠”等。
對於MediaPipe,更為主流是將其作為手語識別和翻譯的輔助方式,如果再結合AR/VR頭顯的輸入方式,或許可以進一步提升聽障人士溝通效率。
當然,我們也十分期待高橋這種腦洞大開的專案。