文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180900
中文引用格式: 楊向萍,,吳玉丹. 基于PSO-BP神經(jīng)網(wǎng)絡的人體穴位定位系統(tǒng)設計[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種:視覺技術、光學定位法和專家系統(tǒng)法,。但是這些方法存在著一些不足:視覺技術采用的是二維視覺測量結(jié)合圖像處理進行人工標志穴位定位,,龐大的分析系統(tǒng)降低了定位的實時性,并且應用場合有局限[1],;光學定位法可模擬人眼得出物體的三維坐標達到定位目的,但是定位標靶和周圍環(huán)境背景都會給定位造成極大的干擾,,降低定位精度[2],;專家系統(tǒng)法是整合專家經(jīng)驗知識,在實際應用中很難將這些經(jīng)驗轉(zhuǎn)化成一系列規(guī)則,。
人工智能和仿生技術的發(fā)展,,出現(xiàn)了很多基于人工智能的預測方法。為了提高中醫(yī)按摩機器人穴位尋找行為規(guī)劃的精度,,山東建筑大學提出了一種基于遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的中醫(yī)按摩機器人穴位坐標預測方法,。結(jié)果表明,,該方法對中醫(yī)按摩機器人尋找患者穴位坐標具有較好的精度和預測準確性[3]。由于遺傳算法的交叉變異部分會使整個收斂過程變慢,,在實際應用中,,穩(wěn)定性可能會比較低。而粒子群算法過程比較簡單,,所以采用粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡算法建立穩(wěn)定準確的穴位坐標預測模型[4],,簡化學習過程后將過程移植進ARM[5-6]。最后測試表明:優(yōu)化后的BP神經(jīng)網(wǎng)絡具有更快的收斂性和適應性,,還有比較高的預測精度和穩(wěn)定性,。
本文提出的整體系統(tǒng)設計方案是基于ARM和PSO-BP的人體穴位定位,該系統(tǒng)還具備穴位坐標實時顯示及穴位信息播報的功能,。由于整個算法的學習過程比較復雜,,循環(huán)次數(shù)非常多,會拖慢整個系統(tǒng)的運行速度,,因此在PC上完成整個動態(tài)學習過程然后將最優(yōu)權值及閾值保存輸出,,并將簡化后的算法嵌入ARM內(nèi),實際使用時直接根據(jù)提示輸入信息后即可達到穴位定位的目的,。
1 PSO-BP神經(jīng)網(wǎng)絡
1.1 算法模型設計
BP神經(jīng)網(wǎng)絡是目前應用最為廣泛和成功的神經(jīng)網(wǎng)絡之一,,該網(wǎng)絡的特點是信號前向傳遞,誤差反向傳播調(diào)整網(wǎng)絡的權值和閾值,。BP神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu)包括輸入層(input),、隱含層(hide layer)和輸出層(output layer),如圖1所示,,最終系統(tǒng)想要達到的效果是輸入已知的某穴位坐標值(X坐標,,Y坐標),然后預測出其他3個穴位的坐標值,。
系統(tǒng)設計的BP神經(jīng)網(wǎng)絡結(jié)構(gòu)采用可以預測幾乎所有的非線性函數(shù)的三層拓撲結(jié)構(gòu),,輸入層神經(jīng)元為2,輸出層神經(jīng)元為6,。對于隱含層(中間層)的神經(jīng)元數(shù)目的選取采用式(1)來確定[7]:
其中,,MidNum為隱層節(jié)點數(shù),InNum,、OutNum分別是輸入和輸出節(jié)點數(shù),,a是1~10之間的常數(shù)。
最后BP神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu)為2 —8—6,;訓練函數(shù)采用“taingdx”,;隱含層和輸出層選取的傳遞函數(shù)均為“tansig”;選擇的訓練次數(shù)為3 000;訓練目標誤差為0.000 1,。
粒子群(PSO)算法用于網(wǎng)絡訓練可以對權值和閾值的選取進行優(yōu)化,,而不是盲目地給定初值,而且優(yōu)化過的神經(jīng)網(wǎng)絡會防止神經(jīng)網(wǎng)絡陷入局部最優(yōu)并提高精度,。因此PSO優(yōu)化BP神經(jīng)網(wǎng)絡的核心是:BP網(wǎng)絡中的權值和閾值的集合是群體中的每個粒子的位置集合,,其個數(shù)是粒子的維度。然后對神經(jīng)網(wǎng)絡進行迭代優(yōu)化訓練,,網(wǎng)絡的輸出誤差作為算法的適應度函數(shù)即式(2),。
式中,S是學習訓練樣本,,Tk是期望輸出,,Yk是實際輸出。整個算法流程如圖2所示,。
1.2 MATLAB仿真
以人體的背部為例,,穴位是有規(guī)律分布的,所以將大椎穴作為坐標原點(0,,0)建立坐標系,,然后選取大柕穴的相對坐標作為輸入,目標輸出為脾俞,、膈關和命門的相對坐標,。仿真訓練測量了70組不同測試者的穴位相對坐標,隨機選取其中的60組作為學習樣本,,剩下的10組作為測試樣本訓練神經(jīng)網(wǎng)絡,。
在MATLAB中進行編程,粒子群算法反復迭代200次后將粒子編碼轉(zhuǎn)換成BP神經(jīng)網(wǎng)絡的初始的閾值和權值再繼續(xù)網(wǎng)絡的學習過程,。仿真結(jié)果如圖3所示,,可發(fā)現(xiàn)均方誤差隨著訓練的次數(shù)增加在逐漸變小,直到訓練1 015次時可達到要求的誤差值,。
為了方便清晰觀察,,以第一組預測數(shù)據(jù)為例通過MATLAB輸出預測曲線圖,如圖4所示,,可以看出預測值非常接近實際值,,初步證明預測模型的建立是正確的。
最后計算PSO-BP算法數(shù)據(jù)的預測值和實際值的絕對誤差,,輸入一組大柕穴的坐標(X軸:24 mm,,Y軸:24 mm),如表1所示,,絕對誤差沒有超過10 mm,可以看出神經(jīng)網(wǎng)絡對穴位位置的預測精度可以保證在10 mm以內(nèi),,滿足定位要求,。
2 系統(tǒng)硬件設計
系統(tǒng)采用雙機通信和獨立電源的方式來工作,,主要分為兩部分:主機是穴位定位系統(tǒng)實現(xiàn)穴位預測功能,從機為位置控制系統(tǒng)實現(xiàn)穴位實現(xiàn)功能,。系統(tǒng)的整體硬件結(jié)構(gòu)如圖5所示,。
2.1 穴位定位系統(tǒng)
這部分主要以可視聽為目的,按鍵采用的是4×4行列式的排列,,包括0~9數(shù)字鍵和確認取消鍵,。使用3.2寸TFT LCD液晶屏進行參數(shù)輸入和預測結(jié)果的顯示。按鍵輸入所需穴位坐標值,,此時在LCD可監(jiān)視輸入是否正確,,按下確認鍵后便可執(zhí)行編寫好的預測程序,并在液晶屏上顯示輸出的穴位坐標值同時通過WiFi向位置控制系統(tǒng)發(fā)送坐標值,。
2.2 位置控制系統(tǒng)
這部分是控制操作為主,,當WiFi連接成功后會有語音提示然后啟動電機,電機控制模塊有4個直線步進電機,,其中分別對應了背部3條主要經(jīng)絡督脈和兩條足太陽膀胱經(jīng),。穴位定位系統(tǒng)發(fā)出相應的穴位位置后,電機帶動裝置移動到對應位置,,移動結(jié)束LED指示燈亮起提醒使用者操作已完成,,如果控制系統(tǒng)接收到的位置信息有誤,蜂鳴器會發(fā)出三聲聲警報,。最后操作無誤語音會播報相應的穴位相關信息,,便于使用者了解穴位的相關知識和治療功效。
3 PSO-BP算法簡化軟件設計
整個算法體系非常龐大,,而且數(shù)據(jù)的處理形式都是以浮點數(shù)進行的,,單片機的計算能力有限,所以考慮將算法簡化后移植進穴位定位系統(tǒng)的主芯片中,。思路是首先利用MATLAB訓練出神經(jīng)網(wǎng)絡的最佳權值和閾值矩陣,,然后將神經(jīng)網(wǎng)絡導出移植到ARM中。對于定點CPU來說必須要按照IEEE-754標準算法來完成運算,,會耗費大量的時間,。系統(tǒng)使用的定位芯片STM32F407I屬于Cortex-M4F架構(gòu),帶有32位單精度硬件FPU,,支持浮點指令集,,相對于Cortex-M0和Cortex-M3等,高出數(shù)十倍甚至上百倍的運算性能,。
神經(jīng)網(wǎng)絡算法主要分為兩個階段:第一為學習階段,,這個階段的任務就是通過反向誤差傳播調(diào)節(jié)最適權值和閾值,PSO算法主要就是優(yōu)化這個過程,尋找到最優(yōu)的初始權值及閾值給網(wǎng)絡,;第二為應用階段,,這一階段就是使用達到要求的權值及閾值來解決實際的問題。第一階段需要做大量的循環(huán)并且PSO算法的加入使這一過程的計算量更大,,所以采取將第二階段用C語言輸出融合進ARM芯片中的方案,。
利用MATLAB搭建神經(jīng)網(wǎng)絡學習框架對這一過程進行在線訓練,提取出輸入層及隱含層的權值及閾值,,將這些訓練好的參數(shù)以浮點數(shù)數(shù)組的形式存入ARM中,。接下來就是在ARM中應用神經(jīng)網(wǎng)絡算法對人體穴位位置進行預測,這一部分是將數(shù)據(jù)輸入給一個已知結(jié)構(gòu)的神經(jīng)網(wǎng)絡,,然后對網(wǎng)絡的前向過程進行求解,。
簡化后過程包含歸一化處理、神經(jīng)元乘加運算和傳遞函數(shù)計算,。歸一化處理是將輸入數(shù)據(jù)的值限制在[0,,1]之間,這樣統(tǒng)一標準會提高數(shù)據(jù)的精確性,。系統(tǒng)采用的方法是離差標準化,,對原始數(shù)據(jù)進行線性變換,轉(zhuǎn)換函數(shù)為:
其中Xmax為樣本數(shù)據(jù)的最大值,,Xmin為樣本數(shù)據(jù)的最小值,。接下來神經(jīng)元的加乘過程如圖6所示。
所以加乘運算的公式為:
這個公式涉及的兩個關鍵參數(shù)權值Wkn和偏置bk,,在ARM中轉(zhuǎn)換成float可以精確到小數(shù)點后7位,。
傳遞函數(shù)的選擇是非線性雙曲正切S型函數(shù)tanh,在STM32F4的函數(shù)庫內(nèi)沒有這個雙曲正切函數(shù),,所以要采用泰勒展開的形式化簡,。tanh的公式為:
將e2x展開結(jié)果帶入式(6)中,精度可達到小數(shù)點后4位,。
STM32F4采用硬件開啟FPU的方式,,首先將協(xié)處理器控制寄存器(CPACR)的第20~23設為1,然后在編譯器Code Generation中設置Use FPU開啟FPU的硬件使能,。將上述3個部分轉(zhuǎn)換成3個C語言程序子程序,,然后在主程序中依次調(diào)用即可達到實時輸出預測結(jié)果的目的。整個系統(tǒng)的軟件設計如圖7所示,。
4 硬件測試與結(jié)果分析
將算法簡化程序?qū)戇MSTM32F4中,,向定位系統(tǒng)輸入一組大柕穴的坐標(X軸:24 mm,Y軸:24 mm)然后在LCD液晶屏上記錄下預測結(jié)果,,同樣采用相對誤差作為衡量指標,,如表2所示,。
從表2中可以看出預測的絕對誤差沒有超過15 mm,但是相對于MATLAB給出的預測結(jié)果(表1)準確性下降了,。原因是從MATLAB中導出參數(shù)以浮點數(shù)形式存入ARM時會影響精度,,而且對于傳遞函數(shù)的泰勒展開時也會犧牲掉一些精度,這些損失疊加后會對最后位置輸出的準確性造成影響,。
5 結(jié)束語
本文設計了基于ARM和PSO-BP的人體穴位定位系統(tǒng),該系統(tǒng)可以根據(jù)輸入大柕穴的位置后預測出命門,、脾俞,、膈關的穴位坐標。因為BP神經(jīng)網(wǎng)絡容易陷入局部最優(yōu),,所以加入了PSO算法對其進行優(yōu)化處理,,然后在STM32F407I中嵌入PSO-BP簡化算法軟件,可以進行實時穴位坐標預測,。實驗表明該系統(tǒng)可以比較好地預測出穴位位置,,然后控制電機移動到相應位置,再進行微調(diào),,完成對穴位定位,。
參考文獻
[1] 馬哲文,于豪光.基于視覺定位的按摩機器人穴位跟蹤系統(tǒng)[J].機器人技術與應用,,2010(6):33-35.
[2] 林雪華.光學定位法人體經(jīng)絡可視化中提高精度方法的研究[D].福州:福州大學,,2014.
[3] 張秋云,張營,,李臣.遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡在中醫(yī)按摩機器人中的應用[J].應用科技,,2017,44(2):73-77.
[4] 徐順,,盧文科,,左鋒.基于PSO-BP神經(jīng)網(wǎng)絡的光纖壓力傳感器溫度補償研究[J].儀表技術與傳感器,2016(10):1-5,,9.
[5] 李銳,,熊杰.基于BP神經(jīng)網(wǎng)絡的原油持水率檢測儀[J].儀表技術與傳感器,2017(10):29-32.
[6] 趙延軍,,程守光,,高承彬,等.基于BPNN的固相質(zhì)量流量軟測量方法[J].儀表技術與傳感器,,2014(7):103-105.
[7] 黃家才,,李宏勝,滕福林,,等.BP網(wǎng)絡在阻抗式原油含水率測量儀中的應用[J].儀表技術與傳感器,,2011(12):24-26.
作者信息:
楊向萍,,吳玉丹
(東華大學 機械工程學院,上海201600)