魏雨,馬曉陽,高志宇
(1. 河南中醫藥大學尚真書院,河南 鄭州 450046;2. 河南中醫藥大學信息技術學院,河南 鄭州 450046)
隨著工作壓力的增大和生活水平的提高,亞健康問題逐漸成為人們關注的焦點,通過中醫穴位調理身體機能的方式逐漸引起人們的重視[1]。為了便于人們快速尋找穴位,從而緩解環境帶來的刺激輔助病人健康恢復,本研究團隊基于卷積神經網絡技術構建深度學習模型對穴位進行預測,將中醫文化和信息化更好地結合,融入時代發展所需,繼承并發揚中醫藥傳統文化。
人體穴位對治療各種疾病具有重要意義,傳統的穴位識別方法主要依靠醫生經驗和手動操作,容易出現主觀性和不確定性等問題。隨著計算機視覺和深度學習技術的發展,自動化穴位識別成為了研究熱點之一。深度學習是近年來發展最快的機器學習技術之一,具有強大的學習能力和泛化能力。隨著卷積神經網絡(convolutional neural network,CNN)的發展,其善于處理大規模圖像數據的優點逐步用卷積神經網絡來替代手工特征提取器進行特征提取,目標檢測算法也逐步向基于深度學習的方向發展,檢測精度、速度不斷提升,基于深度學習的目標檢測算法在一定程度上也可以改善由候選區計算冗余的問題[2]。卷積神經網絡(CNN)作為深度學習的代表模型,適用于圖像和數據的處理。本研究基于深度學習技術,綜合應用卷積神經網絡,構建了Faster RCNN模型穴位識別模型。
微信小程序是一種不需要下載安裝即可使用的應用,體現了“用完即走”的理念[3],作為一種輕量級應用,可以在微信平臺上實現快速開發和發布,為用戶提供了更加便捷的服務體驗。在此背景下,本研究基于研究結果構建一款微信小程序,用戶可以方便地上傳自己的穴位圖片,經過處理后獲得相應的穴位識別結果,為用戶提供便捷識穴服務。此外,基于微信小程序的人體穴位識別還具有較好的跨平臺性和可擴展性,開發者可以通過微信小程序的云開發和擴展能力,快速構建和部署自己的應用,提供更加全面和個性化的服務。
本文研究所使用的數據集是基于mediapipe庫中的Holistic模型輸出的人體姿態數據和采集的河南中醫藥大學師生的手部圖片,其中包括了人體關節點的坐標信息,采集的圖片穴位經過河南中醫藥大學中醫學院老師標注。該數據集共收集2 000張圖片,每張圖片均標注人體穴位的位置,用于訓練和測試穴位識別模型。

圖1 構建思路

圖2 Faster RCNN算法結構示意圖
1.2.1 特征提取網絡
相較于早期的機器學習算法(如SVM 等),卷積神經網絡(CNN)的卷積操作發揮了非常關鍵的作用。卷積操作不僅可以減少網絡層數過多導致的大量內存占用,還可以大大降低模型中權重和偏置的數量,從而減輕過擬合的問題。通常,一個單層的CNN 結構包括卷積層、激活函數和池化層。卷積層的主要作用是進行卷積運算,類似于數字圖像中的濾波器運算。結果見圖3,n1個h1*w1的輸入圖像數據,經過n2個h2*w2的卷積核運算,得到n3個h3*w3的輸出圖像數據[4]。

圖3 圖像卷積
其中,xi代表第i層輸入數據,yi代表第j層輸出數據,wij和bj則分別代表該層的權值和偏移。
卷積神經網絡(CNN)是一種應用廣泛的深度學習模型,其中包含了多層神經網絡。特征提取部分采用了一種基于CNN 的特征提取方法。首先,將輸入的人體姿態數據轉化為圖片,然后將圖片送入卷積神經網絡中進行特征提取。
本研究使用ResNet-101 進行特征提取,選擇ResNet-101主要考慮到在提取穴位特征的過程中,隨著網絡層數的增大會導致梯度逐漸變小,從而導致反向傳播時低層的權重更新為零,使網絡難以訓練,ResNet-101 中的殘差塊允許信息跳躍連接[5],結果見圖4。從而讓梯度能夠更好地傳播,有助于解決梯度消失的問題,使網絡能夠提取更多的穴位信息。

圖4 連接模塊
1.2.2 RPN區域候選網絡
RPN 代表Region Proposal Network,負責生成候選目標區域[6],即候選物體邊界框,RPN 是通過深度卷積神經網絡進行構建的,能夠在圖像中高效地生成可能包含目標的區域,并將這些候選區域傳遞給后續的目標分類和邊界框回歸模塊。
RPN是基于特征圖生成一組預定義的錨框,每個錨框都有不同的尺寸和寬高比,覆蓋不同大小和形狀的目標,對于每個錨框,RNP 通過3 × 3的卷積核進行卷積、再分別進行9通道的1 × 1卷積和36通道的1 × 1卷積及激活函數進行分類,判斷該錨框是否包含目標,同時,RNP也會對那些被分類為正樣本的穴位的錨框進行邊框回歸,以調整其位置和大小來更準確地擬合邊界框。
4.1 溫室消毒:按溫室空間,每立方米用硫磺4克加80%DDV0.1克和鋸末8克混合均勻后點燃封閉一晝夜,再打開風口大放風。
1.2.3 損失函數
損失函數主要是多任務損失函數,包括分類損失和邊界框回歸損失,其損失函數公式見公式(2)。在網絡中通過最小化這些損失函數來學習準確地生成候選目標和對目標進行分類和回歸。
其中,分類損失采用二分類交叉熵損失函數,pi表示第i個錨框預測為真實標簽的概率,p*i表示真實錨框地概率,當為正樣本時為其值為1,為負樣本時其值為0,ti表示預測第i個錨框的邊界回歸參數,t*i表示第i個錨框對應的GT Boxde 邊界框回歸參數。
實驗環境選用:Windows 操作系統,python3.7,RTX3060進行訓練,首先在已經訓練好的ResNet-101預訓練模型上訓練RNP網絡,其次,利用RNP網絡來產生proposals,進行迭代循環訓練并不斷調整超參數。
本研究使用Pytorch 框架實現了上述算法,使用隨機梯度下降(SGD)算法進行優化。訓練過程中,將數據集分成了訓練集、驗證集和測試集,采用了Early Stopping策略和Dropout技術避免過擬合[7]。
Early Stopping 策略是指在模型訓練過程中,監測模型在驗證集上的性能,并在驗證集性能不再提升時停止訓練。這是因為模型在訓練過程中,隨著模型的復雜度增加,訓練集的損失函數值會逐漸降低,但在驗證集上的性能卻不一定隨之提高。一旦驗證集性能不再提升,就可以認為模型已經到達了過擬合的程度,進而提前停止訓練,避免模型在過擬合的狀態下繼續學習。
Dropout 技術是指在模型訓練過程中,隨機刪除一部分神經元,以降低模型的復雜度。具體來說,在每一次訓練迭代中,我們以一定的概率丟棄網絡中的某些神經元,使其在該次迭代中不參與前向傳播和反向傳播。由于每一次迭代中隨機刪除的神經元不同,可以認為這種方式等價于訓練了很多個不同的子網絡,從而提高模型的泛化能力。此外,Dropout技術也可以看作是一種正則化方法,可以強制網絡學習到更加魯棒的特征,抑制不必要的、過擬合的特征,從而防止模型過擬合。
綜合使用Early Stopping 策略和Dropout 技術可以有效地避免過擬合[8]。在模型訓練過程中,通過設置一個最大迭代次數和一個最小性能提升閾值來觸發Early Stopping策略,以提前停止訓練。同時,可以在神經網絡的各個層中應用Dropout技術,以降低模型的復雜度并增強模型的泛化能力。經過不斷的調參訓練,穴位模型的測試集map 最終達到了92%左右,結果見圖5,經過30次的迭代損失函數也達到了收斂,結果見圖6。

圖5 map圖像

圖6 loss曲線
程序封裝:研究團隊構建輕量化穴位識別小程序,小程序分為主頁、識穴、看點三個模塊,進入小程序首先是各個穴位的介紹和十二經絡概略,結果見圖7。看點主要包括穴位養生知識,穴位按摩手法等相關中醫養生知識,結果見圖8。識穴為通過調用模型對拍照圖片進行穴位識別標識,結果見圖9。利用訓練好的模型進行手心和手背穴位預測的圖像,結果見圖10。

圖7 微信小程序穴位信息

圖9 手心穴位識別圖

圖10 手背穴位識別圖
為了證實研究的使用價值,團隊對市面上的穴位程序就體驗感和準確性上進行了比對研究。本研究團隊對三款穴位定位APP(尋艾、經脈寶和經絡養生)進行了分析,三款APP中都介紹了穴位的相關內容,可以在線進行篩查定穴,其中經絡養生APP支持視頻講解。但是三款產品都有一個共同的缺陷,即穴位定位難以理解且使用的是3D模型和人體區別較大,只有三次免費使用機會,體驗感不佳。另外兩款微信小程序:找脈絡穴位和圖解經絡穴位,都介紹了穴位的相關知識,但是對穴位的按摩手法和相關穴位程序沒有做詳細介紹。相比較而言,本團隊提出的識別算法在穴位識別上達到了一個很高的準確率,而微信小程序的搭建能夠滿足人們的正常生活的識穴、教穴的目的,有很高的應用價值。
本研究所設計的Faster RCNN 穴位識別模型具有較高的準確性和穩定性,且能夠在實時性方面滿足要求。同時,微信小程序的構建使得穴位信息可以隨時隨地獲取,為民眾提供便捷的健康服務,此外,針對微信小程序的構建可以適用于不同的人群,非專業人士可以根據識別的穴位進行操作按摩按壓達到調理生理機能的效果,針對不同的人群可以取得不同的效果。
盡管團隊構建的模型達到了一個很好的效果,但是由于數據量和硬件設備的限制,沒有對大規模數據進行測試評價,因此下一步的工作會對數據進行大量的標注訓練,以獲得更好的結果。后續也會利用深度學習中的其他算法進行訓練模型,并且利用Python 構建移動端APP,實現對人體穴位的精準識別。