唐浩鑫 胡建華 魏嘉俊 黃沃清 張曉南 任楚
摘? 要:隨著音樂素質(zhì)教育的普及,學(xué)習(xí)鋼琴的兒童與日俱增。但由于家長工作忙、不懂專業(yè)知識、孩子不愿主動練琴等原因,需要專人進行“鋼琴陪練”。目前行業(yè)內(nèi)人工陪練存在收費價格昂貴、陪練人員不專業(yè)、無法進行可視化分析等缺點。因此,文章開發(fā)了基于深度學(xué)習(xí)的鋼琴手型指法識別鋼琴教學(xué)陪練系統(tǒng),系統(tǒng)通過獲取攝像頭實時拍攝數(shù)據(jù)進行實時處理,通過目標(biāo)檢測、姿態(tài)識別等方式識別出手的關(guān)節(jié)點,與名師數(shù)據(jù)集進行比對,使用圖像分類算法識別錯誤手型,將實時處理后的視頻結(jié)果通過推流的方式,將識別結(jié)果在網(wǎng)頁端展示,具有較好的實際應(yīng)用價值。
關(guān)鍵詞:深度學(xué)習(xí);目標(biāo)檢測算法;姿態(tài)識別算法
中圖分類號:TP391.4;TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2023)19-0017-04
Piano Hand Fingering Recognition System Based on Deep Learning
TANG Haoxin, HU Jianhua, WEI Jiajun, HUANG Woqing, ZHANG Xiaonan, REN Chu
(Computer Engineering Technical College, Guangdong Polytechnic of Science and Technology, Zhuhai? 519090, China)
Abstract: With the popularization of music quality education, the number of children learning piano is increasing day by day. However, due to busy parents' work, lack of professional knowledge, and children's unwillingness to take the initiative to practice piano, a dedicated person is needed to accompany them in piano practice. At present, there are shortcomings in the industry, such as expensive fees, unprofessional accompaniment personnel, and inability to conduct visual analysis for manual accompaniment. Therefore, this paper develops a piano teaching accompaniment system based on Deep Learning for piano hand fingering recognition. The system obtains real-time camera shooting data for real-time processing, identifies joint points of the hand through target detection, posture recognition and other methods, and compares them with the dataset of famous teachers. It uses image classification algorithm to recognize incorrect hand types, and pushes the real-time processed video results to display on the webpage. It has good practical application value.
Keywords: Deep Learning; target detection algorithm; posture recognition algorithm
0? 引? 言
隨著國家政策在美育行業(yè)的推動,有條件的家長讓孩子學(xué)習(xí)一門樂器已經(jīng)成為普遍現(xiàn)象,其中鋼琴受到了更多家長推崇和喜愛。鋼琴學(xué)習(xí)離不開鋼琴陪練,目前鋼琴陪練市場火熱,采用人工陪練存在收費價格昂貴、陪練人員不專業(yè)、無法進行可視化分析等缺點。因此涌現(xiàn)了許多陪練應(yīng)用,例如小葉子陪練,但是這些應(yīng)用目前都是基于音頻識別方法,沒有采用基于視頻識別的人工智能陪練技術(shù),存在無法實現(xiàn)手型監(jiān)測與指法糾錯、難以保障高質(zhì)量教學(xué)互動和溝通指導(dǎo)、視覺限制導(dǎo)致疏漏錯誤等缺點。練習(xí)者在學(xué)習(xí)鋼琴時需要注意手型和指法的正確方式,特別是對于鋼琴入門者來說,需要時刻注意手型和指法的正確性,對后期彈琴演奏技術(shù)的成長非常重要[1]。正確的手勢不僅能減輕對練習(xí)者手部的疲勞,更能幫助提升練習(xí)者技巧,因此本文研發(fā)基于深度學(xué)習(xí)的鋼琴手型指法識別系統(tǒng)。
隨著人工智能的發(fā)展,相關(guān)學(xué)者已將相關(guān)技術(shù)應(yīng)用于鋼琴演奏評估、鋼琴演奏自動評估系統(tǒng)開發(fā)與設(shè)計[2]、鋼琴演奏評價系統(tǒng)研究[3]、基于人工智能的鋼琴編曲音色識別系統(tǒng)設(shè)計[4]等。目前這些算法只是實現(xiàn)對鋼琴演奏音準(zhǔn)檢測與識別,無法實現(xiàn)手型監(jiān)測與指法糾錯,然而手型規(guī)范對于鋼琴初學(xué)者來說尤為重要。因此本文通過視頻目標(biāo)檢測、手勢識別等方式,實現(xiàn)對鋼琴彈奏錯誤識別、手型錯誤識別以及評分,通過網(wǎng)頁形式實時顯示鋼琴練習(xí)者手型以及評分。
1? 基于深度學(xué)習(xí)的鋼琴手型指法識別系統(tǒng)
1.1? 系統(tǒng)總體架構(gòu)
系統(tǒng)采用前端與后端組成,后端主要實現(xiàn)視頻的讀取與算法識別,前端通過網(wǎng)頁展示處理的結(jié)果。首先系統(tǒng)通過攝像頭實時獲取對應(yīng)的鋼琴彈奏視頻,經(jīng)過圖像處理,然后發(fā)送到算法識別模塊,進行鋼琴彈奏錯誤識別、手型錯誤識別以及評分。最后將識別后的結(jié)果視頻通過WebSocket通信,在前端進行展示。算法識別模塊將彈奏錯誤出現(xiàn)次數(shù)以及手型錯誤次數(shù)進行統(tǒng)計,通過HTTP通信,將錯誤情況以及總體得分情況在前端顯示。算法識別是由數(shù)據(jù)采集、數(shù)據(jù)標(biāo)注、模型訓(xùn)練、算法部署等步驟組成。數(shù)據(jù)采集主要完成對鋼琴彈奏過程中各種彈奏錯誤手型、錯誤音符等視頻進行采集。數(shù)據(jù)標(biāo)注主要使用labelme工具[5]對于拇指夾指、拇指離鍵、翹手腕、手掌塌陷、小指平躺、掌關(guān)節(jié)塌陷、指尖站立這7種錯誤手型進行標(biāo)注,使用YOLOv3目標(biāo)檢測算法[6]進行模型訓(xùn)練,算法部署實現(xiàn)將訓(xùn)練好的模型集成在系統(tǒng)中,在服務(wù)器上進行部署,如圖1所示。
1.2? 系統(tǒng)功能模塊設(shè)計
本文設(shè)計的基于深度學(xué)習(xí)的鋼琴手型指法識別系統(tǒng)實現(xiàn)了對練習(xí)者彈奏指法的識別與糾正。通過AI技術(shù)模擬陪練,指導(dǎo)學(xué)員鋼琴練習(xí),通過圖像、視頻識別算法,精準(zhǔn)地檢測彈琴手型,實時糾正學(xué)員的手型與指法錯誤,主要實現(xiàn)了圖像采集、姿態(tài)識別、識別對比等功能。
如圖2所示,基于深度學(xué)習(xí)的鋼琴手型指法識別系統(tǒng)可劃分為彈奏錯誤識別模塊、手型識別評分模塊和歷史數(shù)據(jù)模塊,不同功能模塊還可具體劃分為不同功能子模塊。
具體功能如下:
1)彈奏錯誤識別模塊。該模塊主要用于練習(xí)者選擇上傳錄屏檢測或者調(diào)用攝像頭實時檢測,調(diào)用目標(biāo)檢測算法實現(xiàn)對錯誤彈奏按鍵識別,實時將按錯鍵的手指在圖像畫面檢測并使用框標(biāo)記出來,同時將檢測結(jié)果實時推送到前端進行顯示,練習(xí)者可以實時獲取自己的彈奏的準(zhǔn)確性。
2)手型識別評分模塊。該模塊采用深度學(xué)習(xí)姿態(tài)識別主法對彈奏手指關(guān)節(jié)進行檢測與識別,然后與標(biāo)準(zhǔn)的名師手勢進行比較,輸出對應(yīng)的評分,并且對于拇指夾指、拇指離鍵、翹手腕、手掌塌陷、小指平躺、掌關(guān)節(jié)塌陷、指尖站立等進行檢測與識別。
3)歷史數(shù)據(jù)模塊。該模塊用于記錄用戶每次彈奏數(shù)據(jù)、記錄每次彈奏出錯位置,在彈奏結(jié)束后,輸出之前識別與標(biāo)記好的彈奏數(shù)據(jù),方便用戶看到自己錯誤方法以及技術(shù)薄弱環(huán)節(jié)。
1.3? 前后端視頻通信
本系統(tǒng)的后端采用了SpringBoot框架,該框架是一種Java平臺上的開源應(yīng)用框架,具有控制反轉(zhuǎn)特性的容器。Spring框架使用容器管理對象的生命周期,可以通過掃描xml文件或類上的Java注解來配置對象,開發(fā)者可以使用依賴查找或依賴注入來獲取對象。在本文中,我們使用該后端框架來實現(xiàn)網(wǎng)頁的渲染、路由響應(yīng)以及數(shù)據(jù)庫管理。鋼琴彈奏錯誤識別、手型錯誤識別算法采用深度學(xué)習(xí)框架PyTorch,采用Python語言進行代碼編寫,因為在后端系統(tǒng)中存在兩種程序語言,所以系統(tǒng)中采用WebSocket接口通信來解決Java語言與Python兩種語言之間的數(shù)據(jù)信息通信問題。
攝像頭視頻的讀取通過Python語言的Opencv模塊函數(shù)cv2.VideoCapture對練習(xí)者彈奏的實時圖像進行采集,然后通過深度學(xué)習(xí)算法進行處理與識別,得到處理的幀圖像,將處理結(jié)果轉(zhuǎn)換成Base64格式,通過WebSocket通信將處理結(jié)果在前端實時展示。
系統(tǒng)前端使用Vue框架進行設(shè)計,Vue框架是一套基于JavaScript開發(fā)、用于構(gòu)建用戶界面的漸進式框架,不僅易于上手,還便于與第三方庫或既有項目整合,在該系統(tǒng)中通過Vue數(shù)據(jù)雙向綁定的特性進行實時接收后端WebStock通信推送的Base64格式數(shù)據(jù),在前端定義HTML圖像標(biāo)簽img,并將Base64格式數(shù)據(jù)進行渲染顯示。
2? 系統(tǒng)關(guān)鍵技術(shù)
基于深度學(xué)習(xí)算法的一系列目標(biāo)檢測算法與姿態(tài)估計算法已取得了很大的突破。系統(tǒng)采用YOLOv3算法來進行目標(biāo)檢測,目標(biāo)檢測算法除了實現(xiàn)錯誤彈奏按鍵識別之外,還可以實現(xiàn)對手位置的檢測,獲得練習(xí)者在視頻中的手部坐標(biāo),然后通過將YOLOv3識別出的手勢預(yù)測框圖片傳入到姿態(tài)估計算法HRnet主干神經(jīng)網(wǎng)絡(luò),然后采用卷積、反卷積模塊來生成多分辨率和高分辨率的獨熱圖,來進行對手勢識別關(guān)節(jié)點的預(yù)測。
2.1? 算法架構(gòu)設(shè)計
本項目的手型識別關(guān)鍵算法由兩個核心部分組成,分別是目標(biāo)檢測算法與姿態(tài)估計算法。目標(biāo)檢測算法主要采用了YOLOv3算法來檢測關(guān)鍵幀手所處的位置。
YOLOv3算法采用了一個單獨的神經(jīng)網(wǎng)絡(luò),通過將圖像分成多個區(qū)域并預(yù)測每個區(qū)域的概率和邊界框,來進行目標(biāo)檢測。該算法主要分為兩個步驟:首先,基于一定規(guī)則在圖像上生成一系列候選區(qū)域,然后通過與真實框的位置關(guān)系來標(biāo)注這些候選區(qū)域。候選區(qū)域與真實框足夠接近的被標(biāo)注為正樣本,真實框的位置被作為正樣本的位置目標(biāo);而偏離真實框較大的候選區(qū)域則標(biāo)注為負(fù)樣本,不需要預(yù)測位置或類別。
其次,利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,對候選區(qū)域的位置和類別進行預(yù)測。每個預(yù)測框都被視為一個樣本,通過標(biāo)注真實框相對于預(yù)測框的位置和類別,生成標(biāo)簽值,并通過網(wǎng)絡(luò)模型進行位置和類別的預(yù)測。通過比較網(wǎng)絡(luò)預(yù)測值和標(biāo)簽值,建立損失函數(shù),對網(wǎng)絡(luò)進行訓(xùn)練和優(yōu)化。
然后在此基礎(chǔ)上延伸出兩個功能,第一個功能先是通過YOLOv3算法來對當(dāng)前關(guān)鍵幀的手型進行一個錯誤手型判斷,第二個功能是在獲取當(dāng)前關(guān)鍵幀手所處的位置坐標(biāo)后,使用“HRnet”姿態(tài)估計算法來對手部關(guān)鍵點進行預(yù)測,將所獲得的手部關(guān)鍵點坐標(biāo)存儲進數(shù)組,采用DTW算法[7]將演奏者的彈奏情況與鋼琴教師彈奏的標(biāo)準(zhǔn)數(shù)據(jù)進行一個對比并評分。最后輸出演奏者的錯誤手型數(shù)量以及演奏評分。本系統(tǒng)評分算法框圖如圖3所示。
2.2? 目標(biāo)檢測算法訓(xùn)練
本項目采用YOLOv3目標(biāo)檢測算法進行模型訓(xùn)練,網(wǎng)絡(luò)模型結(jié)構(gòu)如圖4所示。首先,使用官方提供的默認(rèn)權(quán)重文件進行初始化,設(shè)置模型的標(biāo)簽類型等信息。接著,為了構(gòu)建數(shù)據(jù)集,我們邀請多位專業(yè)鋼琴教師錄制正確彈奏和錯誤彈奏的視頻,如圖5所示,并使用labelme工具對常見的錯誤手型進行標(biāo)注。將標(biāo)注好的數(shù)據(jù)集輸入到網(wǎng)絡(luò)中進行數(shù)據(jù)預(yù)處理。最后,進行網(wǎng)絡(luò)模型訓(xùn)練,對數(shù)據(jù)集中的圖像進行處理并得到網(wǎng)絡(luò)的輸出結(jié)果。在訓(xùn)練過程中,需要注意調(diào)整模型的層數(shù)、每層隱藏層的節(jié)點數(shù)以及激活函數(shù),并使用帶標(biāo)簽的數(shù)據(jù)進行損失函數(shù)的計算。為使損失函數(shù)達(dá)到預(yù)期效果,我們通過反向傳播來更新權(quán)重,反復(fù)訓(xùn)練過程。最后,使用訓(xùn)練好的模型進行目標(biāo)預(yù)測。
2.3? 姿態(tài)識別算法描述
本項目采用了HRnet姿態(tài)識別算法[8]來對手部關(guān)節(jié)點進行識別。
視覺人體姿態(tài)識別算法是一種通過計算機視覺技術(shù),對人體在圖像或視頻中的姿態(tài)進行自動識別和分析的算法。該算法可以對人體的關(guān)鍵點、姿態(tài)、動作等進行識別和分析,從而實現(xiàn)對人體運動和行為的自動識別和監(jiān)測。關(guān)鍵點檢測算法通過識別人體的關(guān)鍵點,如頭部、手、肘、肩膀、膝蓋、腳等關(guān)鍵點的位置,從而識別人體的姿態(tài)。該算法是目前最常用和最基礎(chǔ)的人體姿態(tài)識別算法,通常使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)等模型進行訓(xùn)練。
相對于以往的從低分辨率到高分辨率的神經(jīng)網(wǎng)絡(luò)如U-Net、SegNet、DeconvNet、Hourglass等,HRNet算法采用并聯(lián)的方式將不同分辨率子網(wǎng)從高到低進行并行連接,以實現(xiàn)多尺度融合時能更加有效地利用特征信息。相較于傳統(tǒng)的串聯(lián)結(jié)構(gòu),這種與眾不同的并聯(lián)結(jié)構(gòu)能夠隨時保持高分辨率表征,無須從低分辨率表征中恢復(fù)高分辨率表征,從而大大提高了姿勢識別的準(zhǔn)確度。如圖6所示,HRNet模型結(jié)構(gòu)中的橫向表示模型深度的變化,縱向表示特征圖尺度的變化。第一行為主干網(wǎng)絡(luò)(特征圖為高分辨率),作為第一階段,并逐漸并行加入分辨率子網(wǎng)絡(luò)以建立更多的階段。各并行網(wǎng)絡(luò)之間相互交換信息,以實現(xiàn)多尺度融合與特征提取。最終,所估計的關(guān)鍵點位于高分辨率主干網(wǎng)絡(luò)的輸出。
通過姿態(tài)識別算法對彈奏鋼琴時的手關(guān)節(jié)進行檢測,得到手型檢測效果,最后通過DTW算法實現(xiàn)與名師手型的對比,得到評分。
3? 實驗分析
系統(tǒng)以網(wǎng)頁形式實時展示鋼琴彈奏視頻手勢識別結(jié)果,如圖7所示,后端主要實現(xiàn)視頻的讀取與算法識別,實時對彈奏時的手部關(guān)節(jié)點進行識別,完成對圖像的實時處理。一方面將處理后的圖像通過推流的方式,在前端進行手型檢測視頻的實時顯示;另一方面還將進行鋼琴彈奏錯誤識別、手型錯誤類型識別以及評分,并且將通過網(wǎng)頁進行多維度展示。本次實驗邀請了多位專業(yè)鋼琴教師對系統(tǒng)輸出結(jié)果進行了評估,他們一致認(rèn)為該系統(tǒng)具有較高的識別準(zhǔn)確率,基本能夠滿足識別錯誤手型的要求。
4? 結(jié)? 論
本文提出基于深度學(xué)習(xí)的鋼琴手型指法識別系統(tǒng),通過人工智能視頻識別,精準(zhǔn)識別彈奏錯音和卡頓問題,智能監(jiān)測手型和指法規(guī)范。結(jié)果表明,鋼琴手型指法識別系統(tǒng)功能運行穩(wěn)定,能夠為用戶提供較為準(zhǔn)確的手型評估結(jié)果,實現(xiàn)彈奏自動評測以及演奏回放講評等功能,與此同時,此系統(tǒng)為鋼琴學(xué)生提供了全新的學(xué)習(xí)模式與平臺,在很大程度上調(diào)動了學(xué)生的學(xué)習(xí)自主性與積極性,值得大力推廣與應(yīng)用。
參考文獻(xiàn):
[1] 高姝玥.手型在鋼琴演奏中的重要意義 [J].北方音樂,2020(21):68-70.
[2] 黃承承.鋼琴演奏自動評估系統(tǒng)開發(fā)與設(shè)計 [J].自動化技術(shù)與應(yīng)用,2020,39(9):151-154.
[3] 劉樂.鋼琴演奏評價系統(tǒng)研究 [D].北京:清華大學(xué),2006.
[4] 仝智倍.基于人工智能的鋼琴編曲音色識別系統(tǒng)設(shè)計 [J].現(xiàn)代電子技術(shù),2020,43(4):183-186.
[5] GitHub. Image Polygonal Annotation with Python (Polygon, Rectangle, Circle, Line, Point and Image-Level Flag Annotation) [EB/OL].[2022-10-07].https://github.com/wkentaro/labelme.
[6] GitHub. A Keras Implementation of YOLOv3 (Tensorflow Backend) [EB/OL].[2022-07-05].https://github.com/qqwweee/keras-yolo3.
[7] 魏秋月,劉雨帆.基于Kinect和改進DTW算法的動態(tài)手勢識別 [J].傳感器與微系統(tǒng),2021,40(11):127-130.
[8] SUN K,XIAO B,LIU D,et al. Deep High-Resolution Representation Learning for Human Pose Estimation [C]//2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).Long Beach:IEEE,2019:5686-5696.
作者簡介:唐浩鑫(1988—),男,漢族,河南新鄉(xiāng)人,助教,博士,研究方向:管理學(xué)、工商管理、初創(chuàng)企業(yè)管理;通訊作者:胡建華(1984—),男,漢族,湖南婁底人,高級工程師,碩士,研究方向:圖像視頻處理、視頻編解碼、深度學(xué)習(xí)。
收稿日期:2023-04-04
基金項目:廣東省科技創(chuàng)新戰(zhàn)略專項資金(“攀登計劃”專項資金)(pdjh2023a0848);廣東省教育廳青年創(chuàng)新人才類項目(2019GKQNCX043)