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