人工智慧舞姿識別APP

2021-02-14 陳老師的三高機器人社
人工智慧舞姿識別APP

難度: 中級

課程類型: 教程

學科: 計算機科學

年級水平:

本教程由Youth Mobile Power提供

教程地址: Awesome Dancing with AI Tutorial

我們在YR Media的朋友發表了一個有趣的關於人工智慧的互動故事,題為「你能教人工智慧跳舞嗎?」這引起了我們的思考。有沒有一種算法來描述、識別或測量一種美妙的舞蹈?舞蹈動作可以量化和測量嗎?人工智慧可以幫助我們提高舞蹈技巧嗎?在這個項目中,你將學習如何使用新的AI技術PoseNet來跟蹤身體的關鍵點,創建骨骼模型,並開發一些基本方法來量化、測量和識別一些舞蹈動作。

1. 項目簡介

你喜歡跳舞嗎?你擅長嗎?你想要提高嗎?有沒有一種算法來描述、識別或測量一種美妙的舞姿?舞蹈動作可以量化和測量嗎?人工智慧可以幫助你提高你的舞蹈技巧嗎?在這個項目中,我們將學習如何使用新的AI技術PoseNet來跟蹤身體的關鍵點,創建骨骼模型,並開發一些基本方法來量化、測量和識別一些舞蹈動作。

重要: 這個項目不能使用模擬器來測試app,因為模擬器不能運行MIT App Inventor擴展,比如PoseNet擴展。要確保你的行動裝置具備PoseNet所需的硬體功能,請在附件中的.aia測試文件上使用AI2伴侶進行測試。

2. 圖形用戶界面(GUI)

在啟動文件中已經創建了一個GUI。可以更改組件的屬性來得到你想要的外觀和感覺。但不要重命名組件,因為本教程會使用操作指南中給出的名稱。

SwapCameraButton按鈕可以根據用戶的意願切換前置或後置攝像頭。CanvasLiveButton將畫布背景從純黑色切換到實時攝像機視圖。ResetButton設置Dance Score得分為零。

WebViewer組件用來顯示攝像頭視圖,Canvas組件是在黑色背景或實時攝像機視圖背景上創建身體骨架模型的地方。WebViewer組件Canvas組件的尺寸必須匹配,以便對身體進行跟蹤。建議不要更改啟動文件中給出的默認尺寸。

注意,組件面板最底部是PosenetExtension,這是我們用來跟蹤身體關鍵點的AI技術,它可以幫助你構建身體的骨骼版本。

3. PoseNet 關鍵點

PoseNet追蹤的身體關鍵點是:眼睛、耳朵、鼻子、肩膀、手肘、手腕、臀部、膝蓋和腳踝。

如果PoseNet能夠跟蹤主體關鍵點,它就會返回一個包含兩個元素的列表,這兩個元素表示關鍵點的x坐標和y坐標。當PoseNet無法跟蹤主體關鍵點時,它會返回一個空列表。

4. 初步的GUI代碼

初始文件中已經提供了一些GUI的初步代碼。研究這些代碼可以讓你對它們的作用有一個大致的了解。

上面這兩組代碼塊用於將PoseNet的狀態傳達為「就緒」,或者在出現錯誤時顯示錯誤消息。

每次點擊ResetButton時,重置Dance Score為零。

swapcamera按鈕將相機視圖從默認的「前置」視圖切換到「後置」視圖,反之亦然。

CanvasLiveButton調整一個布爾變量的值,該變量用來在實時背景或純黑色背景上顯示PoseNet構造的骨骼。

5. 輔助函數(1)

初始文件中還有一些輔助性的函數。

getXgetY函數提取給定點的x和y坐標。某個點是一個由PoseNet返回的兩個元素組成的列表,它們表示給定點位置的x和y坐標。

6. 輔助函數(2)

defined是一個布爾函數,如果給定點是一個包含兩個元素的列表(表示該點位置的x和y坐標),則返回true,否則返回false。如果PoseNet無法檢測到身體關鍵點中的任何一個,則為每個缺失的關鍵點返回一個空列表。

allDefined是一個布爾函數,用於檢查給定點列表中的所有點是否都已定義。如果所有點都已定義,則返回true,否則如果任意點未定義,則返回false。我們將使用這個輔助函數來共同檢查身體的某些關鍵點是否被PoseNet擴展正確地跟蹤並返回。如果身體的姿勢由於光線不好、背景凌亂、衣服松垮等可能原因導致PoseNet無法追蹤到身體的任何關鍵點,將返回一個空列表,說明未能檢測到這個關鍵點。

7. 輔助函數(3)

distance是一個函數,當畫布上的兩個點被定義後,該函數用於計算定義這兩個點之間的距離。它使用畢達哥拉斯Pythagorean公式:

上面的公式也許會讓你回憶起高中的幾何和代數。

8. 輔助函數(4)

drawPoint過程在畫布上給定的定義點的位置繪製一個半徑為4像素的小圓。這個過程幫助我們畫出身體的關鍵點如關節。我們設置點的半徑為4像素,這樣關鍵點肉眼可見。

drawLine過程在畫布上的兩個定義點之間畫一條線段。我們使用這個過程來繪製骨架中的骨骼來代表身體。

9. 姿態更新

當PoseNet擴展 檢測到它所跟蹤的對象改變了位置時,會觸發PosenetExtension1.PoseUpdated事件。這個事件處理程序的代碼在初始文件中已經創建了,雖然每個被調用的過程(drawKeyPoints, drawBody, drawHead等)的代碼都是空的,但接下來你可以很快創建。注意如果用戶單擊CanvasLiveButton時,事件處理程序中的if then語句可以確保攝像機實時畫面會在畫布上播放,畫布默認為純黑色背景。

10. 構建骨架

現在我們來編寫一些過程。

drawKeyPoints過程用來繪製一個紅色圓圈來表示PoseNet返回的身體的每個關鍵點:

PoseNetExtension1.KeyPoints列表中PoseNet返回的每個點,使用前面提及的輔助過程drawPoint繪製一個點。

提示

解決方案

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

drawBody過程會畫出身體的骨架,通過適當關鍵點之間畫黃線來勾勒骨架:

設置畫布的畫筆顏色為黃色(或者其他與關鍵點不同的顏色)

對於PosenetExtension1.Skeleton列表中的每塊骨骼,使用前面提及的輔助過程drawLine在骨骼的兩端之間繪製一條直線。

注意:PosenetExtension1.Skeleton返回一個「骨骼」列表,其中每個「骨骼」都是一個包含兩個關鍵點的列表,這兩個關鍵點是骨骼兩端的點。比如在骨骼中,小腿的骨頭是一個由腳踝關鍵點和膝蓋關鍵點組成的列表。

提示

解決方案

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

11. 繪製圓形的頭部(可選)

如果想在骨骼肩膀上有一個圓形的頭,可以編寫drawHead過程。否則在肩膀上方只有一些標明耳朵、眼睛和鼻子的關鍵點,沒有圓形的頭部,就像在前面動畫中所示。

drawHead過程:

檢查是否已定義LeftEarRightEar關鍵點。用代數的中點公式,以兩耳連接線的中點為圓心畫一個圓:選擇圓的半徑為兩個耳朵之間距離的一半,確保圓穿過兩隻耳朵。

提示

解決方案

注意:如果水平方向的代碼太長,可以使用「外接輸入項」菜單選項(通過右鍵單擊)來縮小操作所需的空間。要回到默認選項,可使用「內嵌輸入項」,如下所示。

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

12. 測試應用

現在我們使用AI伴侶來測試應用是否運行良好。注意,不能在測試中使用模擬器,因為它不支持MIT App Inventor擴展,如PoseNet。

檢查你的app是否可以跟蹤你或他人的身體,並可以正確構建骨骼連接身體的關鍵點。為了獲得最佳的PoseNet效果,確保身體部分光線充足,並且背景是純色。松松垮垮的衣服也可能會干擾對身體關鍵點的追蹤。

如果你用的是手機而不是平板電腦,屏幕可能太小,無法一次顯示所有內容。在本例中,由於該項目默認選中了屏幕的「Scrollable」屬性,可以通過滾動屏幕來顯示想要的內容。也可以選擇隱藏HorizontalArrangement1組件(該組件用於顯示影子舞者的圖像)。如果仍然缺少屏幕空間,還可以不勾選webviewwer1的Visible屬性將其隱藏。如果進行了上述操作,要注意Canvas1的尺寸(2500x300)仍然必須完全匹配WebViewer1的尺寸。

13. 檢測舞步

我們探討一些簡單的舞蹈動作:

「手在空中」舞步

「膝蓋向上」舞步I, II

「特拉沃爾塔」舞步I, II

約翰·特拉沃爾塔著名的《狂熱周六夜》舞步

「T形」舞步

現在我們編寫代碼來檢測這些舞蹈動作。當這些舞蹈動作被檢測到時,被跟蹤的舞者的舞蹈分數Dance Score將自動增加。

14. 「手在空中」舞步

過程checkForHandsintheAirMove

首先檢查PoseNet返回的以下關鍵點是否定義:左右手腕和左右耳朵。定義「手在空中」舞步的一種方法是確保兩個手腕點都在各邊耳朵點的上方。要做到這一點,只需比較右手腕和右耳的y坐標,並對左手腕和左耳做相似的事情。畫布上的x軸和y軸的位置如下圖所示,原點在畫布的左上角。所以右手腕在右耳上方意味著右手腕的y坐標小於右耳的y坐標。左手腕和左耳也是如此。如果兩個手腕都在各邊耳朵之上,則增加Dance Score。

提示

解決方案

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

15. 「膝蓋向上」舞步

過程checkForKneeUpMove

首先檢查PoseNet返回的以下關鍵點是否定義:右膝,右臀,左膝,左臀。定義「膝蓋向上」舞步的一種方法是:或者右膝蓋點在右臀部點之上,或者左膝蓋點在左臀部點之上。要確定這一點,只需比較右膝蓋的y坐標和右臀部的y坐標,並對左膝蓋和左臀部做相似的事情。如果任何一個膝蓋在其對應的臀部之上,那麼增加Dance Score。

提示

解決方案

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

16. 「特拉沃爾塔」舞步

現在你為什麼不試著自己定義「特拉沃爾塔」舞步和checkfortravoltammove過程呢?

提示

定義「特拉沃爾塔」舞步的一種方法是,右手腕在右耳之上,同時左手腕在左肩膀之下;或者左手腕在左耳之上,同時右手腕在右肩膀之下。

解決方案

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

17. 「T型」舞步

如果你想要進行挑戰,可以試著定義「T型」舞步,舞者水平伸展左右手,形成字母「T」的形狀。

提示

為了確保雙手與腕部和肩膀保持水平,兩側的手腕和肩膀的y坐標應該非常接近。同時以伸展的手臂而言,右手腕和右肩膀之間的距離應該非常接近右手腕到右肘部及右肘部到右肩膀的距離之和。左邊也一樣。

解決方案

注意:如果你了解一些三角函數,可以利用關鍵點的角關係來簡化一些代碼。

先嘗試自己編寫代碼,如果遇到困難可以參考提示。

18. 測試app

充分檢查你的app,直到你(或你用PoseNet跟蹤的其他人)做的任何舞蹈動作都會被正確檢測到,且Dance Score會增加。正如前面所提到的,為了獲得最佳的PoseNet效果,請確保身體光線充足,並且舞者是在純色背景前。松松垮垮的衣服也可能會干擾對身體關鍵點的追蹤。

在YouTube上找一些舞蹈視頻,這些視頻要滿足只有一個舞者,且背景清晰,用這些視頻測試你的app,看看你的應用如何能跟蹤舞者。

恭喜你,你已經建立了你的第一個基於人工智慧的app,它可以跟蹤一個人的動作,並識別一些基本的舞蹈動作。

拓展你的app

當前版本的app,如果你保持某種舞姿,Dance Score會不斷增加。添加一些智能代碼,確保給定的舞蹈動作只會獲得一次獎勵,直到觀察到新的舞蹈動作。

創建一個罰分系統,如果檢測到糟糕的舞姿(比如雖然舞者做出了類似T形動作,但舞者的手臂沒有水平伸展,形成字母Y而不是字母T的姿勢,等等),則Dance Score會扣分。

想像一下這款應用的瑜伽版本,它可以檢測不同的瑜伽姿勢,並獎勵正確的姿勢。

你還能想到哪些可以用身體的關鍵點來描述和量化的嘻哈舞姿?在你的應用中實現這些想法。

還有什麼其他的好主意?

關於Youth Mobile Power

我們很多人整天都在手機上度過,痴迷各種app。儘管我們知道手機會對我們的注意力、隱私甚至安全構成威脅,但我們還是繼續打字和刷手機。但「口袋裡的電腦」也為年輕人創造了未開發的機會,讓他們學習、聯繫並改變我們的社區。

這就是為什麼麻省理工學院和YR媒體聯手推出了青年移動動力系列。YR青少年製作故事,突出年輕人如何以令人驚訝和強大的方式使用手機。與此同時,麻省理工學院的團隊正在不斷改進MIT App Inventor,讓像你這樣的用戶能夠創建像YR報導中提到的那樣的APP。

回歸初心:從故事中獲得靈感,開始製作你自己的應用程式吧!

YR和麻省理工學院的合作部分得到了美國國家科學基金會的支持。本材料基於美國國家科學基金會在批准號下支持的工作。(1906895, 1906636)。本材料中所表達的任何意見、發現、結論或建議均為作者個人觀點,並不一定反映美國國家科學基金會的觀點。

點擊此處查看更多由YR創建的應用程式和交互式新聞內容。

點擊「閱讀原文」下載aia源文件及手機測試文件。

相關焦點

  • 觸手可及的AI:2020十大人工智慧APP揭榜時刻
    它是世界上最著名、最先進的人工智慧app之一,最初是為蘋果手機專門設計的,現在也可以在安卓手機上使用。這款應用可以像真人一樣與用戶對話,通過對話捕捉用戶的興趣,從而使對話變得更加具體化和個性化,甚至可以與人類培養出接近現實關係的友誼。
  • 開發APP,怎麼少得了人工智慧和機器學習?
    現在,你甚至可以用手機識別聲音、下達指令甚至提供語音翻譯。所有這些手機功能都是基於人工智慧 (AI) ,即計算機系統內的一整套思考及學習模式。這意味著什麼?許多智能程序都是依靠對AI的深度研究和深層知識開發的,而開發人員依照其他手機應用的智能及潛能來開發智識功能。
  • 圖像識別與人工智慧圖像識別和機器視覺有什麼區別
    人工智慧領域發展到現在,ai與人工智慧、圖像識別領域、計算機視覺領域等近年來越來越多的整合和融合。首先,人工智慧在生活工作中將普遍應用;其次,人工智慧在不同的工作場景都有其應用,從金融到醫療,從服務到工廠,應用無處不在;最後,人工智慧正在與自動駕駛技術等聯繫在一起。
  • 人工智慧終可「識別人心」
    六七十餘年來,科學家和工程師們編寫出各種各樣的程序,建立了各種不同的人工智慧或機器學習的數學模型,推進了虛擬實境、無人駕駛、人臉識別、語音助理等技術的發展。換言之,機器今天已經擁有了識別語音、圖像和活動場景的能力,它甚至可以與人對話。那麼,人心可以識別麼?讓機器看著人的臉,讀懂人的心,正激勵著無數科學家的探索。
  • 人工智慧與圖像識別在醫療診斷中的應用
    最為常見的人工智慧,例如iPhone的Siri,特斯拉的自動駕駛,智能語音客服等,皆通過機器學習這類統計算法來實現。與傳統統計方法相比,機器學習的優勢在於它可以處理數量巨大、特徵繁多的數據;並基於學習過去的經驗與知識,在遇到新的問題時,通過歸納出的解決方法來處理問題。本文將探討人工智慧在關乎人類生老病死的醫療健康行業中的應用,重點講述醫療影像識別中的優劣勢及市場應用。
  • 微軟圖像識別技術 讓人工智慧睜眼看世界
    就在Windows10發布前夕,微軟全球執行副總裁沈向洋在接受媒體採訪時表示:即將登陸Win10的人工智慧機器人伴侶小冰,將會整合微軟在圖像識別領域的領先技術,並擁有同類產品中"最強大的視覺"。作為微軟人工智慧領域的核心產品,微軟小冰將睜開"雙眼",看一看這個豐富多彩的世界。
  • 智能識別運動模式 app也能記錄健身時間
    如果你喜歡用手機來記錄你的健身歷程,又不希望像Nike+ Fuelband那樣給自己配個手環或追蹤器,那麼接下來這款app或許是個不錯的選擇。The Moves智能識別記錄運動時長(圖片引自geeky-gadgets)    最近一款名為The Moves的iOS app登陸了iTunes App Store並提供免費下載
  • 五子登科APP:人工智慧和未來教育
    知識在當今社會變得越來越重要,人工智慧對社會各個行業都有著不可估量的影響。  作為知識之母的「教育」將因人工智慧而發生巨大變化。五子登科的智能教育app以人工智慧和虛擬實境的未來教育為基礎,整個智能課程體系與國民教育信息化進程密切相關。人工智慧的應用將如何改變未來的教育模式,這是教育界不可避免的問題。許立佳認為,科學技術是影響教育的重要因素之一,人工智慧將對教育產生革命性的影響。
  • 日語翻譯官官方app下載
    日語翻譯官官方app下載軟體介紹:日語翻譯官app是一款非常實用的日語翻譯軟體,使用本app用戶可以輕鬆的學習日語或者是進行日語對話的翻譯了,真人發音,離線使用,真正幫助你的日本旅遊。
  • 植物識別app對比測試
    都知道拿個手機一排,咔噠一下自動識別。有用app的,有用微信小程序的。我個人更喜歡用APP,因為微信小程序廣告太多了。我最常用的是形色和花伴侶這兩個軟體。我隨便從我養的植物裡面選了10種,分別用這2個軟體來識別。識別對了一個得10分,滿分100分,看看這兩個軟體到底能得多少分?
  • 人工智慧識別植物很給力,幫您秒變機智「探花郎」
    有人工智慧來「幫忙」後,植物識別變得輕鬆、準確了許多。藉助百度識圖提供的領先AI圖像識別能力,「拍照識花」功能對於常見植物的識別率可以達到92%世界各地的自然歷史博物館正在加速藏品數位化進程,將標本圖像存儲在開放資料庫中。人工智慧技術的運用,也為植物標本的收集、保存和識別提供了便利。
  • 這款批量識別圖片文字的app,只要一元!另附四款app推薦
    一款批量識別圖片文字與翻譯功能的輕量化OCR文字識別app。·批量識別同類app裡的領跑者,能一次識別9張圖片,批量識別後也可以對多張原圖同時進行校對;自動識別出結果中的電話、連結、地址,點擊即可直接使用;支持系統相冊插件識別,無需打開APP即可快速完成識別;識別結果自動存為歷史記錄,檢索方便。
  • 剪映app怎麼識別字幕 剪映在視頻加文字方法教學
    剪映app可以幫助我們剪輯和處理視頻,呈現出完美的狀態。使用起來十分方便,其中剪映app可以識別和添加字幕。下面教大家識別字幕的方法。  剪映app怎麼識別字幕  2、素材導入完畢之後,我們需要點擊底端的「文本」按鈕,然後從喚起的列表裡使用自動識別字幕,或者手動添加文本作為字。  以上就是剪映app識別字幕的方法介紹。
  • 模式識別與人工智慧「十二五」規劃戰略研討會召開
    由國家自然科學基金委員會信息科學部自動化處主辦,模式識別國家重點實驗室承辦的「模式識別與人工智慧」領域發展戰略研討會於6月11日在北京召開。戴汝為院士、張鈸院士、陸汝鈐院士等30餘位該領域的知名專家學者參加了會議。中科院自動化所副所長徐波代表自動化所致歡迎辭。
  • 人機影像識別染色體疾病 人工智慧程序以一敵十
    4月3日,2018網際網路嶽麓峰會人工智慧專場舉行人機大戰,10名醫生對陣人工智慧程序,通過看圖識別存在異常的染色體。綜藝節目「最強大腦」經常讓選手從一組物品中找不同,4月3日,2018網際網路嶽麓峰會人工智慧專場也進行了這樣一場人機大戰。10名醫生對陣人工智慧程序,通過看圖識別存在異常的染色體。最終,人工智慧程序戰勝10名醫生。
  • 新面部識別APP幫你識別大熊貓
    A facial recognition app will make it easy for you.分不清楚毛茸茸的大熊貓?一款面部識別應用程式能讓你輕鬆分辨。discern [d'sn]:vt.覺察出;識別;了解The app is developed by the Chengdu Research Base of Giant Panda Breeding along with researchers in Singapore Nanyang Technological university
  • 澳洲國立大學人工智慧專業剖析
    人工智慧所涉及的知識包括計算機、電子和機械三個領域。澳洲國立大學人工智慧專業屬於計算機系,這是該系最頂尖的課程之一。該專業企圖了解智能的實質,並生產出一種新的能以人類智能相似的方式做出反應的智能機器,目前該領域的研究成果包括語言識別、圖像識別、機器人、自然語言處理和專家系統等。
  • 被稱作"智障"的人工智慧 光語音識別就花了100年
    但同樣不可否認的是,語音識別方面的人工智慧已經擁有相當大的規模。語音識別已經帶來了極大便利舉個非常常見的例子,現在的網絡電視大多都支持語音搜索功能,這給電視的使用帶來了極大的便利。因為電池的輸入設備仍舊是遙控,其輸入效率無法與鍵盤匹敵,但支持語音的話,只要對電視輸入語音命令,就可以完成交互,十分便利。另外,語音識別交互也為盲人的設備使用帶來了福音。其作用不可小覷。
  • 個人所得稅app註冊人臉識別不了失敗怎麼處理操作方法
    個人所得稅人臉識別失敗怎麼辦?很多小夥伴在使用個人所得稅APP註冊的時候發現人臉識別不了,這該怎麼辦呢?  個人所得稅app人臉識別失敗的處理操作  1、先檢查手機的前置攝像頭,將其清理乾淨避免鏡頭模糊。
  • 人工智慧方向—智能圖像識別技術(一)
    1.人工智慧的核心驅動力人工智慧的核心驅動力是機器學習。而深度學習是機器學習的一個特定分支。我們要想充分理解深度學習,必須對機器學習的基本原理有深刻的理解。機器學習算法是一種能夠從數據中學習的算法,然後我們所謂的「學習」是什麼意思呢?