每日最新頭條.有趣資訊

【學術論文】基於PSO-BP神經網路的人體穴位定位系統設計

摘要:

穴位的位置是否找準會直接影響治療效果,因此設計了一種基於粒子群演算法優化神經網路(PSO-BP)的穴位相對坐標預測模型,然後與ARM結合構成一個可以用於人體穴位定位的系統。首先採用PC進行MATLAB模擬訓練學習,然後將最優權值及閾值保存下來並簡化演算法嵌入ARM內,將在線預測轉變為離線過程。實驗結果表明:經粒子群優化過的BP神經網路有效地改善了局部極值缺陷,可應用於定位端預測穴位的位置,並在LCD中顯示穴位相關資訊,控制端收到位置數據後可執行電機上的運動操作。

?

中文引用格式: 楊向萍,吳玉丹. 基於PSO-BP神經網路的人體穴位定位系統設計[J].電子技術應用,2018,44(9):75-78.
英文引用格式: Yang Xiangping,Wu Yudan. Acupoint positioning system based on PSO-BP neural network[J]. Application of Electronic Technique,2018,44(9):75-78.

0 引言

人體穴位分布容易受到人體尺寸和比例的影響,所以具有以下兩個特性:非線性、模糊不確定性。人體穴位分布的解決方法主要有3種:視覺技術、光學定位法和專家系統法。但是這些方法存在著一些不足:視覺技術採用的是二維視覺測量結合影像處理進行人工標誌穴位定位,龐大的分析系統降低了定位的實時性,並且應用場合有局限[1];光學定位法可模擬人眼得出物體的三維坐標達到定位目的,但是定位標靶和周圍環境背景都會給定位造成極大的干擾,降低定位精度[2];專家系統法是整合專家經驗知識,在實際應用中很難將這些經驗轉化成一系列規則。

人工智慧和仿生技術的發展,出現了很多基於人工智慧的預測方法。為了提高中醫按摩機器人穴位尋找行為規劃的精度,山東建築大學提出了一種基於遺傳演算法優化BP神經網路的中醫按摩機器人穴位坐標預測方法。結果表明,該方法對中醫按摩機器人尋找患者穴位坐標具有較好的精度和預測準確性[3]。由於遺傳演算法的交叉變異部分會使整個收斂過程變慢,在實際應用中,穩定性可能會比較低。而粒子群演算法過程比較簡單,所以採用粒子群演算法優化BP神經網路演算法建立穩定準確的穴位坐標預測模型[4],簡化學習過程後將過程移植進ARM[5-6]。最後測試表明:優化後的BP神經網路具有更快的收斂性和適應性,還有比較高的預測精度和穩定性。

本文提出的整體系統設計方案是基於ARM和PSO-BP的人體穴位定位,該系統還具備穴位坐標實時顯示及穴位資訊播報的功能。由於整個演算法的學習過程比較複雜,循環次數非常多,會拖慢整個系統的運行速度,因此在PC上完成整個動態學習過程然後將最優權值及閾值保存輸出,並將簡化後的演算法嵌入ARM內,實際使用時直接根據提示輸入資訊後即可達到穴位定位的目的。

1 PSO-BP神經網路

1.1 演算法模型設計

BP神經網路是目前應用最為廣泛和成功的神經網路之一,該網路的特點是信號前向傳遞,誤差反向傳播調整網路的權值和閾值。BP神經網路的拓撲結構包括輸入層(input)、隱含層(hide layer)和輸出層(output layer),如圖1所示,最終系統想要達到的效果是輸入已知的某穴位坐標值(X坐標,Y坐標),然後預測出其他3個穴位的坐標值。

系統設計的BP神經網路結構採用可以預測幾乎所有的非線性函數的三層拓撲結構,輸入層神經元為2,輸出層神經元為6。對於隱含層(中間層)的神經元數目的選取採用式(1)來確定[7]:

其中,MidNum為隱層節點數,InNum、OutNum分別是輸入和輸出節點數,a是1~10之間的常數。

最後BP神經網路的拓撲結構為2 —8—6;訓練函數採用「taingdx」;隱含層和輸出層選取的傳遞函數均為「tansig」;選擇的訓練次數為3 000;訓練目標誤差為0.000 1。

粒子群(PSO)演算法用於網路訓練可以對權值和閾值的選取進行優化,而不是盲目地給定初值,而且優化過的神經網路會防止神經網路陷入局部最優並提高精度。因此PSO優化BP神經網路的核心是:BP網路中的權值和閾值的集合是群體中的每個粒子的位置集合,其個數是粒子的維度。然後對神經網路進行迭代優化訓練,網路的輸出誤差作為演算法的適應度函數即式(2)。

式中,S是學習訓練樣本,Tk是期望輸出,Yk是實際輸出。整個演算法流程如圖2所示。

1.2 MATLAB模擬

以人體的背部為例,穴位是有規律分布的,所以將大椎穴作為坐標原點(0,0)建立坐標系,然後選取大柕穴的相對坐標作為輸入,目標輸出為脾俞、膈關和命門的相對坐標。模擬訓練測量了70組不同測試者的穴位相對坐標,隨機選取其中的60組作為學習樣本,剩下的10組作為測試樣本訓練神經網路。

在MATLAB中進行編程,粒子群演算法反覆迭代200次後將粒子編碼轉換成BP神經網路的初始的閾值和權值再繼續網路的學習過程。模擬結果如圖3所示,可發現均方誤差隨著訓練的次數增加在逐漸變小,直到訓練1 015次時可達到要求的誤差值。

為了方便清晰觀察,以第一組預測數據為例通過MATLAB輸出預測曲線圖,如圖4所示,可以看出預測值非常接近實際值,初步證明預測模型的建立是正確的。

最後計算PSO-BP演算法數據的預測值和實際值的絕對誤差,輸入一組大柕穴的坐標(X軸:24 mm,Y軸:24 mm),如表1所示,絕對誤差沒有超過10 mm,可以看出神經網路對穴位位置的預測精度可以保證在10 mm以內,滿足定位要求。

2 系統硬體設計

系統採用雙機通信和獨立電源的方式來工作,主要分為兩部分:主機是穴位定位系統實現穴位預測功能,從機為位置控制系統實現穴位實現功能。系統的整體硬體結構如圖5所示。

2.1 穴位定位系統

這部分主要以可視聽為目的,按鍵採用的是4×4行列式的排列,包括0~9數字鍵和確認取消鍵。使用3.2寸TFT LCD液晶屏進行參數輸入和預測結果的顯示。按鍵輸入所需穴位坐標值,此時在LCD可監視輸入是否正確,按下確認鍵後便可執行編寫好的預測程式,並在液晶屏上顯示輸出的穴位坐標值同時通過WiFi向位置控制系統發送坐標值。

2.2 位置控制系統

這部分是控制操作為主,當WiFi連接成功後會有語音提示然後啟動電機,電機控制模塊有4個直線步進電機,其中分別對應了背部3條主要經絡督脈和兩條足太陽膀胱經。穴位定位系統發出相應的穴位位置後,電機帶動裝置移動到對應位置,移動結束LED指示燈亮起提醒使用者操作已完成,如果控制系統接收到的位置資訊有誤,蜂鳴器會發出三聲聲警報。最後操作無誤語音會播報相應的穴位相關資訊,便於使用者了解穴位的相關知識和治療功效。

3 PSO-BP演算法簡化軟體設計

整個演算法體系非常龐大,而且數據的處理形式都是以浮點數進行的,單片機的計算能力有限,所以考慮將演算法簡化後移植進穴位定位系統的主晶元中。思路是首先利用MATLAB訓練出神經網路的最佳權值和閾值矩陣,然後將神經網路導出移植到ARM中。對於定點CPU來說必須要按照IEEE-754標準演算法來完成運算,會耗費大量的時間。系統使用的定位晶元STM32F407I屬於Cortex-M4F架構,帶有32位單精度硬體FPU,支持浮點指令集,相對於Cortex-M0和Cortex-M3等,高出數十倍甚至上百倍的運算性能。

神經網路演算法主要分為兩個階段:第一為學習階段,這個階段的任務就是通過反向誤差傳播調節最適權值和閾值,PSO演算法主要就是優化這個過程,尋找到最優的初始權值及閾值給網路;第二為應用階段,這一階段就是使用達到要求的權值及閾值來解決實際的問題。第一階段需要做大量的循環並且PSO演算法的加入使這一過程的計算量更大,所以採取將第二階段用C語言輸出融合進ARM晶元中的方案。

利用MATLAB搭建神經網路學習框架對這一過程進行在線訓練,提取出輸入層及隱含層的權值及閾值,將這些訓練好的參數以浮點數陣列的形式存入ARM中。接下來就是在ARM中應用神經網路演算法對人體穴位位置進行預測,這一部分是將數據輸入給一個已知結構的神經網路,然後對網路的前向過程進行求解。

簡化後過程包含歸一化處理、神經元乘加運算和傳遞函數計算。歸一化處理是將輸入數據的值限制在[0,1]之間,這樣統一標準會提高數據的精確性。系統採用的方法是離差標準化,對原始數據進行線性變換,轉換函數為:

其中Xmax為樣本數據的最大值,Xmin為樣本數據的最小值。接下來神經元的加乘過程如圖6所示。

所以加乘運算的公式為:

這個公式涉及的兩個關鍵參數權值Wkn和偏置bk,在ARM轉運站換成float可以精確到小數點後7位。

傳遞函數的選擇是非線性雙曲正切S型函數tanh,在STM32F4的函數庫內沒有這個雙曲正切函數,所以要採用泰勒展開的形式化簡。tanh的公式為:

將e2x展開結果帶入式(6)中,精度可達到小數點後4位。

STM32F4採用硬體開啟FPU的方式,首先將協處理器控制寄存器(CPACR)的第20~23設為1,然後在編譯器Code Generation中設定Use FPU開啟FPU的硬體使能。將上述3個部分轉換成3個C語言程式子程式,然後在主程式中依次調用即可達到實時輸出預測結果的目的。整個系統的軟體設計如圖7所示。

4 硬體測試與結果分析

將演算法簡化程式寫進STM32F4中,向定位系統輸入一組大柕穴的坐標(X軸:24 mm,Y軸:24 mm)然後在LCD液晶屏上記錄下預測結果,同樣採用相對誤差作為衡量指標,如表2所示。

從表2中可以看出預測的絕對誤差沒有超過15 mm,但是相對於MATLAB給出的預測結果(表1)準確性下降了。原因是從MATLAB中導出參數以浮點數形式存入ARM時會影響精度,而且對於傳遞函數的泰勒展開時也會犧牲掉一些精度,這些損失疊加後會對最後位置輸出的準確性造成影響。

5 結束語

本文設計了基於ARM和PSO-BP的人體穴位定位系統,該系統可以根據輸入大柕穴的位置後預測出命門、脾俞、膈關的穴位坐標。因為BP神經網路容易陷入局部最優,所以加入了PSO演算法對其進行優化處理,然後在STM32F407I中嵌入PSO-BP簡化演算法軟體,可以進行實時穴位坐標預測。實驗表明該系統可以比較好地預測出穴位位置,然後控制電機移動到相應位置,再進行微調,完成對穴位定位。

參考文獻

[1] 馬哲文,於豪光.基於視覺定位的按摩機器人穴位跟蹤系統[J].機器人技術與應用,2010(6):33-35.

[2] 林雪華.光學定位法人體經絡可視化中提高精度方法的研究[D].福州:福州大學,2014.

[3] 張秋雲,張營,李臣.遺傳演算法優化BP神經網路在中醫按摩機器人中的應用[J].應用科技,2017,44(2):73-77.

[4] 徐順,盧文科,左鋒.基於PSO-BP神經網路的光纖壓力感測器溫度補償研究[J].儀錶技術與感測器,2016(10):1-5,9.

[5] 李銳,熊傑.基於BP神經網路的原油持水率檢測儀[J].儀錶技術與感測器,2017(10):29-32.

[6] 趙延軍,程守光,高承彬,等.基於BPNN的固相品質流量軟測量方法[J].儀錶技術與感測器,2014(7):103-105.

[7] 黃家才,李巨集勝,滕福林,等.BP網路在阻抗式原油含水率測量儀中的應用[J].儀錶技術與感測器,2011(12):24-26.

作者資訊:

招聘資訊


獲得更多的PTT最新消息
按讚加入粉絲團