唐浩鑫 胡建華 魏嘉俊 黃沃清 張曉南 任楚



摘? 要:隨著音樂素質教育的普及,學習鋼琴的兒童與日俱增。但由于家長工作忙、不懂專業知識、孩子不愿主動練琴等原因,需要專人進行“鋼琴陪練”。目前行業內人工陪練存在收費價格昂貴、陪練人員不專業、無法進行可視化分析等缺點。因此,文章開發了基于深度學習的鋼琴手型指法識別鋼琴教學陪練系統,系統通過獲取攝像頭實時拍攝數據進行實時處理,通過目標檢測、姿態識別等方式識別出手的關節點,與名師數據集進行比對,使用圖像分類算法識別錯誤手型,將實時處理后的視頻結果通過推流的方式,將識別結果在網頁端展示,具有較好的實際應用價值。
關鍵詞:深度學習;目標檢測算法;姿態識別算法
中圖分類號:TP391.4;TP18 文獻標識碼: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? 引? 言
隨著國家政策在美育行業的推動,有條件的家長讓孩子學習一門樂器已經成為普遍現象,其中鋼琴受到了更多家長推崇和喜愛。鋼琴學習離不開鋼琴陪練,目前鋼琴陪練市場火熱,采用人工陪練存在收費價格昂貴、陪練人員不專業、無法進行可視化分析等缺點。因此涌現了許多陪練應用,例如小葉子陪練,但是這些應用目前都是基于音頻識別方法,沒有采用基于視頻識別的人工智能陪練技術,存在無法實現手型監測與指法糾錯、難以保障高質量教學互動和溝通指導、視覺限制導致疏漏錯誤等缺點。練習者在學習鋼琴時需要注意手型和指法的正確方式,特別是對于鋼琴入門者來說,需要時刻注意手型和指法的正確性,對后期彈琴演奏技術的成長非常重要[1]。正確的手勢不僅能減輕對練習者手部的疲勞,更能幫助提升練習者技巧,因此本文研發基于深度學習的鋼琴手型指法識別系統。
隨著人工智能的發展,相關學者已將相關技術應用于鋼琴演奏評估、鋼琴演奏自動評估系統開發與設計[2]、鋼琴演奏評價系統研究[3]、基于人工智能的鋼琴編曲音色識別系統設計[4]等。目前這些算法只是實現對鋼琴演奏音準檢測與識別,無法實現手型監測與指法糾錯,然而手型規范對于鋼琴初學者來說尤為重要。因此本文通過視頻目標檢測、手勢識別等方式,實現對鋼琴彈奏錯誤識別、手型錯誤識別以及評分,通過網頁形式實時顯示鋼琴練習者手型以及評分。
1? 基于深度學習的鋼琴手型指法識別系統
1.1? 系統總體架構
系統采用前端與后端組成,后端主要實現視頻的讀取與算法識別,前端通過網頁展示處理的結果。首先系統通過攝像頭實時獲取對應的鋼琴彈奏視頻,經過圖像處理,然后發送到算法識別模塊,進行鋼琴彈奏錯誤識別、手型錯誤識別以及評分。最后將識別后的結果視頻通過WebSocket通信,在前端進行展示。算法識別模塊將彈奏錯誤出現次數以及手型錯誤次數進行統計,通過HTTP通信,將錯誤情況以及總體得分情況在前端顯示。算法識別是由數據采集、數據標注、模型訓練、算法部署等步驟組成。數據采集主要完成對鋼琴彈奏過程中各種彈奏錯誤手型、錯誤音符等視頻進行采集。數據標注主要使用labelme工具[5]對于拇指夾指、拇指離鍵、翹手腕、手掌塌陷、小指平躺、掌關節塌陷、指尖站立這7種錯誤手型進行標注,使用YOLOv3目標檢測算法[6]進行模型訓練,算法部署實現將訓練好的模型集成在系統中,在服務器上進行部署,如圖1所示。
1.2? 系統功能模塊設計
本文設計的基于深度學習的鋼琴手型指法識別系統實現了對練習者彈奏指法的識別與糾正。通過AI技術模擬陪練,指導學員鋼琴練習,通過圖像、視頻識別算法,精準地檢測彈琴手型,實時糾正學員的手型與指法錯誤,主要實現了圖像采集、姿態識別、識別對比等功能。
如圖2所示,基于深度學習的鋼琴手型指法識別系統可劃分為彈奏錯誤識別模塊、手型識別評分模塊和歷史數據模塊,不同功能模塊還可具體劃分為不同功能子模塊。
具體功能如下:
1)彈奏錯誤識別模塊。該模塊主要用于練習者選擇上傳錄屏檢測或者調用攝像頭實時檢測,調用目標檢測算法實現對錯誤彈奏按鍵識別,實時將按錯鍵的手指在圖像畫面檢測并使用框標記出來,同時將檢測結果實時推送到前端進行顯示,練習者可以實時獲取自己的彈奏的準確性。
2)手型識別評分模塊。該模塊采用深度學習姿態識別主法對彈奏手指關節進行檢測與識別,然后與標準的名師手勢進行比較,輸出對應的評分,并且對于拇指夾指、拇指離鍵、翹手腕、手掌塌陷、小指平躺、掌關節塌陷、指尖站立等進行檢測與識別。
3)歷史數據模塊。該模塊用于記錄用戶每次彈奏數據、記錄每次彈奏出錯位置,在彈奏結束后,輸出之前識別與標記好的彈奏數據,方便用戶看到自己錯誤方法以及技術薄弱環節。
1.3? 前后端視頻通信
本系統的后端采用了SpringBoot框架,該框架是一種Java平臺上的開源應用框架,具有控制反轉特性的容器。Spring框架使用容器管理對象的生命周期,可以通過掃描xml文件或類上的Java注解來配置對象,開發者可以使用依賴查找或依賴注入來獲取對象。在本文中,我們使用該后端框架來實現網頁的渲染、路由響應以及數據庫管理。鋼琴彈奏錯誤識別、手型錯誤識別算法采用深度學習框架PyTorch,采用Python語言進行代碼編寫,因為在后端系統中存在兩種程序語言,所以系統中采用WebSocket接口通信來解決Java語言與Python兩種語言之間的數據信息通信問題。
攝像頭視頻的讀取通過Python語言的Opencv模塊函數cv2.VideoCapture對練習者彈奏的實時圖像進行采集,然后通過深度學習算法進行處理與識別,得到處理的幀圖像,將處理結果轉換成Base64格式,通過WebSocket通信將處理結果在前端實時展示。
系統前端使用Vue框架進行設計,Vue框架是一套基于JavaScript開發、用于構建用戶界面的漸進式框架,不僅易于上手,還便于與第三方庫或既有項目整合,在該系統中通過Vue數據雙向綁定的特性進行實時接收后端WebStock通信推送的Base64格式數據,在前端定義HTML圖像標簽img,并將Base64格式數據進行渲染顯示。
2? 系統關鍵技術
基于深度學習算法的一系列目標檢測算法與姿態估計算法已取得了很大的突破。系統采用YOLOv3算法來進行目標檢測,目標檢測算法除了實現錯誤彈奏按鍵識別之外,還可以實現對手位置的檢測,獲得練習者在視頻中的手部坐標,然后通過將YOLOv3識別出的手勢預測框圖片傳入到姿態估計算法HRnet主干神經網絡,然后采用卷積、反卷積模塊來生成多分辨率和高分辨率的獨熱圖,來進行對手勢識別關節點的預測。
2.1? 算法架構設計
本項目的手型識別關鍵算法由兩個核心部分組成,分別是目標檢測算法與姿態估計算法。目標檢測算法主要采用了YOLOv3算法來檢測關鍵幀手所處的位置。
YOLOv3算法采用了一個單獨的神經網絡,通過將圖像分成多個區域并預測每個區域的概率和邊界框,來進行目標檢測。該算法主要分為兩個步驟:首先,基于一定規則在圖像上生成一系列候選區域,然后通過與真實框的位置關系來標注這些候選區域。候選區域與真實框足夠接近的被標注為正樣本,真實框的位置被作為正樣本的位置目標;而偏離真實框較大的候選區域則標注為負樣本,不需要預測位置或類別。
其次,利用卷積神經網絡提取圖像特征,對候選區域的位置和類別進行預測。每個預測框都被視為一個樣本,通過標注真實框相對于預測框的位置和類別,生成標簽值,并通過網絡模型進行位置和類別的預測。通過比較網絡預測值和標簽值,建立損失函數,對網絡進行訓練和優化。
然后在此基礎上延伸出兩個功能,第一個功能先是通過YOLOv3算法來對當前關鍵幀的手型進行一個錯誤手型判斷,第二個功能是在獲取當前關鍵幀手所處的位置坐標后,使用“HRnet”姿態估計算法來對手部關鍵點進行預測,將所獲得的手部關鍵點坐標存儲進數組,采用DTW算法[7]將演奏者的彈奏情況與鋼琴教師彈奏的標準數據進行一個對比并評分。最后輸出演奏者的錯誤手型數量以及演奏評分。本系統評分算法框圖如圖3所示。
2.2? 目標檢測算法訓練
本項目采用YOLOv3目標檢測算法進行模型訓練,網絡模型結構如圖4所示。首先,使用官方提供的默認權重文件進行初始化,設置模型的標簽類型等信息。接著,為了構建數據集,我們邀請多位專業鋼琴教師錄制正確彈奏和錯誤彈奏的視頻,如圖5所示,并使用labelme工具對常見的錯誤手型進行標注。將標注好的數據集輸入到網絡中進行數據預處理。最后,進行網絡模型訓練,對數據集中的圖像進行處理并得到網絡的輸出結果。在訓練過程中,需要注意調整模型的層數、每層隱藏層的節點數以及激活函數,并使用帶標簽的數據進行損失函數的計算。為使損失函數達到預期效果,我們通過反向傳播來更新權重,反復訓練過程。最后,使用訓練好的模型進行目標預測。
2.3? 姿態識別算法描述
本項目采用了HRnet姿態識別算法[8]來對手部關節點進行識別。
視覺人體姿態識別算法是一種通過計算機視覺技術,對人體在圖像或視頻中的姿態進行自動識別和分析的算法。該算法可以對人體的關鍵點、姿態、動作等進行識別和分析,從而實現對人體運動和行為的自動識別和監測。關鍵點檢測算法通過識別人體的關鍵點,如頭部、手、肘、肩膀、膝蓋、腳等關鍵點的位置,從而識別人體的姿態。該算法是目前最常用和最基礎的人體姿態識別算法,通常使用卷積神經網絡(Convolutional Neural Network, CNN)等模型進行訓練。
相對于以往的從低分辨率到高分辨率的神經網絡如U-Net、SegNet、DeconvNet、Hourglass等,HRNet算法采用并聯的方式將不同分辨率子網從高到低進行并行連接,以實現多尺度融合時能更加有效地利用特征信息。相較于傳統的串聯結構,這種與眾不同的并聯結構能夠隨時保持高分辨率表征,無須從低分辨率表征中恢復高分辨率表征,從而大大提高了姿勢識別的準確度。如圖6所示,HRNet模型結構中的橫向表示模型深度的變化,縱向表示特征圖尺度的變化。第一行為主干網絡(特征圖為高分辨率),作為第一階段,并逐漸并行加入分辨率子網絡以建立更多的階段。各并行網絡之間相互交換信息,以實現多尺度融合與特征提取。最終,所估計的關鍵點位于高分辨率主干網絡的輸出。
通過姿態識別算法對彈奏鋼琴時的手關節進行檢測,得到手型檢測效果,最后通過DTW算法實現與名師手型的對比,得到評分。
3? 實驗分析
系統以網頁形式實時展示鋼琴彈奏視頻手勢識別結果,如圖7所示,后端主要實現視頻的讀取與算法識別,實時對彈奏時的手部關節點進行識別,完成對圖像的實時處理。一方面將處理后的圖像通過推流的方式,在前端進行手型檢測視頻的實時顯示;另一方面還將進行鋼琴彈奏錯誤識別、手型錯誤類型識別以及評分,并且將通過網頁進行多維度展示。本次實驗邀請了多位專業鋼琴教師對系統輸出結果進行了評估,他們一致認為該系統具有較高的識別準確率,基本能夠滿足識別錯誤手型的要求。
4? 結? 論
本文提出基于深度學習的鋼琴手型指法識別系統,通過人工智能視頻識別,精準識別彈奏錯音和卡頓問題,智能監測手型和指法規范。結果表明,鋼琴手型指法識別系統功能運行穩定,能夠為用戶提供較為準確的手型評估結果,實現彈奏自動評測以及演奏回放講評等功能,與此同時,此系統為鋼琴學生提供了全新的學習模式與平臺,在很大程度上調動了學生的學習自主性與積極性,值得大力推廣與應用。
參考文獻:
[1] 高姝玥.手型在鋼琴演奏中的重要意義 [J].北方音樂,2020(21):68-70.
[2] 黃承承.鋼琴演奏自動評估系統開發與設計 [J].自動化技術與應用,2020,39(9):151-154.
[3] 劉樂.鋼琴演奏評價系統研究 [D].北京:清華大學,2006.
[4] 仝智倍.基于人工智能的鋼琴編曲音色識別系統設計 [J].現代電子技術,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算法的動態手勢識別 [J].傳感器與微系統,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—),男,漢族,河南新鄉人,助教,博士,研究方向:管理學、工商管理、初創企業管理;通訊作者:胡建華(1984—),男,漢族,湖南婁底人,高級工程師,碩士,研究方向:圖像視頻處理、視頻編解碼、深度學習。
收稿日期:2023-04-04
基金項目:廣東省科技創新戰略專項資金(“攀登計劃”專項資金)(pdjh2023a0848);廣東省教育廳青年創新人才類項目(2019GKQNCX043)