《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于PSO-BP神經(jīng)網(wǎng)絡(luò)的人體穴位定位系統(tǒng)設(shè)計(jì)
基于PSO-BP神經(jīng)網(wǎng)絡(luò)的人體穴位定位系統(tǒng)設(shè)計(jì)
2018年電子技術(shù)應(yīng)用第9期
楊向萍,吳玉丹
東華大學(xué) 機(jī)械工程學(xué)院,上海201600
摘要: 穴位的位置是否找準(zhǔn)會直接影響治療效果,因此設(shè)計(jì)了一種基于粒子群算法優(yōu)化神經(jīng)網(wǎng)絡(luò)(PSO-BP)的穴位相對坐標(biāo)預(yù)測模型,然后與ARM結(jié)合構(gòu)成一個可以用于人體穴位定位的系統(tǒng)。首先采用PC進(jìn)行MATLAB仿真訓(xùn)練學(xué)習(xí),然后將最優(yōu)權(quán)值及閾值保存下來并簡化算法嵌入ARM內(nèi),將在線預(yù)測轉(zhuǎn)變?yōu)殡x線過程。實(shí)驗(yàn)結(jié)果表明:經(jīng)粒子群優(yōu)化過的BP神經(jīng)網(wǎng)絡(luò)有效地改善了局部極值缺陷,可應(yīng)用于定位端預(yù)測穴位的位置,并在LCD中顯示穴位相關(guān)信息,控制端收到位置數(shù)據(jù)后可執(zhí)行電機(jī)上的運(yùn)動操作。
中圖分類號: TN4
文獻(xiàn)標(biāo)識碼: 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.
Acupoint positioning system based on PSO-BP neural network
Yang Xiangping,Wu Yudan
College of Mechanical Engineering,Donghua University,Shanghai 201600,China
Abstract: The location of acupoints will directly affect the therapeutic effect, so we designed a prediction model of relative coordinates based on particle swarm optimization and neural network(PSO-BP), and then combined with ARM to form a system for locating human acupuncture points. Firstly, PC machine is used for MATLAB simulation training and learning. After that, the optimal weights and thresholds are saved, and the algorithm is embedded in ARM, and online prediction is transformed into offline process. The experimental results show that the BP neural network optimized by particle swarm optimization can effectively improve the local extreme defects. It can be applied to locate the location of the acupoints at the location end, and display the information of the points in LCD. After the control terminal receives the location data, it can perform the movement operation on the motor.
Key words : acupoint coordinates;location;particle swarm optimization;BP neural network;ARM

0 引言

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

    人工智能和仿生技術(shù)的發(fā)展,出現(xiàn)了很多基于人工智能的預(yù)測方法。為了提高中醫(yī)按摩機(jī)器人穴位尋找行為規(guī)劃的精度,山東建筑大學(xué)提出了一種基于遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的中醫(yī)按摩機(jī)器人穴位坐標(biāo)預(yù)測方法。結(jié)果表明,該方法對中醫(yī)按摩機(jī)器人尋找患者穴位坐標(biāo)具有較好的精度和預(yù)測準(zhǔn)確性[3]。由于遺傳算法的交叉變異部分會使整個收斂過程變慢,在實(shí)際應(yīng)用中,穩(wěn)定性可能會比較低。而粒子群算法過程比較簡單,所以采用粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法建立穩(wěn)定準(zhǔn)確的穴位坐標(biāo)預(yù)測模型[4],簡化學(xué)習(xí)過程后將過程移植進(jìn)ARM[5-6]。最后測試表明:優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)具有更快的收斂性和適應(yīng)性,還有比較高的預(yù)測精度和穩(wěn)定性。

    本文提出的整體系統(tǒng)設(shè)計(jì)方案是基于ARM和PSO-BP的人體穴位定位,該系統(tǒng)還具備穴位坐標(biāo)實(shí)時顯示及穴位信息播報的功能。由于整個算法的學(xué)習(xí)過程比較復(fù)雜,循環(huán)次數(shù)非常多,會拖慢整個系統(tǒng)的運(yùn)行速度,因此在PC上完成整個動態(tài)學(xué)習(xí)過程然后將最優(yōu)權(quán)值及閾值保存輸出,并將簡化后的算法嵌入ARM內(nèi),實(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)是信號前向傳遞,誤差反向傳播調(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ù)測出其他3個穴位的坐標(biāo)值。

qrs5-t1.gif

    系統(tǒng)設(shè)計(jì)的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)采用可以預(yù)測幾乎所有的非線性函數(shù)的三層拓?fù)浣Y(jié)構(gòu),輸入層神經(jīng)元為2,輸出層神經(jīng)元為6。對于隱含層(中間層)的神經(jīng)元數(shù)目的選取采用式(1)來確定[7]

    qrs5-gs1.gif

其中,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)練可以對權(quán)值和閾值的選取進(jìn)行優(yōu)化,而不是盲目地給定初值,而且優(yōu)化過的神經(jīng)網(wǎng)絡(luò)會防止神經(jīng)網(wǎng)絡(luò)陷入局部最優(yōu)并提高精度。因此PSO優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的核心是:BP網(wǎng)絡(luò)中的權(quán)值和閾值的集合是群體中的每個粒子的位置集合,其個數(shù)是粒子的維度。然后對神經(jīng)網(wǎng)絡(luò)進(jìn)行迭代優(yōu)化訓(xùn)練,網(wǎng)絡(luò)的輸出誤差作為算法的適應(yīng)度函數(shù)即式(2)。

    qrs5-gs2.gif

式中,S是學(xué)習(xí)訓(xùn)練樣本,Tk是期望輸出,Yk是實(shí)際輸出。整個算法流程如圖2所示。

qrs5-t2.gif

1.2 MATLAB仿真

    以人體的背部為例,穴位是有規(guī)律分布的,所以將大椎穴作為坐標(biāo)原點(diǎn)(0,0)建立坐標(biāo)系,然后選取大柕穴的相對坐標(biāo)作為輸入,目標(biāo)輸出為脾俞、膈關(guān)和命門的相對坐標(biāo)。仿真訓(xùn)練測量了70組不同測試者的穴位相對坐標(biāo),隨機(jī)選取其中的60組作為學(xué)習(xí)樣本,剩下的10組作為測試樣本訓(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í)過程。仿真結(jié)果如圖3所示,可發(fā)現(xiàn)均方誤差隨著訓(xùn)練的次數(shù)增加在逐漸變小,直到訓(xùn)練1 015次時可達(dá)到要求的誤差值。

qrs5-t3.gif

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

qrs5-t4.gif

    最后計(jì)算PSO-BP算法數(shù)據(jù)的預(yù)測值和實(shí)際值的絕對誤差,輸入一組大柕穴的坐標(biāo)(X軸:24 mm,Y軸:24 mm),如表1所示,絕對誤差沒有超過10 mm,可以看出神經(jīng)網(wǎng)絡(luò)對穴位位置的預(yù)測精度可以保證在10 mm以內(nèi),滿足定位要求。

qrs5-b1.gif

2 系統(tǒng)硬件設(shè)計(jì)

    系統(tǒng)采用雙機(jī)通信和獨(dú)立電源的方式來工作,主要分為兩部分:主機(jī)是穴位定位系統(tǒng)實(shí)現(xiàn)穴位預(yù)測功能,從機(jī)為位置控制系統(tǒng)實(shí)現(xiàn)穴位實(shí)現(xiàn)功能。系統(tǒng)的整體硬件結(jié)構(gòu)如圖5所示。

qrs5-t5.gif

2.1 穴位定位系統(tǒng)

    這部分主要以可視聽為目的,按鍵采用的是4×4行列式的排列,包括0~9數(shù)字鍵和確認(rèn)取消鍵。使用3.2寸TFT LCD液晶屏進(jìn)行參數(shù)輸入和預(yù)測結(jié)果的顯示。按鍵輸入所需穴位坐標(biāo)值,此時在LCD可監(jiān)視輸入是否正確,按下確認(rèn)鍵后便可執(zhí)行編寫好的預(yù)測程序,并在液晶屏上顯示輸出的穴位坐標(biāo)值同時通過WiFi向位置控制系統(tǒng)發(fā)送坐標(biāo)值。

2.2 位置控制系統(tǒng)

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

3 PSO-BP算法簡化軟件設(shè)計(jì)

    整個算法體系非常龐大,而且數(shù)據(jù)的處理形式都是以浮點(diǎn)數(shù)進(jìn)行的,單片機(jī)的計(jì)算能力有限,所以考慮將算法簡化后移植進(jìn)穴位定位系統(tǒng)的主芯片中。思路是首先利用MATLAB訓(xùn)練出神經(jīng)網(wǎng)絡(luò)的最佳權(quán)值和閾值矩陣,然后將神經(jīng)網(wǎng)絡(luò)導(dǎo)出移植到ARM中。對于定點(diǎn)CPU來說必須要按照IEEE-754標(biāo)準(zhǔn)算法來完成運(yùn)算,會耗費(fèi)大量的時間。系統(tǒng)使用的定位芯片STM32F407I屬于Cortex-M4F架構(gòu),帶有32位單精度硬件FPU,支持浮點(diǎn)指令集,相對于Cortex-M0和Cortex-M3等,高出數(shù)十倍甚至上百倍的運(yùn)算性能。

    神經(jīng)網(wǎng)絡(luò)算法主要分為兩個階段:第一為學(xué)習(xí)階段,這個階段的任務(wù)就是通過反向誤差傳播調(diào)節(jié)最適權(quán)值和閾值,PSO算法主要就是優(yōu)化這個過程,尋找到最優(yōu)的初始權(quán)值及閾值給網(wǎng)絡(luò);第二為應(yīng)用階段,這一階段就是使用達(dá)到要求的權(quán)值及閾值來解決實(shí)際的問題。第一階段需要做大量的循環(huán)并且PSO算法的加入使這一過程的計(jì)算量更大,所以采取將第二階段用C語言輸出融合進(jìn)ARM芯片中的方案。

    利用MATLAB搭建神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)框架對這一過程進(jìn)行在線訓(xùn)練,提取出輸入層及隱含層的權(quán)值及閾值,將這些訓(xùn)練好的參數(shù)以浮點(diǎn)數(shù)數(shù)組的形式存入ARM中。接下來就是在ARM中應(yīng)用神經(jīng)網(wǎng)絡(luò)算法對人體穴位位置進(jìn)行預(yù)測,這一部分是將數(shù)據(jù)輸入給一個已知結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),然后對網(wǎng)絡(luò)的前向過程進(jìn)行求解。

    簡化后過程包含歸一化處理、神經(jīng)元乘加運(yùn)算和傳遞函數(shù)計(jì)算。歸一化處理是將輸入數(shù)據(jù)的值限制在[0,1]之間,這樣統(tǒng)一標(biāo)準(zhǔn)會提高數(shù)據(jù)的精確性。系統(tǒng)采用的方法是離差標(biāo)準(zhǔn)化,對原始數(shù)據(jù)進(jìn)行線性變換,轉(zhuǎn)換函數(shù)為:

    qrs5-gs3.gif

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

qrs5-t6.gif

    所以加乘運(yùn)算的公式為:

    qrs5-gs4.gif

這個公式涉及的兩個關(guān)鍵參數(shù)權(quán)值Wkn和偏置bk,在ARM中轉(zhuǎn)換成float可以精確到小數(shù)點(diǎn)后7位。

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

qrs5-gs5-7.gif

    將e2x展開結(jié)果帶入式(6)中,精度可達(dá)到小數(shù)點(diǎn)后4位。

    STM32F4采用硬件開啟FPU的方式,首先將協(xié)處理器控制寄存器(CPACR)的第20~23設(shè)為1,然后在編譯器Code Generation中設(shè)置Use FPU開啟FPU的硬件使能。將上述3個部分轉(zhuǎn)換成3個C語言程序子程序,然后在主程序中依次調(diào)用即可達(dá)到實(shí)時輸出預(yù)測結(jié)果的目的。整個系統(tǒng)的軟件設(shè)計(jì)如圖7所示。

qrs5-t7.gif

4 硬件測試與結(jié)果分析

    將算法簡化程序?qū)戇M(jìn)STM32F4中,向定位系統(tǒng)輸入一組大柕穴的坐標(biāo)(X軸:24 mm,Y軸:24 mm)然后在LCD液晶屏上記錄下預(yù)測結(jié)果,同樣采用相對誤差作為衡量指標(biāo),如表2所示。

qrs5-b2.gif

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

5 結(jié)束語

    本文設(shè)計(jì)了基于ARM和PSO-BP的人體穴位定位系統(tǒng),該系統(tǒng)可以根據(jù)輸入大柕穴的位置后預(yù)測出命門、脾俞、膈關(guān)的穴位坐標(biāo)。因?yàn)锽P神經(jīng)網(wǎng)絡(luò)容易陷入局部最優(yōu),所以加入了PSO算法對其進(jìn)行優(yōu)化處理,然后在STM32F407I中嵌入PSO-BP簡化算法軟件,可以進(jìn)行實(shí)時穴位坐標(biāo)預(yù)測。實(shí)驗(yàn)表明該系統(tǒng)可以比較好地預(yù)測出穴位位置,然后控制電機(jī)移動到相應(yīng)位置,再進(jìn)行微調(diào),完成對穴位定位。

參考文獻(xiàn)

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

[2] 林雪華.光學(xué)定位法人體經(jīng)絡(luò)可視化中提高精度方法的研究[D].福州:福州大學(xué),2014.

[3] 張秋云,張營,李臣.遺傳算法優(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ò)的原油持水率檢測儀[J].儀表技術(shù)與傳感器,2017(10):29-32.

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

[7] 黃家才,李宏勝,滕福林,等.BP網(wǎng)絡(luò)在阻抗式原油含水率測量儀中的應(yīng)用[J].儀表技術(shù)與傳感器,2011(12):24-26.



作者信息:

楊向萍,吳玉丹

(東華大學(xué) 機(jī)械工程學(xué)院,上海201600)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。