一种基于深度学习的血管介入机器人自动手术方法
技术领域
本发明属于医疗机器人技术领域,特别是一种基于深度学习的血管介入手术机器人自动手术的方法,应用场景主要为智能化主从式医疗机器人领域。
背景技术
随着人工智能的快速发展,越来越多的智能机器人代替人类进入工业生产、驾驶、医疗等领域。目前在医疗手术机器人领域,使用频率最高、发展最快的便是血管介入手术机器人系统。血管手术机器人系统主要的工作该方式为:医生根据医学图像指示操作血管介入手术机器人系统的主端操作设备,主端操作器采集医生的操作指令,操作指令通过接口传输至中央处理器,中央处理器将其转变为数字信号并通过接口传输至从端手术操作设备上的步进电机中,步进电机接受到信号后带动从端手术设备根据医生的操作指令进行手术。但是,血管介入手术机器人进行手术作业时间长,医生需要长时间进行专注的手术操作容易产生疲劳感从而造成操作失误,而且主端操作器和从端操作器之间存在通讯延迟和操作误差。
发明内容
本发明的目的在于提供一种基于深度学习的血管介入机器人自动手术方法,它可以解决现有技术所面临的问题,辅助医生完成血管介入手术的操作,是一种操作简单、容易实现且能够实现血管介入手术机器人自动化操作的方法,有一定的可迁移性,是一种基于Alexnet深度学习网络模型实现的血管介入手术机器人自动化手术操作系统及方法,能够利用人工智能代替了医生进行血管介入机器人手术作业。
本发明的技术方案:一种基于深度学习的血管介入机器人自动手术方法,其特征在于它包括以下内容:
(1)对于应用血管介入手术机器人进行手术过程中的终端医学图像信息和医生操作数据采集;
(2)对于采集获得的数据进行处理应用Alexnet深度学习网络进行训练;
(3)将已经训练完成的网络模型应用在血管介入手术机器人的自动化手术进程中;
其中,步骤(2)中对于采集获得的数据进行处理应用Alexnet深度学习网络进行训练,具体包括以下步骤:(2-1)将步骤(1)所获得训练数据划分为训练集和测试集;(2-2)将步骤(2-1)得到的训练集中的医学图像作为输入训练集,操作编码作为输出训练集,将其带入Alexnet深度学习网络中进行正向传播训练,获得操作输出;(2-3)将步骤(2-2)获得的操作输出与步骤(2-1)得到的训练集的实际输出按照交叉熵损失函数进行损失值计算;(2-5)若步骤(2-3)中的损失值达到设定阈值,则将测试集的数据带入步骤(2-2)已经训练过的深度学习网络中,并按照步骤(2-3)依次计算损失值;(2-7)若步骤(2-5)中的损失值达到设定阈值,则输出训练完成的深度学习网络模型。
所述对于应用血管介入手术机器人进行手术过程中的终端医学图像信息和医生操作数据采集,具体包括以下步骤:
(1-1)在医生连续操作血管介入手术过程中,通过微处理器采集主端操作器向从端控制器发送的数字信号,并对医生的操作所对应数字信号的进行编码,并将操作编码上传保存至上位机;
所述步骤(1-1)中的编码是先采信号,再对信号根据编码规则编码,医生的不同操作就是通过不同的串口通信给主控板的,在硬件上已经分类,此时的编码只是对不便于成为神经网络编码的串口数字信号进行后续编码方便神经网络输出。
所述步骤(1-1)中对信号根据编码规则编码是指:为了方便神经网络输出,结合医生主端操作和神经网络输出习惯为系统制定如下编码规则,即:导管前进操作记为0001,导管的后退操作记为0010,导管左旋捻操作记为0100,导管右旋捻操作记为1000。
所述步骤(1-1)中的微处理器采用Arduino DUE微型处理器。
(1-2)采集主端操作器向从端控制器发送的数字信号的同时,通过屏幕抓取程序采集手术操作过程中由医学摄像头拍摄的医学图像信号,对所有采集到的医学图像在上位机进行压缩预处理,并保存;
所述步骤(1-1)和步骤(1-2)中数据采集的采样间隔为0.05s,此间隔是经过实验分析获得兼顾采样效率和数据处理的采样间隔。
所述步骤(1-2)中的图像压缩预处理是指通过插值或压采样的方式使样本医学图像变成尺寸大小为2k*2k的图像,其中,k为介于7~12之间的自然数,然后调用Opencv库对血管和导管的边缘特征进行初步提取。
所述步骤(1-2)中的屏幕抓取程序采用微软公司开源的win32库实现。
(1-3)在上位机中将同时刻步骤(1-1)和步骤(1-2)采集到的两种数据信息建立起对应关系,即:一帧医学图像对应一种操作方式编码,并将所采集到的一一对应的两种数据作为训练数据保存下来。
(2-1)将步骤(1)所获得训练数据划分为训练集和测试集;(2-2)将步骤(2-1)得到的训练集中的医学图像作为输入训练集,操作编码作为输出训练集,将其带入Alexnet深度学习网络中进行正向传播训练,获得操作输出;(2-3)将步骤(2-2)获得的操作输出与步骤(2-1)得到的训练集的实际输出按照交叉熵损失函数进行损失值计算,包括:
(2-1)将步骤(1-3)所获得训练数据的时序打乱,形成一种马尔科夫链式的数组,防止训练过程中产生过拟合现象,并将其中70%的训练数据作为训练集,30%作为测试集;
所述步骤(2-1)中将步骤(1-3)所获得训练数据的时序打乱,具体是指:医生的操作编码对应一张实时图像,即:手术过程是由多组连续的有时序的医生的操作编码和一张实时图像代表,但这个无法用作训练,因为连续操作数据直接拿来训练会造成严重的过拟合现象,所以需要将连续操作数据的连续时序打乱,形成马尔科夫链式的数组,防止训练过程中过拟合现象的发生。
所述步骤(2-1)中的马尔科夫链式的数组是指一种离散的数组表现形式。
(2-2)将步骤(2-1)得到的由70%的训练数据组成的训练集中的医学图像作为输入训练集,操作编码作为输出训练集,将其带入Alexnet深度学习网络中进行正向传播训练,获得操作输出;
所述步骤(2-2)中深度学习网络的搭建环境在上位机中实现,利用Anaconda内部搭建Tensorflow并且在Tensorflow框架进行深度学习的训练即可实现。
所述步骤(2-2)中带入Alexnet深度学习网络中进行正向传播训练,其正向传播方向依次包括第一卷积层、第一规范化层、第一最大池化层、第二卷积层、第二规范化层、第二最大池化层、第三卷积层、第四卷积层、第五卷积层、展开层、第一全连接层、第一丢弃层、第二全连接层、第二丢弃层、第三全连接层;其中,
所述第一卷积层的卷积核为11×11,步长为4×4,输出通道数为96,激活函数为relu函数,用于提取图像特征;
所述第一最大池化层的池化核心为3×3,步长为2×2,用于压缩图像信息;
所述第二卷积层的卷积核为5×5,步长为1×1,输出通道数为256,激活函数为relu函数,用于进一步提取图像特征;
所述第二规范化层用于加速网络收敛,防止过拟合提高泛化能力,提高泛化能力;
所述第二最大池化层的池化核心为3×3,步长为2×2,用于进一步压缩图像信息;
所述第三卷积层的卷积核为3×3,步长为1×1,输出通道数为384,激活函数为relu函数,用于进一步提取图像特征;
所述第四卷积层的卷积核为3×3,步长为1×1,输出通道数为384,激活函数为relu函数,用于进一步提取图像特征;
所述第五卷积层的卷积核为3×3,步长为1×1,输出通道数为256,激活函数为relu函数,用于进一步提取图像特征;
所述展开层用于将特征图展成一行,便于了对接后面接第一全连接层;
所述第一全连接层的神经元数量为4096个,激活函数为relu函数;
所述第一丢弃层用于随机地使一半的神经元失活,避免过拟合,提高泛化能力;
所述第二全连接层的神经元数量为4096个,激活函数为relu函数;
所述第二丢弃层用于随机地使一半的神经元失活,避免过拟合,提高泛化能力;
所述第三全连接层的神经元数量为4,激活函数为softmax函数;所述softmax函数用于判断将当前医学图像所属的操作的概率分布。
(2-3)将步骤(2-2)获得的操作输出与步骤(2-1)得到的由70%的训练数据组成的训练集的实际输出按照交叉熵损失函数进行损失值计算;
所述对于采集获得的数据进行处理应用Alexnet深度学习网络进行训练,还包括以下步骤:
(2-4)若步骤(2-3)中的损失值结果未达到设定阈值,则通过梯度下降法将步骤(2-3)获得交叉熵损失值逐层反向传播更新权重,并重复步骤(2-2);
所述步骤(2-4)中交叉熵损失函数的损失值得计算如下公式所示:
式中,i为介于1~N之间的自然数,yi,k为第i张医学图像所对应的第k组操作编码,pi,k为第i张医学图像所预测为的第k组操作编码的概率,一共有N个样本。
所述步骤(2-4)中设定阈值不高于0.02。
(2-5)若步骤(2-3)中的损失值达到设定阈值,则将测试集的数据带入步骤(2-2)已经训练过的深度学习网络中,并按照步骤(2-3)依次计算损失值;
(2-6)若步骤(2-5)中得到的损失值未达到设定阈值,则通过梯度下降法将步骤(2-5)获得交叉熵损失值逐层反向传播更新权重,并重复步骤(2-2);
(2-7)若步骤(2-5)中的损失值达到设定阈值,则输出训练完成的深度学习网络模型。
所述将已经训练完成的网络模型应用在血管介入手术机器人的自动化手术进程中,具体包括以下步骤:
(3-1)在手术进程中,通过医学摄像头拍摄手术进程的医学影像,并通过屏幕抓取程序抓取医学图像,并将医学图像进行预处理;
所述步骤(3-1)中屏幕抓取程序采用微软公司开源的win32库实现。
所述步骤(3-1)中医学图像预处理是指通过插值或压采样的方式使样本医学图像变成尺寸大小为2k*2k的图像,其中,k为介于7~12之间的自然数,然后调用Opencv库对血管和导管的边缘特征进行初步提取。
所述步骤(3-1)中屏幕抓取的0.05秒时间间隔根据图像抓取的极限速度0.02~0.04秒所规定,这里取0.05s是为了获取稳定的图像源和时序编码。
(3-2)将步骤(3-1)中的预处理后的医学图像导入步骤(2-7)中已完成训练的深度学习网络中,则深度学习网络将根据已经训练好的网络规则输出预测的操作编码;
(3-3)将步骤(3-2)得到的操作编码编译为控制信号传输至微处理器中,微处理器再将控制信号转变为PWM波控制信号控制步进电机在进行指定运动;
所述步骤(3-3)中微处理器采用Arduino DUE微型处理器。
所述步骤(3-3)中步进电机是Orientalmotor生产的ARM24SAK-H100型步进电机。
(3-4)步进电机带动从端操作器推送导管完成相应动作后,重复步骤(3-1),直至导管达到手术预定位置。
本发明的工作原理:如图2所示,医生根据医学影像提示操作血管介入手术机器人主端操作器控制从端手术操作器进行手术,我们利用Arduino DUE微型处理器每0.05秒将医生的操作指令进行编码上传至上位机中;与此同时每0.05s通过win32屏幕抓取程序抓取对应手术操作的医学图像上传至上位机中进行预处理。将两者对应储存起为训练数据,医学图像作为训练输入集,操作指令作为训练输出集。将训练数据时序打乱后,按照70%和30%划分为训练集和测试集。将训练集带入Alexnet深度学习网络中进行网络权重的训练,训练结果与训练数据进行比较,通过交叉熵损失函数计算法计算损失值,将损失值进行反向传播更新权重。最终损失率若在训练集和测试集的验证下都小于0.02,输出网络模型。在自动手术的进程中,每0.05s通过win32屏幕抓取程序抓取医学影像将其上传至上位机中,上位机将图像预处理后传入已训练好的网络模型,网络模型根据训练好的规则输出操作编码,上位机将操作编码信号传输至Arduino DUE微型处理器中,Arduino将操作编码信号转变为PWM波控制信号控制ARM24SAK-H100型步进电机驱动从端操作器控制导管位移到指定位置,每次操作持续时长为0.05秒,即从端操作器在0.05秒仅进行一项操作,0.05秒是经过试验验证兼顾安全和效率的时长。当导管到达医生手术位置时结束自动手术操作进程。
本发明的优越性:通过深度学习实现了血管介入手术机器人的自动手术操作;自动手术操作能极大改善了医生的操作体验,减轻医生的体力负担,在医疗机器人的领域具有较高的实用性和研究价值;方法简单,容易实现。
附图说明
图1为本发明所涉一种基于深度学习的血管介入机器人自动手术方法的整体结构原理示意图。
图2为本发明所涉一种基于深度学习的血管介入机器人自动手术方法的工作原理示意图。
图3为本发明所涉一种基于深度学习的血管介入机器人自动手术方法的训练数据采集原理示意图。
图4为本发明所涉一种基于深度学习的血管介入机器人自动手术方法的深度学习网络训练及自动手术操作原理示意图。
图5本发明所涉一种基于深度学习的血管介入机器人自动手术方法的Alexnet深度学习网络的结构示意图。
实施方式
实施例:一种基于深度学习的血管介入机器人自动手术方法,如图1、图2所示,其特征在于它包括以下内容:
(1)对于应用血管介入手术机器人进行手术过程中的终端医学图像信息和医生操作数据采集,如图2所示;
(2)对于采集获得的数据进行处理应用Alexnet深度学习网络进行训练,如图3、图4所示;
(3)将已经训练完成的网络模型应用在血管介入手术机器人的自动化手术进程中,如图4所示。
所述对于应用血管介入手术机器人进行手术过程中的终端医学图像信息和医生操作数据采集,如图2、图3所示,具体包括以下步骤:
(1-1)在医生连续操作血管介入手术过程中,通过微处理器采集主端操作器向从端控制器发送的数字信号,并对医生的操作所对应数字信号的进行编码,并将操作编码上传保存至上位机;
所述步骤(1-1)中的编码是先采信号,再对信号根据编码规则编码,医生的不同操作就是通过不同的串口通信给主控板的,在硬件上已经分类,此时的编码只是对不便于成为神经网络编码的串口数字信号进行后续编码方便神经网络输出。
所述步骤(1-1)中对信号根据编码规则编码是指:为了方便神经网络输出,结合医生主端操作和神经网络输出习惯为系统制定如下编码规则,即:导管前进操作记为0001,导管的后退操作记为0010,导管左旋捻操作记为0100,导管右旋捻操作记为1000。
所述步骤(1-1)中的微处理器采用Arduino DUE微型处理器。
(1-2)采集主端操作器向从端控制器发送的数字信号的同时,通过屏幕抓取程序采集手术操作过程中由医学摄像头拍摄的医学图像信号,对所有采集到的医学图像在上位机进行压缩预处理,并保存;
所述步骤(1-1)和步骤(1-2)中数据采集的采样间隔为0.05s,此间隔是经过实验分析获得兼顾采样效率和数据处理的采样间隔,图像抓取的极限速度通常为0.02~0.04s,这里取0.05s是为了获取稳定的图像源和时序编码,当然0.05s不是硬性指标,只是实验平台试验表明更快速度图像获取不稳定,而比0.05s更慢没必要。
所述步骤(1-2)中的图像压缩预处理是指通过插值或压采样的方式使样本医学图像变成尺寸大小为2k*2k的图像,其中,k为介于7~12之间的自然数,然后调用Opencv库对血管和导管的边缘特征进行初步提取。
所述步骤(1-2)中的屏幕抓取程序采用微软公司开源的win32库实现。
(1-3)在上位机中将同时刻步骤(1-1)和步骤(1-2)采集到的两种数据信息建立起对应关系,即:一帧医学图像对应一种操作方式编码,并将所采集到的一一对应的两种数据作为训练数据保存下来。
所述对于采集获得的数据进行处理应用Alexnet深度学习网络进行训练,如图4所示,具体包括以下步骤:
(2-1)将步骤(1-3)所获得训练数据的时序打乱,形成一种马尔科夫链式的数组,防止训练过程中产生过拟合现象,并将其中70%的训练数据作为训练集,30%作为测试集;
所述步骤(2-1)中将步骤(1-3)所获得训练数据的时序打乱,具体是指:医生的操作编码对应一张实时图像,即:手术过程是由多组连续的有时序的医生的操作编码和对应的实时图像代表,但这个无法用作训练,因为连续操作数据直接拿来训练会造成严重的过拟合现象,所以需要将连续操作数据的时序打乱,形成马尔科夫链式的数组,防止训练过程中过拟合现象的发生。
所述步骤(2-1)中的马尔科夫链式的数组是指一种离散的数组表现形式。
(2-2)将步骤(2-1)得到的由70%的训练数据组成的训练集中的医学图像作为输入训练集,操作编码作为输出训练集,将其带入Alexnet深度学习网络中进行正向传播训练,获得操作输出;
所述步骤(2-2)中深度学习网络的搭建环境在上位机中实现,利用Anaconda内部搭建Tensorflow并且在Tensorflow框架进行深度学习的训练即可实现。
所述步骤(2-2)中带入Alexnet深度学习网络中进行正向传播训练,其正向传播方向依次包括第一卷积层、第一规范化层、第一最大池化层、第二卷积层、第二规范化层、第二最大池化层、第三卷积层、第四卷积层、第五卷积层、展开层、第一全连接层、第一丢弃层、第二全连接层、第二丢弃层、第三全连接层,如图5所示;其中,
所述第一卷积层的卷积核为11×11,步长为4×4,输出通道数为96,激活函数为relu函数,用于提取图像特征;
所述第一最大池化层的池化核心为3×3,步长为2×2,用于压缩图像信息;
所述第二卷积层的卷积核为5×5,步长为1×1,输出通道数为256,激活函数为relu函数,用于进一步提取图像特征;
所述第二批规范化层用于加速网络收敛,防止过拟合提高泛化能力,提高泛化能力;
所述第二最大池化层的池化核心为3×3,步长为2×2,用于进一步压缩图像信息;
所述第三卷积层的卷积核为3×3,步长为1×1,输出通道数为384,激活函数为relu函数,用于进一步提取图像特征;
所述第四卷积层的卷积核为3×3,步长为1×1,输出通道数为384,激活函数为relu函数,用于进一步提取图像特征;
所述第五卷积层的卷积核为3×3,步长为1×1,输出通道数为256,激活函数为relu函数,用于进一步提取图像特征;
所述展开层用于将特征图展成一行,便于了对接后面接第一全连接层;
所述第一全连接层的神经元数量为4096个,激活函数为relu函数;
所述第一丢弃层用于随机地使一半的神经元失活,避免过拟合,提高泛化能力;
所述第二全连接层的神经元数量为4096个,激活函数为relu函数;
所述第二丢弃层用于随机地使一半的神经元失活,避免过拟合,提高泛化能力;
所述第三全连接层的神经元数量为4,激活函数为softmax函数;所述softmax函数用于判断将当前医学图像所属的操作的概率分布。
(2-3)将步骤(2-2)获得的操作输出与步骤(2-1)得到的由70%的训练数据组成的训练集的实际输出按照交叉熵损失函数进行损失值计算;
(2-4)若步骤(2-3)中的损失值结果未达到设定阈值,则通过梯度下降法将步骤(2-3)获得交叉熵损失值逐层反向传播更新权重,并重复步骤(2-2);
所述步骤(2-4)中交叉熵损失函数的损失值得计算如下公式所示:
式中,i为介于1~N之间的自然数,yi,k为第i张医学图像所对应的第k组操作编码,pi,k为第i张医学图像所预测为的第k组操作编码的概率,一共有N个样本。
所述步骤(2-4)中设定阈值不高于0.02。(神经网络训练到后期训练效率会下降,后期每一次的损失值通常在0.02以下小幅波动,0.02是约定俗成的判断损失函数有没有收敛的标志之一)。
(2-5)若步骤(2-3)中的损失值达到设定阈值,则将测试集的数据带入步骤(2-2)已经训练过的深度学习网络中,并按照步骤(2-3)依次计算损失值,如图3所示;
(2-6)若步骤(2-5)中得到的损失值未达到设定阈值,则通过梯度下降法将步骤(2-5)获得交叉熵损失值逐层反向传播更新权重,并重复步骤(2-2);
(2-7)若步骤(2-5)中的损失值达到设定阈值,则输出训练完成的深度学习网络模型,如图3所示。
所述将已经训练完成的网络模型应用在血管介入手术机器人的自动化手术进程中,具体包括以下步骤:
(3-1)在手术进程中,通过医学摄像头拍摄手术进程的医学影像,并通过屏幕抓取程序抓取医学图像,并将医学图像进行预处理;
所述步骤(3-1)中屏幕抓取程序采用微软公司开源的win32库实现。
所述步骤(3-1)中医学图像预处理是指通过插值或压采样的方式使样本医学图像变成尺寸大小为2k*2k的图像,其中,k为介于7~12之间的自然数,然后调用Opencv库对血管和导管的边缘特征进行初步提取。
所述步骤(3-1)中屏幕抓取的0.05秒时间间隔根据图像抓取的极限速度0.02~0.04秒所规定,这里取0.05s是为了获取稳定的图像源和时序编码。
(3-2)将步骤(3-1)中的预处理后的医学图像导入步骤(2-7)中已完成训练的深度学习网络中,则深度学习网络将根据已经训练好的网络规则输出预测的操作编码;
(3-3)将步骤(3-2)得到的操作编码编译为控制信号传输至微处理器中,微处理器再将控制信号转变为PWM波控制信号控制步进电机在进行指定运动;(实施例中是控制步进电机在0.05秒内进行指定运动),如图1所示;
所述步骤(3-3)中微处理器采用Arduino DUE微型处理器。
所述步骤(3-3)中步进电机是Orientalmotor生产的ARM24SAK-H100型步进电机。
(3-4)步进电机带动从端操作器推送导管完成相应动作后,重复步骤(3-1),直至导管达到手术预定位置,如图4所示。
一种基于深度学习的血管介入机器人自动手术方法,下面通过附图结合具体实施例对本发明作进一步详述,以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。
一种基于深度学习的血管介入机器人自动手术方法,具体包括以下步骤:
(1)对实行这种自动手术的血管介入机器人的首先进行如图3所示操作,每0.05秒采集一组数据。操作数据是通过Arduino将医生的操作所对应数字信号的进行编码,再上传至上位机中保存成输出训练数据;图像数据首先通过win32屏幕抓取程序抓取医学图像上传至上位机,并将医学图像尺寸大小进行压缩,再调用Opencv库对血管和导管的边缘特征进行强化提取,保存成输入训练数据;
(2)根据图4所示流程将训练数据处理成训练集,测试集后输入图5所示的Alexnet深度神经网络中进行训练,Alexnet深度神经网络由ANACONDA环境tensorflow框架中搭建,根据中的训练流程训练网络,训练完成后输出网络模型。
(3)在如图2所示的手术进程中首先通过医学摄像头拍摄手术进程的医学影像,并每0.05秒通过win32屏幕抓取程序抓取医学图像,并将医学图像大小进行压缩,再调用Opencv库对血管和导管的边缘特征进行强化提取。预处理医学图像导入已完成训练的深度学习网络中,深度学习网络将根据已经训练好的网络规则输出预测的操作编码。上位机将操作编码编译为控制信号传输至Arduino微处理器中,Arduino微处理器再将控制信号转变为PWM波控制信号控制ARM24SAK-H100型步进电机在进行0.05秒内的指定运动,步进电机带动从端操作器推送导管不断完成指定动作,直至导管达到手术预定位置。
尽管为说明目的公开了本发明的实施例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换、变化和修改都是可能的,因此,本发明的范围不局限于实施例和附图所公开的内容。