大家好,歡迎來到 Crossin的編程教室~
幾天不見,Crossin 又去做什么游戲去了呢?這次我做的不是游戲,而是游戲機!而且是體感游戲機,
說到體感游戲,現在大家可能最多想到的是 switch 上的健身環大冒險,
但往前幾年,其實還有另一個非常火的體感游戲設備,就是 xbox 上的 kinect,和 switch 用帶有傳感器的手柄來識別玩家動作不同,kinect 使用的是一組攝像頭,通過影像來識別玩家的動作,
我這次做的 demo,就是一個使用攝像頭的動作識別系統,理論上來說,這個識別系統只需要普通的電腦和普通的攝像頭就可以運行,不過我最近正好拿到一樣好東西,它可以讓我這次的開發效率和運行效率都大大提高,
這就是我說的好東西,全名是 Jetson AGX Orin,是 NVIDIA 的AI邊緣計算設備,什么叫做邊緣計算,簡單來說就是對于資料的處理盡可能和產生資料的應用在一起,比如像機器人、像自動駕駛,這種場景對計算的實時性要求高,不好說把資料傳到計算中心,靠機房的大家伙們處理完再把結果回傳給設備,所以對于邊緣計算設備來說,一是要計算能力夠強,二就是要足夠小,不僅是體積小,而且要能耗小,
這款 AGX Orin 就是 NVIDIA Jetson 系列的最新款,新到什么程度,就是目前市面上還沒有現貨可以買,只能預定,所以我這臺可以說是一個全球限量版,和之前上一代 Jetson AGX Xavier 相比,它的性能提升到了8倍,可達到每秒 275 萬億次計算,這個程度已經相當于內置了GPU的服務器,而它的大小則小到可以托在手掌上,
除了強大的硬體之外,這里面自然也少不了 NVIDIA AI 相關軟體的支持,并且對于大多數常見AI應用,比如人臉識別、物體識別、動作識別、自然語言處理、語音合成等等等等,它都提供了一些預訓練好的模型,這個簡直太方便了,
開機安裝好 JetPack 開發套件,這里就有了很多可以運行的測驗程式來讓你體驗,官方檔案里也提供了很多示例來幫助開發者上手,
這里是我運行視覺和對話式AI基準測驗的結果:

可以看到跟上一代產品相比有非常顯著提升:
在官方的 Hello AI World 里,也提供了一些 demo,

比如物體識別,識別一幀畫面只需要十幾毫秒,完全可以用在實時的視頻監控,甚至正在進行的游戲當中,
還有這樣一個 demo:
好家伙,這不我一半的作業量已經完成了嘛,
拿到人體姿態資料之后,我們就可以用各種動作對應的資料來訓練一個分類器,然后通過分類器來識別攝像頭實時拍攝到的用戶姿態,判斷出動作,再根據識別出的動作,向系統發送鍵盤指令,這樣就完成了一個簡單的基于人體動作的互動系統,
在 NVIDIA 智能物聯網的 github 倉庫里,我發現了一個類似的專案,用手勢去操作瀏覽網頁,
https://github.com/NVIDIA-AI-IOT/trt_pose_hand
里面使用 SVM 支持向量機來訓練手勢分類器,這個用到 Python 的 scikit-learn 模塊,我們的第二部分也可以用同樣的方法,只不過我們使用的是人體全身模型,
為了訓練出分類器,我們需要一點樣本資料,
之后,就是通過 pynput 模塊發送鍵盤制令,
將以上這些全部合在一起,就得到了我們想要的功能:
一個可以用動作來玩游戲的系統
對于 Orin 來說,用在這個專案上其實有點大炮打蚊子了,因為姿態判斷和動作識別用的都是預訓練模型,實時的計算量并不算大,但它的軟體環境和開發社區資源確實大大提升了我這次的開發效率,
唯一不足的就是從我家的網路連 github、apt、pip 都太慢了,以至于花了不少時間在環境安裝上,如果相關資源能有一套國內鏡像就更好了,
最后有一個小彩蛋,你們是否留意到我用來演示的游戲 KOF97,在2009年,也就是 kinect 正式發布的前一年,我做的碩士畢業設計,其實就是:使用單攝像機的人機互動系統
而在其中的動作識別部分,用的同樣也是 SVM 支持向量機,在答辯時,我用的演示游戲,就是 KOF97
在論文最后的作業展望里,我曾寫到:
沒想到,在13年后,我自己把這個坑填上了,這不禁讓我又想到喬布斯曾說的:
相信我們生命中曾經經歷的那些點,將在未來的某一天以某種方式串連起來,史蒂夫·喬布斯
本文代碼基于NVIDIA官方示例修改:
https://github.com/NVIDIA-AI-IOT/trt_pose_hand
運行環境:
NVIDIA Jetson AGX Orin
JetPack 5.0
Python 3.8.10
代碼已開源:http://python666.cn/c/2
獲取更多教程和案例,歡迎搜索及關注:Crossin的編程教室每天5分鐘,輕松學編程,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472282.html
標籤:其他
