陈旭鸿, 李 笑*,, 李亚鹏, 伍宗鹏, 邵爱祥
(广东工业大学 机电工程学院,广州 510006,E-mail: lixiao@gdut.edu.cn)
神经源性膀胱是一种由于神经系统病变导致膀胱或尿道出现储尿和/或排尿功能障碍,进而产生一系列下尿路症状及并发症的疾病总称[1],目前临床上尚无有效的治疗方法。针对神经源性膀胱常用的应对方式是间歇性导尿,但是导尿的时间点没有可靠的理论指导,从而导致膀胱高压或者进行不必要的导尿,这给患者带来极大的痛苦并且还可能造成患者发生泌尿系感染[2-3]。而利用膀胱尿液容量(或压力)监测系统让患者了解膀胱尿容量阈值,进而通过体外腹部施压或利用植入式人工逼尿肌系统驱动膀胱进行适时排尿,可成为应对神经源性膀胱的有效方式,对提高患者的生存质量有着重要的现实意义。
膀胱尿液容量(或压力)监测常采取微创监测方式,通过向体内植入传感器,再结合无线信号通讯等技术来实现对膀胱容量(或压力)的监测,具有便于携带和可持续监测的优点。从上世纪70年代开始,许多国内外学者就开始对植入式膀胱尿液容量(或压力)监测系统进行研究[4-7]。Coosemans等人[8]设计一种胶囊状压力传感模块,通过体外三个无线电能发射线圈对压力传感模块进行多角度供能以实现膀胱压力信号采集,但该传感器模块体积偏大,植入膀胱内将产生与生物组织相容性问题。Majerus等人[9]使用电池给植入膀胱内的压力传感器模块供电,利用微波经RF天线给体内电池充电,可实现膀胱压连续监测,但植入模块会对膀胱内壁造成损伤。熊慧等人[10]设计一种长寿命膀胱压力检测系统,将压力传感器植入膀胱内壁,利用体外无线供能保证体内电路稳定运行,但压力传感器容易因组织排异性和膀胱反复舒张而脱落。张南等人[11]设计一种基于分布压力检测的膀胱尿液容量监测系统,将柔性压力传感器安装在支撑膀胱的支架内壁底面间接测量膀胱压力,通过BP神经网络预测模型将膀胱压力转换为膀胱尿液容量,但柔性压力传感器精度较低,预测结果与实际尿液容量偏差较大。唐子然等人[12]对膀胱支架进行了改进,将柔性压力传感器贴附在膀胱支架内壁的侧曲面上,利用区间划分和聚类算法建立尿液容量预测模型,但安装在侧曲面的柔性压力传感器易与内壁脱离,且预测精度受限于预测模型的区间划分数。
针对植入式膀胱尿液容量监测系统存在损伤膀胱组织、传感器易脱落及尿液容量预测模型精度低等问题,本文设计了基于多点位分布式力检测的植入式膀胱尿液容量监测系统,该系统不损伤膀胱组织,微型力传感器安装牢固且不易脱落,并提出了一种基于SVM-RBFNN的变姿态尿液容量预测模型,采取支持向量机(SVM)进行姿态识别,利用径向基函数神经网络(RBFNN)进行尿液容量预测。模拟实验和测试证明了该系统可稳定运行,变姿态尿液容量预测模型可有效提高预测模型的精度。
本文设计的膀胱尿液容量监测系统由体内装置和体外装置两部分组成,如图1所示。体内装置包括微型力传感器、信号放大器、微处理器、无线通讯发射模块和无线供电接收模块。体外装置包括无线通讯接收模块、上位机和无线供电发射模块。
系统基于多点位分布式力检测原理测量膀胱压力信号,如图2所示。从人体正面视角看,膀胱支架固定在耻骨上,内壁布置有若干个点位,侧面的点位在同一水平面上且等间隔分布,底面中心布置一个点位;微型力传感器安装在点位上。假设膀胱与力传导装置贴合,当膀胱内有尿液时,尿液所具有的静液压力就会作用在力传导装置上,力传导装置将自身所受静液压力以力的形式传递到微型力传感器上。此时,微型力传感器可间接测得膀胱压力信号。
▲图2 膀胱压力信号测量原理示意图
系统工作原理为:微型力传感器采集膀胱压力信号;信号放大器对压力信号进行放大;微处理器对放大后的压力信号进行A/D采样并将采样数据发送到无线通讯发射模块;无线通讯接收模块接收无线通讯发射模块传输的采样数据;上位机对采样数据进行读取、根据变姿态尿液容量预测模型进行处理得到尿液容量、显示和存储处理结果;无线供电发射模块和无线供电接收模块为体内装置供电以保证系统正常运行。
基于SVM-RBFNN的变姿态尿液容量预测模型包含SVM变姿态识别模型和RBFNN尿液容量预测模型两个子模型。
设采集P种姿态下的样本数据,并分别设置标签为S(S=1,2,…,P),记P种姿态所对应的RBFNN尿液容量预测模型分别为RM-K(K=1,2,...,P),则基于SVM-RBFNN的变姿态尿液容量预测模型计算尿液容量的流程如图3所示。
▲图3 尿液容量计算流程图
当膀胱内尿液容量一定时,微型力传感器获取的压力信号会因人体姿态的改变而发生变化,若采用单一姿态的尿液容量预测模型,预测结果将发生较大偏差。因此,预测尿液容量需要不同人体姿态的尿液容量预测模型。但人体姿态只发生微小变化时,压力信号变化微弱或没有变化,此时就不需要改变尿液容量预测模型。所以只需建立几种姿态下对应的尿液容量预测模型,便可实现一定范围内任意姿态的尿液容量预测。因此,在进行尿液容量预测之前,需要使用变姿态识别模型进行姿态识别。本文采取支持向量机(SVM)来实现不同姿态的识别[13]。SVM基本原理为构建一个最优超平面,该超平面可以使距离超平面最近的两类线性可分的样本之间的距离最大化。
设有两种不同姿态的输入样本集{(X1,Y1),(X2,Y2),…(Xi,Yi),…,(Xn,Yn)},Xi为输入向量,Yi为姿态分类标签,则分类超平面方程为:
WTX+b=0
(1)
式中:X为样本集输入向量;W为权值向量;b为偏置。
(2)
利用拉格朗日乘子法进行求解[14],可得到二姿态识别决策函数为:
(3)
式(3)决策函数只适用于两种姿态的输入样本是线性可分的情形,而不同姿态的膀胱压力信号通常具有非线性可分的特点,所以需要将输入样本映射到高维空间使其线性可分。设映射函数为Φ(X),则可得到任意二姿态识别决策函数为:
(4)
式中:K(Xi,X)=(Φ(Xi),Φ(X))称为内积核函数,常用高斯核函数。
对于多姿态识别问题,可将问题转化成多个二姿态识别问题求解,常采用的方法为“一对多”(One-Against-Rest,OAR)[15]和“一对一”OAO(One-Against-One)[16],前者适用于样本类型多的情形,后者反之。而监测系统只需要识别几种姿态就可以满足应用要求。因此,本文采用“一对一”方法来建立SVM变姿态识别模型。
本文通过膀胱压力信号来计算尿液容量,而膀胱压力信号与尿液容量之间往往呈现出复杂的非线性关系,导致一般的非线性拟合方法难以实现逼近。而RBFNN可以通过使用径向基函数进行内插实现函数逼近,重建输入和输出之间的映射关系,表现出强大的非线性拟合能力,适用于构建任意一种姿态下的尿液容量预测模型。因此,本文选用RBFNN来构建尿液容量预测模型并据此对尿液容量进行预测。
RBFNN是一个包括输入层、隐含层和输出层的三层前馈神经网络[17]。而建立一个RBFNN需确定隐含层节点数量、Gauss函数的中心和宽度以及隐含层到输出层的权值等参数。在应用中,RBFNN隐含层节点数通常由测试来确定。Gauss函数的中心常采用聚类的方法得到。本文采用自组织映射(Self-Organizing Map,简称SOM)网络作为获取Gauss函数中心的聚类算法。SOM网络包括输入层和竞争层。竞争层神经元的排列为一维线阵,节点数等于RBFNN的隐含层节点数。对SOM网络进行训练后,网络权值即为Gauss函数的中心。因此,RBFNN尿液容量预测模型是一个以RBFNN为主体,以SOM网络为聚类层的神经网络,其结构如图4所示。
▲图4 RBFNN尿液容量预测模型结构图
设有M个训练样本,输入向量为Xt=(x1,x2,…,xn)T,t=1,2,…,M,隐含层节点数为N,激活函数为Gauss函数,其表达式为:
(5)
式中:ci和δi分别为第i个节点Gauss函数的中心和宽度。
Gauss函数的中心由SOM网络得到,宽度根据各中心之间的距离确定,计算公式如下:
(6)
式中:λ为重叠系数,常取1~1.2。
于是隐含层第i个节点的输出为:
oi=φ(Xt,ci)(i=1,2,…,N)
(7)
因为网络输出为尿液容量值,所以输出层的节点数为1,激活函数选用线性激活函数[18],输出层到隐含层的权值设为W=(w1,w2,…,wN)T,则输出层的实际输出为:
(8)
本文采用伪逆法直接计算权值,公式如下:
(9)
(10)
(11)
为验证监测系统的可行性和预测模型的有效性,根据监测系统组成原理,进行实验方案设计。
微型力传感器选用HZC-MH1型力传感器,其精度为0.5%,量程为5 kg,形状尺寸如图5所示(单位:mm)。
▲图5 微型力传感器形状尺寸图
▲图6 微型力传感器安装(a)与分布 (b)示意图
根据膀胱压力信号测量原理和人体膀胱生理结构,本文设计了一种圆形膀胱支架和力传导装置,卡片与力传导装置紧固连接。微型力传感器安装示意图如图6(a)所示,设人体侧倾的角度为θ,通过调节角度θ可以模拟人体不同姿态。传感器分布如图6(b)所示,在膀胱支架侧面以90°等间隔布置3个点位,依次记1号、2号、3号和4号传感器获取的压力信号为PreU1、 PreU2、PreU3和PreU4。
本文拟得到人体倾斜0~45°范围内任意姿态的膀胱尿液容量预测模型。假设膀胱与膀胱支架和力传导装置完全贴合,忽略膀胱自重以及人体姿态发生改变时膀胱产生的变形和移动,人体初始姿态倾斜角度为θ1,尿液容量为V,密度为ρ,重力加速度为g。则人体姿态倾斜角度变化Δθ时,压力信号PreU2和PreU4变化绝对值之和ΔF为:
ΔF=ρgV[sin (θ1+Δθ)-sin(θ1)]
(12)
取密度ρ=1×103kg/m3,重力加速度g=9.8 m/s2。考虑可以使ΔF达最大的情况。当Δθ一定时,则θ1= 0°。正常成人在尿液容量达(250~450)ml时会引起排尿活动[19],所以取V=450 ml。在θ1= 0°和V=450 ml的条件下,按照压力信号PreU2和PreU4平均变化值ΔF/2大于0.5 N且在0~ 45°范围内等间隔选取姿态点的规则选取姿态代表,根据式(12)计算可得Δθ= 15°。所以本文取人体直立姿态(θ=0°)和侧倾15°、30°以及45°共4种姿态来代表0~45°范围内任意姿态,分别记为a、b、c和d。
本文所选微型力传感器的输出信号为毫伏级电压信号,所以需要对输出信号进行放大。本文选用AD620信号放大模块来放大输出信号,放大电路如图7所示,RG为可调节增益电阻,增益计算公式为:
(13)
微处理器选用STM32F103ZET6芯片。STM32F103ZET6芯片拥有12位ADC、16个外部ADC通道和3个USART接口,可实现多通道A/D采集并将采集到的数据通过串口通讯发送到无线通讯发射模块。无线通讯发射模块和无线通讯接收模块选用载有CC2530芯片的ZigBee无线通讯模块。无线供电发射模块和无线供电接收模块基于磁耦合谐振原理向体内装置供电,供电电压为5 V。
▲图7 传感器信号放大电路图
上位机用于读取、处理、显示和存储数据。为降低随机误差的影响,数据读取采用均值法。设读取时间间隔为T,读取次数为n,读取数据依次记为U0+kT,k=0,1,2,…,n-1,共得到n个数据,再对这n个数据求均值,计算如下:
(14)
根据系统组成原理和实验方案,采用3D打印制造膀胱支架,使用气囊模拟膀胱,水模拟尿液,使用角度调节装置调整膀胱支架倾斜角度以模拟不同人体姿态,使用注射器向气囊注水模拟尿液容量增加过程,调节增益电阻RG使增益G=200,数据读时间间隔T设为100 ms,读取次数n设为100,搭建模拟实验平台,模拟实验平台组成原理图如图8所示。
使用模拟实验平台进行模拟实验,依次模拟人体姿态a、b、c和d。在每个姿态下,尿液容量从150增加至600 ml,每隔25 ml采集一次压力信号PreU1、PreU2、PreU3和PreU4,共得到76组样本数据。
▲图8 模拟实验平台组成原理图
根据SVM变姿态识别模型采用的多姿态识别方法,本文使用MATLAB调用LIBSVM库构建SVM变姿态识别模型[20-21]。根据任意二姿态识别决策函数求解时所引入的参数ν,SVM类型选用V-SVC,需设置的参数为n(ν),取值区间为(0,1);核函数选用高斯核函数,需设置的参数为核函数中gamma函数的参数g,取值范围为(0,+∞)。为了寻找最优的参数g和ν,采用离散化查找方法进行寻优。该方法是将参数在一定的取值范围内按照一定规则选取一定数量的离散化数值。本文按照以2为底数的等比取值规则对参数g和ν进行离散化数值选取,选取范围分别为(2-10,210)和(2-10,20),离散点选取数量分别为200个和100个。
然后将压力信号PreU1、PreU2、PreU3和PreU4作为SVM变姿态识别模型输入数据,设置人体姿态a、b、c和d的标签分别为1、2、3和4。选用76组样本数据中200 ml、300 ml、400 ml、500 ml对应的16组数据作为测试样本,其余60组数据作为训练样本。在训练之前,对所有输入数据进行归一化处理[22]。计算公式如下:
(15)
式中:x为输入;yg为归一化后的输出。
将训练样本和测试样本输入SVM变姿态识别模型,对模型进行训练和测试,寻找使得姿态识别正确率最高的参数g和ν,寻优等高线图如图9所示,随着参数g和ν的变化,模型识别预测正确率呈现出收敛趋势,且收敛于最高值93.75%。本文取参数g和ν的值分别为56和0.19,在该参数下,使用SVM变姿态识别模型进行预测,预测结果如图10所示。
将单个姿态下的19个样本分为训练样本和测试样本,测试样本的选取方式同上,从而得到4个训练集和测试集。首先对所有样本进行数据预处理,将压力信号PreU2、PreU3和PreU4做均值处理得到PreUM,将PreUM与PreU1作为网络输入,将尿液容量值作为目标输出,再使用式(15)对网络输入和目标输出进行归一化处理。然后将隐含层节点数从2~15逐步增加并训练网络,根据网络训练的均方误差E来确定网络的隐含层节点数,均方误差E的计算公式如下:
▲图9 参数g和ν寻优等高线图
▲图10 各姿态测试样本点实际分类和预测结果
(16)
为了避免神经网络产生过拟合,取E初次小于0.000 1时的节点数作为网络隐含层节点数。
本文使用MATLAB调用selforgmap函数创建SOM网络并以此为聚类层,设置SOM网络训练次数为1 000次。然后通过对姿态a、b、c和d对应的RBFNN尿液容量预测模型RM-K(K=1,2,3,4)进行训练,得到4个模型的隐含层节点数与均方误差的关系,结果如图11所示,模型RM-K(K=1,2,3,4)隐含层节点数取值依次为11、10、10和10。
使用确定完成的隐含层节点数再次对4个模型进行训练。训练结束之后,对4个测试集的测试样本进行预测,预测结果如图12所示。
根据预测结果计算预测平均相对误差和平均精度,如表1所示,预测最大绝对误差的绝对值为10 ml,平均精度达96%以上。
表1 预测结果的平均相对误差和平均精度
BP神经网络是一种应用广泛的前馈神经网络。在应用中,单隐层的BP神经网络最为普遍,其隐含层节点数常采用试凑法确定。设隐含层节点数为m,输入层节点数n,输出层节点数为l,常用试凑公式为:
▲图11 隐含层节点数与训练误差关系
▲图12 各姿态测试样本点预测值与实际值对比
(17)
式中:α为1~10的常数。
本文中输入层节点数为2,输出层节点数为1,则隐含层节点数取值为2~11的整数。使用MATLAB搭建一个单隐层BP神经网络尿液容量预测模型,隐含层节点传递函数为tansig,输出层节点传递函数为purelin,网络训练函数为traingdx,最大训练次数为1 000次,训练目标为0.000 01。使用3.4节的训练集对该网络进行训练,根据最小训练误差,得到姿态a、b、c和d对应的BP神经网络尿液容量预测模型隐含层节点数,依次为8、10、6和4。然后进行尿液容量预测,得到预测结果。将预测结果与RBFNN尿液容量预测模型的结果进行对比,如表2所示。据结果可知,RBFNN尿液容量预测模型最大误差绝对值和平均精度均优于BP神经网络尿液容量预测模型。
表2 RBFNN和BP神经网络尿液容量预测模型预测结果对比
上述结果表明,在尿液容量处于(150~600)ml范围内时,基于SVM-RBFNN的变姿态尿液容量预测模型可以实现高达93.75%准确率的姿态识别,姿态识别正确的情况下尿液容量预测平均精度可达96%以上且高于BP神经网络尿液容量预测模型,可满足人体膀胱尿液容量达250 ml以上时实现尿意感知重建的应用要求。
本文设计了一种基于多点位分布式力检测的植入式膀胱尿液容量监测系统,提出了一种基于SVM-RBFNN的变姿态尿液容量预测模型,搭建了模拟实验平台,模拟了人体直立姿态和侧倾15°、30°以及45°共4种姿态,通过模拟实验采集了4种姿态下尿液容量位于150 ml~600 ml范围内的压力数据,对SVM变姿态识别模型和RBFNN尿液容量预测模型进行了测试,对比了RBFNN和BP神经网络尿液容量预测模型的预测结果。实验和测试结果表明:
(1)膀胱尿液容量监测系统可稳定运行,能实现膀胱压力信号采集,安装膀胱支架上的微型力传感器固定牢靠,不易脱落。
(2)SVM变姿态识别模型的预测正确率达93.75%;RBFNN尿液容量预测模型的预测误差在10 ml以内,预测平均精度在96%以上,最大误差绝对值和平均精度均优于BP神经网络尿液容量预测模型。
(3)基于SVM-RBFNN的变姿态尿液容量预测模型满足应用要求,具有可行性。可为开发设计新型的膀胱尿液容量监测系统提供技术指导,为提高膀胱尿液容量监测精度提供方法参考。进一步研究将对膀胱尿液容量监测系统进行优化,集成体内装置,减小植入装置体积。