本发明属于计算机视觉,模式识别与医学工程领域,涉及一种基于帧预测网络的动态舌颤检测方法。
背景技术:
随着人民生活水平的提高与技术的发展,大数据分析与人工智能受到了广泛关注,而医学与人工智能相结合是一项具有重要意义的方向。医学可以为人们提供有力的帮助,而人工智能也可以为医学数据提供分析任务。两者相互交融非常具有前景,诸多企业与机构在这一方向进行了多项投入。在这其中,机器学习是将人工智能变为现实的重要方法,运用机器学习的算法,将收集到的数据加以分析与整理,并建立对应的模型,从而实现自动的分析过程。如果我们可以构建一些能够辅助医生进行病情诊断的系统,那么在极大方便医生诊断的同时,也可以一定程度上避免疾病的漏检情况的发生。
舌诊是中医四诊的主要内容之一,其中舌颤是指伸舌时舌体颤动不定,不能控制的称舌颤。“舌战动者,病在脾”,通过观察舌头颤动的异样程度,我们可以从中得到一些有用的信息,为医生提供更多的数据参考。然而在这一领域也面临着很多困难,舌颤属于一种动态信息,如何对这种动态特征更优的建立模型是一个亟待解决的问题。为此,我们设计了本智能舌颤检测方法,意图帮助患者与医生,为更快更好的为病人确诊提供有力的客观数据。
技术实现要素:
目前此领域的相关工作还显得十分空白,为此本发明提出了一个高精度的基于帧预测网络(p-net)的动态舌颤检测算法。在u-net网络中加入context与convgru结构,这种结构不仅可以加强网络对输入数据的多尺度建模的特点,同时通过convgru模块又能对输入数据进行时间上的建模。本发明提出的p-net网络对视频这类具有强时空特点的数据具有很好的建模作用,可以较为优秀的分辨出舌头颤动与否。
本发明提供一种高精度基于p-net网络的动态舌颤检测算法,总体思路是对正常的动态舌头预处理后,输入到设计的网络中进行训练,期望建立一个能够较好地预测正常舌头下一帧状态的模型;在测试时,由于舌颤舌头与正常舌头的运动差异,训练好的模型无法正确预测到舌颤舌头的状态,因此通过我们设计的st-pscore评分机制,当出现颤动舌头时,会自动地检测出来。方法主要包括以下特征:
(1)基于舌头颤动信息的光流提取预处理
将原始采集到的舌头动态数据逐个提取为单独的图片后,将相邻的每两幅图片输入到在大规模数据集上预训练好的光流网络中提取光流信息,从而减少静态信息的干扰,更好地获得舌头的颤动信息。
(2)新设计的p-net网络
具体提出的网络搭建结构如下:
p-net由三个部分组成:编码阶段,多尺度特征与时间信息融合阶段,解码阶段。编码阶段的特征在于通过三个“2层卷积层,1层下采样层”的结构设计完成对输入舌头动态信息的初步编码;多尺度特征与时间信息融合阶段的特征在于通过联合设计的“context模块与convgru模块”,能够将上一阶段提取到的特征进行时空融合,为下一阶段提供更佳的特征表达;解码阶段的特征在于通过三个“2层卷积层,1层上采样层”的结构设计实现对底层特征的恢复,从而为检测舌颤状态做准备。综上所述,我们设计的p-net是一个能够对多尺度特征与时间特征进行编码并将两者进行融合的网络结构。
其中context模块由四条支路组成,三条支路由3个卷积层组成,一条支路由2个卷积层组成;前后两个卷积层的作用是升维与降维,中间的卷积层通过采用不同的atrousrate设计,达到多尺度特征提取的目的;convgru模块由两个convgru-cell组成,通过输入连续t个特征图,并更新h1,h2两个状态信息实现对输入的舌头动态信息提取时间特征,提取的特征是最后一个输出。
(3)使用p-net网络实现舌头运动状态的预测,并对舌颤进行检测的过程
训练时的特征:
我们输入到p-net的形式是连续的t个光流图,并且对每一个光流图单独进行编码,最终预测得到第t 1个光流图;以实际的第t 1个光流图作为groundtruth,将groundtruth与预测得到的图片输入到多种损失函数中进行网络的优化,并使用了生成对抗网络模型,将预测的图像与对应的groundtruth同时输入到判别器中进行联合判别,使得判别模型无法辨别输入的是预测的图像还是原始的groundtruth,从而进一步优化预测过程,提高检测结果。
预测时的特征:
测试集同样提取光流,并取连续的t帧分别输入到已经训练好的网络中,最终得到每一帧的预测图片。
检测舌颤时的特征:
将预测图片与原始图片输入到我们设计的st-pscore评分框架中,此评价方法联合了时间与空间上的滑窗操作,进一步融合时空内容,得到最终的颤动分数,通过比较颤动分数与所设阈值之间的关系(这里阈值取0.432),来判定该输入的动态数据中的舌头是否属于颤动状态。
有益效果
1、本发明利用p-net网络实现了基于预测的动态舌颤检测
据我们所知,这是现有的第一项将深度学习技术与动态舌颤检测相结合的发明。本发明提出利用p-net网络实现动态信息的预测,进一步实现了对舌头颤动与否的判断。
2、本发明对输入的动态数据通过预训练网络提取光流
由于舌颤的动态性质,需要分析不同帧之间的时间信息,为此我们首先通过提取光流的方法得到舌头之间的颤动信息,其亦可以提取出关键的重要的时间特征进行处理,也可以减少静态信息对结果的干扰,两方面相结合从而提高算法的准确性。
3、本发明提出了一种p-net网络
普通的u-net网络的特点在于其在上采样的过程中,每上采样一次就和特征提取部分(即下采样过程)对应的相同尺度的输出进行融合,故u-net网络在空间上对输入图像有很好的建模效果,然而其考虑的特征尺寸是单一的,并且没有加入时间信息的考量,因此对于视频这类输入数据具有强时间相关性的问题,必须通过时间模块的设定才可以获得好的效果,本发明提出的p-net网络,不仅添加了context这种能够提取多尺度特征的模块,同时加入了convgru层来加强对输入数据时间上特征的提取,更适合处理该类问题。
4、本发明提出基于时空滑窗操作的颤动分数(st-pscore)计算方法
为进一步提高准确率,本发明在获得每一帧对应的颤动分数后,又进行了时空滑窗操作,不仅在时间上对前后几帧进行了加权处理,同时也对每一帧上的小区域图像执行了各区域颤动分数平均值处理。两者结合可以进一步建立时空上的联系,得到更优的检测效果。
附图说明:
图1为本发明提取光流图。
图2为本发明的p-net网络图。
图3为本发明中的context结构图。
图4为本发明中的convgru结构图。
图5为本发明利用p-net实现舌颤检测的训练流程。
图6为本发明的测试流程图。
具体实施方法
下面结合附图对本发明的具体实施方法进行详细说明。
1、预处理
将原始采集到的舌头动态数据逐个提取为单独的图片后,将相邻的每两幅图片输入到在大规模数据集上预训练好的光流网络中提取光流信息,具体网络结构如图1所示。
2、构建p-net网络
如图2所示。本发明所构造的p-net网络的各层具体参数如下:
①c1、c2两卷积层:输入尺寸为256×256,输入通道数为3,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函leaklyrelu,输出尺寸为256×256,输出通道数为64。
②p1下采样层:输入尺寸为256×256,输入通道数为64,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为128×128。
③c3、c4两卷积层:输入尺寸为128×128,输入通道数为64,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为128×128,输出通道数为128。
④p2下采样层:输入尺寸为128×128,输入通道数为128,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为64×64,
⑤c5、c6两卷积层:输入尺寸为64×64,输入通道数为128,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为64×64,输出通道数为256。
⑥p3下采样层:输入尺寸为64×64,输入通道数为256,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为32×32。
⑦ct1context层:输入尺寸为32×32,输入通道数为256,卷积核为3×3,通过四个通道相加,输出尺寸为32×32,输出通道数为512。
⑧l1、l2两convgru层:输入尺寸为32×32,输入通道数为512,卷积核为3×3,输出尺寸为32×32,输出通道数为512。
⑨u1反卷积层:输入尺寸为32×32,输入通道数为512,卷积核为2×2,步长为2,边缘填充方式为‘same’,输出尺寸为64×64。
⑩将u1反卷积后的结果与对应尺寸的c6卷积的结果进行拼接,拼接维度为3。
3、context构建
如图3所示。本发明所构造的context结构的各层具体参数如下:
①l1支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,5,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。
②l2支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,3,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。
③l3支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,1,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。
④l4支路:由两种卷积结构组成,输入尺寸为32×32,输入通道数为256,两种卷积核分别为1×1,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。
4、convgru构建
如图4所示。本发明所构造的convgru结构的具体设置如下:
此模块的输入为context模块输出的t个特征图,模块由两个convgru-cell组成,每一层卷积输入尺寸为32×32,输入通道数为512,卷积核尺寸为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。选取最后一个输出作为下一阶段的输入特征。
5、舌颤检测的训练流程
如图5所示,本发明利用p-net网络实现基于预测的动态舌颤检测算法具体训练过程如下:
①将训练集中的长视频切分成单一的帧图像,相邻两帧输入至光流网络提取光流。
②将四帧光流图像依次输入到p-net网络中,首先对四帧图像进行编码,通过网络中的context模块后得到四个特征图,接着将这四个特征图作为网络中convgru模块的输入,之后得到包括之前四帧信息的一个特征图,对该特征图进行网络中全部解码操作,得到最终的输出预测光流图像。
③比较预测光流与真值光流之间的差异进行网络优化。本发明采用强度损失函数、梯度损失函数,msssim结构损失函数来比较预测光流与真值光流之间的差异,并在训练过程中通过adam算法最小化全局损失函数对网络参数进行调整。具体计算公式如下:(这里的i为真值光流,i*为预测光流)
lgrad(i,i*)=|||gd(i)|-|gd(i*)|||1
lmsssim(i,i*)=|||msssim(i)|-|msssim(i*)|||1
④我们同时引入了生成对抗模型(gan),由判别器与生成器组成。将预测光流与原始光流输入到同一判别模型中(即判别器d),由判别模型进行特征提取并判断其输入为真值还是预测光流。将判别模型与p-net(作为生成器g)一同训练,目的是使判别模型无法分辨p-net预测得到的图像与原始真值图像是否一致,从而进一步提高网络的预测能力。判别模型由三层卷积层以及一个输出层组成。gan对应的训练过程损失函数计算公式如下:(这里的d即为判别器,g即为p-net生成器)
⑤综上所述,我们在训练p-net时的损失函数为:(在实验中λa设为2e-4,λs设为0.5,λg设为1,λi设为1)
在训练判别器时的损失函数为:(λd在实验中设为2e-5)
6、基于p-net舌颤检测算法的测试过程
如图6所示,本发明利用p-net网络实现基于预测的动态舌颤异常检测算法具体测试过程如下:
①将测试集中的长视频切分成单一的帧图像,相邻两帧输入到光流网络提取光流。
②对于测试光流帧,以第it帧为例,将it帧与it-1、it-2、it-3三帧组成的连续的四帧分别输入到训练好的p-net预测网络中,最终得到预测到的未来帧
③求得测试帧it的时空颤动分数(st-pscore)后,将该值与设置的阈值(threshold)进行比较。若st-pscore≥threshold,测试帧it为舌颤帧。若st-pscore<threshold,测试帧it为非舌颤帧。本发明取threshold=0.432。
④对所有提取到的光流帧重复步骤②③,将测试数据中所有的舌颤帧检测出来,输出各帧的颤动分数,实现实时动态舌颤检测。
1.基于p-net的动态舌颤检测算法,其特征在于:
(1)基于舌头颤动信息的光流提取预处理
将原始采集到的舌头动态数据逐个提取为单独的图片后,将相邻的每两幅图片输入到在大规模数据集上预训练好的光流网络中提取光流信息;
(2)设计p-net网络
具体提出的网络搭建结构如下:
p-net由三个部分组成:编码阶段,多尺度特征与时间信息融合阶段,解码阶段;编码阶段的特征在于通过三个“2层卷积层,1层下采样层”的结构设计完成对输入舌头动态信息的初步编码;多尺度特征与时间信息融合阶段的特征在于通过联合设计的“context模块与convgru模块”,能够将上一阶段提取到的特征进行时空融合,为下一阶段提供更佳的特征表达;解码阶段的特征在于通过三个“2层卷积层,1层上采样层”的结构设计实现对底层特征的恢复,从而为检测舌颤状态做准备;
其中context模块由四条支路组成,三条支路由3个卷积层组成,一条支路由2个卷积层组成;前后两个卷积层的作用是升维与降维,中间的卷积层通过采用不同的atrousrate设计,达到多尺度特征提取的目的;convgru模块由两个convgru-cell组成,通过输入连续t个特征图,并更新h1,h2两个状态信息实现对输入的舌头动态信息提取时间特征,提取的特征是其最后一个输出;
(3)使用p-net网络实现舌头运动状态的预测,并对舌颤进行检测训练时的特征:
输入到p-net的形式是连续的t个光流图,并且对每一个光流图单独进行编码,最终预测得到第t 1个光流图;以实际的第t 1个光流图作为groundtruth,将groundtruth与预测得到的图片输入到多种损失函数中进行网络的优化,并使用了生成对抗网络模型,将预测的图像与对应的groundtruth同时输入到判别器中进行联合判别,使得判别模型无法辨别输入的是预测的图像还是原始的groundtruth,从而进一步优化预测过程,提高检测结果;
预测时的特征:
测试集同样提取光流,并取连续的t帧分别输入到已经训练好的网络中,最终得到每一帧的预测图片;
检测舌颤时的特征:
将预测图片与原始图片输入到设计的st-pscore评分框架中,此评价方法联合了时间与空间上的滑窗操作,进一步融合时空内容,得到最终的颤动分数,通过比较颤动分数与所设阈值之间的关系来判定该输入的动态数据中的舌头是否属于颤动状态,如果大于等于阈值就视为属于颤动状态,阈值取0.432。
2.根据权利要求1所述的方法,其特征在于,p-net网络的各层具体参数如下:
①c1、c2两卷积层:输入尺寸为256×256,输入通道数为3,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函leaklyrelu,输出尺寸为256×256,输出通道数为64;
②p1下采样层:输入尺寸为256×256,输入通道数为64,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为128×128;
③c3、c4两卷积层:输入尺寸为128×128,输入通道数为64,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为128×128,输出通道数为128;
④p2下采样层:输入尺寸为128×128,输入通道数为128,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为64×64,
⑤c5、c6两卷积层:输入尺寸为64×64,输入通道数为128,卷积核为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为64×64,输出通道数为256;
⑥p3下采样层:输入尺寸为64×64,输入通道数为256,池化核为2×2,步长为1,边缘填充方式为‘same’,输出尺寸为32×32;
⑦ct1context层:输入尺寸为32×32,输入通道数为256,卷积核为3×3,通过四个通道相加,输出尺寸为32×32,输出通道数为512;
⑧l1、l2两convgru层:输入尺寸为32×32,输入通道数为512,卷积核为3×3,输出尺寸为32×32,输出通道数为512;
⑨u1反卷积层:输入尺寸为32×32,输入通道数为512,卷积核为2×2,步长为2,边缘填充方式为‘same’,输出尺寸为64×64;
⑩将u1反卷积后的结果与对应尺寸的c6卷积的结果进行拼接,拼接维度为3;
3.根据权利要求1所述的方法,其特征在于,context结构的各层具体参数如下:
①l1支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,5,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512;
②l2支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,3,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512;
③l3支路:由三种卷积结构组成,输入尺寸为32×32,输入通道数为256,三种卷积核分别为1×1,3×3,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,1,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512;
④l4支路:由两种卷积结构组成,输入尺寸为32×32,输入通道数为256,两种卷积核分别为1×1,1×1,步长为1,边缘填充方式为‘valid’,空洞卷积rate分别为1,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512。
4.根据权利要求1所述的方法,其特征在于,构造的convgru结构的具体设置如下:
此模块的输入为context模块输出的t个特征图,模块由两个convgru-cell组成,每一层卷积输入尺寸为32×32,输入通道数为512,卷积核尺寸为3×3,步长为1,边缘填充方式为‘valid’,激活函数为leaklyrelu,输出尺寸为32×32,输出通道数512;选取最后一个输出作为下一阶段的输入特征。
技术总结