发明内容
针对上述无法一次性训练较大尺寸医学影像的问题,本发明的目的在于提供一种图像处理方法和系统,该方法可以将样本图像划分成边界区域部分重合的若干个子图像,并将这些子图像分别推进网络进行训练,既降低了单次训练时占用的GPU显存空间,提高GPU的工作性能,也保证了图像边界信息不丢失,使得所有图像信息都能用于训练,提高了训练的准确性。
为达到上述发明的目的,本发明提供的技术方案如下:
一方面,本发明实施例提供了一种图像处理方法,所述方法包括:训练深度学习模型,获取输入图像;以及基于所述经过训练的深度学习模型处理所述输入图像,以产生处理结果。所述训练深度学习模型包括:获取初始深度学习模型;获取样本图像;将所述样本图像划分成若干子图像,所述若干子图像包括第一子图像和第二子图像,并且所述若干子图像中的任意两个相邻的子图像具有部分重叠的区域;以及基于所述若干子图像,训练所述初始深度学习模型,以得到经过训练的深度学习模型;
在本发明中,所述若干子图像还包括第三子图像,所述第一子图像和所述第二子图像的重叠区域为所述样本图像的第一区域,所述第一子图像和所述第三子图像的重叠区域为所述样本图像的第二区域。
在本发明中,所述样本图像的所述第一区域与所述样本图像的所述第二区域具有相同的宽度。
在本发明中,所述训练所述初始深度学习模型包括通过图形处理器GPU训练所述初始深度学习模型。
在本发明中,将所述样本图像划分成若干子图像包括:确定所述重叠区域的宽度;基于所述样本图像的尺寸和所述图形处理器GPU的可用显存空间,确定所述若干子图像的个数和/或所述若干子图像中每个子图像的尺寸;以及基于所述重叠区域的宽度,以及所述若干子图像中每个子图像的尺寸和/或所述若干子图像的个数,对所述样本图像进行划分,生成所述若干子图像。
在本发明中,所述初始深度学习模型包括至少一个卷积神经网络,所述至少一个卷积神经网络包括至少一个卷积核,并且所述确定所述重叠区域的宽度包括:确定对应于所述样本图像的所述相同区域的宽度的像素或体素个数不少于参考值R,所述参考值R与所述至少一个卷积核的宽度值和所述至少一个卷积神经网络中具有卷积核的下采样层的层数N有关,所述参考值R由下式进行计算,其中,Pi=Si+1(1+Pi+1),i=1,2,…,N-2,第N层为输出层,PN-1=SN,Sj=(Wj-1)/2,j=1,2,…,N,Wj为第j层中尺寸最大的卷积核的宽度值。
在本发明中,所述确定所述重叠区域的宽度之后,所述将所述样本图像划分成若干子图像进一步包括:在所述样本图像各维度向外进行数据扩展,扩展的数据的宽度不小于所述参考值的一半,并且所述扩展的数据为系统或用户指定的数据,或基于所述样本图像本身的像素数据得来的数据。
在本发明中,所述通过所述图形处理器GPU训练所述初始深度学习模型包括:向所述图形处理器GPU加载所述第一子图像;基于所述第一子图像训练所述初始深度学习模型,以得到第一次更新的深度学习模型,向所述图形处理器GPU加载所述第二子图像;以及基于所述第二子图像训练所述第一次更新的深度学习模型,得到第二次更新的深度学习模型,以此循环,直至所有子图像训练结束,得到所述经过训练的深度学习模型。所述基于所述第一子图像训练所述初始深度学习模型包括:将所述第一子图像带入所述初始深度学习模型中的各层神经网络进行运算,提取所述第一子图像的特征,与预期结果进行比较,从而修正或优化所述初始深度学习模型中的参数,并获得所述第一次更新的深度学习模型。
在本发明中,所述若干子图像的尺寸均相同。
另一方面,本发明实施例提供了一种图像处理系统,所述系统包括处理器及存储器,所述处理器包括图形处理器GPU,所述存储器用于存储识别程序,所述处理器运行识别程序,所述识别程序运行时执行如上所述的图像处理方法。
与现有技术相比,本发明的有益效果表现如下:
一、针对GPU无法一次性训练较大尺寸的样本图像的问题,根据样本图像的尺寸与GPU的可用显存空间的大小,将样本图像划分成若干个子图像,任意两个相邻的子图像具有部分重叠的区域,并将这些子图像分别推进卷积神经网络进行训练,可以降低单次训练时占用的GPU显存空间,提高GPU的工作性能;
二、针对卷积神经网络在图像训练过程中容易丢失图像边界信息的问题,在划分子图像时,将子图像的边界区域进行部分扩展,使得相邻两个子图像之间部分重合,即便子图像边界信息丢失,也能保证所有图像信息都能用于训练,提高了训练的准确性。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图和实施例对本发明的具体实施方式做详细的说明。
图1是本发明的图像处理系统100的结构示意图。如图所示,图像处理系统100可以包括成像设备110、网络120、至少一个终端130、处理设备140和存储器150。图像处理系统100中各部件间的连接方式可以是多种的。例如,成像设备110可以通过网络120与处理设备140连接,或者直接与处理设备140连接。图像处理系统100的一个部件可以通过网络120与图像处理系统100的其它部件进行信息通信。例如,处理设备140可以通过网络120从成像设备110获取图像数据。又如,处理设备140可以通过网络120从终端130获取用户指令。
成像设备110可以扫描物体并生成与所述物体相关的数据。成像设备110还可以根据所述数据重建图像。成像设备110可以是PET设备、SPECT设备、CT设备、MRI设备等中的一种或几种的组合(例如,PET-CT设备、PET-MRI设备、SPECT-MRI设备等)。本发明不对成像设备110的类型做任何限定。
终端130可以包括移动设备、平板电脑、手提电脑等中的一种或几种的组合。本发明不对终端130的类型做任何限定。在一些实施例中,终端130可以是处理设备140的一部分。
处理设备140可以实现图像处理。图像处理可以包括图像分割(如肋骨分割、气管分割、血管分割等)、图像识别(如指纹识别、人脸识别等)、图像配准、图像分类、图像融合等。处理设备140可以从成像设备110、终端130、存储器150等处获取数据并进行处理。处理设备140可以获取一个初始深度学习模型,获取样本图像,将样本图像划分为多个子图像,基于多个子图像对深度学习模型进行训练,并基于经过训练的模型对图像进行处理。为了区别不同处理中采用的不同图像,用于训练的图像可以称为样本图像,而最终被处理的输入图像可以称为目标图像。处理设备140可以是单独的服务器或服务器集群。所述服务器集群可以是集中式或分布式的。处理设备140可以是本地的或是远程的。处理设备140的功能可以在云平台(如私有云、公共云、混合云、社区云、分布式云、互联云、多云等)上实现。
存储器150可以存储数据、指令和/或其它信息。所述数据和/或指令可以由处理设备140使用或执行,从而实现本发明中描述的示例性方法。存储器150可以包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等中的一种或几种的组合。存储器150的功能可以在云平台上实现。本发明不对存储器150的类型做任何限定。在一些实施例中,存储器150可以是处理设备140的一部分。
图2是本发明的处理设备140的结构示意图。处理设备140可以包括数据获取模块210、深度学习训练模块220和图像处理模块230。
数据获取模块210可以获取数据。所述数据可以包括图像数据、与模型训练或图像处理有关的指令和/或参数等。图像数据可以包括样本图像、目标图像对应的数据。图像数据可以用于生成或重建图像。图像数据可以由成像设备110生成,从存储器150获取,由网络120从外部数据源获取,或由终端130上传等。
深度学习训练模块220可以采用样本图像对深度学习模型进行训练,并获得经过训练的深度学习模型。深度学习模型可以包括深度神经网络(deep neural network,DNN),如卷积神经网络(convolutional neural network,CNN)、深度信念网络(deep beliefnetwork,DBN)、随机布尔神经网络(random boolean network,RBN)等。深度学习模型可以包括多层神经网络结构。以卷积神经网络为例,卷积神经网络可以包括输入层、卷积层、降维层、隐藏层、输出层等。卷积神经网络中包括一个或多个卷积核,用于卷积运算。利用深度学习模型,可以对样本的特征进行提取并学习,不断优化模型参数,从而实现模型训练过程。
如图2所示,深度学习训练模块220可以包括子图像划分单元222、模型训练单元224和图形处理器(GPU)226。子图像划分单元222可以将输入的样本图像划分为若干个子图像。例如,子图像划分单元222可以将输入的样本图像划分为形状大小相同(或不相同)的第一子图像、第二子图像、…、第N子图像等。其中,相邻的两个子图像具有部分重叠的区域(也称为“相同区域”)。子图像划分单元222可以根据样本图像的大小和/或GPU的可用存储空间,确定子图像的个数N或单个子图像的尺寸。在卷积运算过程中,图像的边界区域信息会丢失,而丢失的信息多少与卷积核的尺寸有关。子图像划分单元222可以根据卷积核的大小,确定上述相同区域的宽度,即便在卷积运算中丢失了子图像的边界区域信息,但由于子图像与子图像之间具有重叠区域,从而保证整个样本图像的信息都能在卷积神经网络中进行训练。
模型训练单元224可以将子图像划分单元222划分的若干个子图像输入模型中并进行训练。模型训练单元224可以将子图像加载至图形处理器(GPU)226中进行模型训练。考虑到GPU的显存有限,模型训练单元224可以将若干个子图像分批次加载至模型中进行训练,训练完一批再加载下一批。一批子图像中可以包括一个或多个子图像。不同批次可以加载不同数量的子图像。例如,可以先加载第一子图像至图形处理器(GPU)226,训练结束后,再加载第二子图像,如此循环,直至第N子图像训练结束。模型训练单元224可以在每一次训练中,更新深度学习模型的参数,从而获得更新后的深度学习模型。训练结束后,可以获得经过训练的深度学习模型。
图像处理模块230可以基于经过训练的深度学习模型处理目标图像。例如,图像处理模块230可以对目标图像进行分类、对目标图像进行分割(如将目标图像分割为不同器官或组织)、对目标图像进行识别等(如根据一定规则识别图像中包含的物体或图像的种类是否为风景照或动物照、图像中人脸的身份等)。
图3是本发明的图像处理的一个流程示例图。流程300可以由处理设备140执行。
在301中,可以获取初始深度学习模型。操作301可以由数据获取模块210执行。初始深度学习模型可以包括深度神经网络、深度信念网络、卷积神经网络、卷积深度信念网络、深度玻尔兹曼机、堆叠自编码器、深度堆叠网络、深度编码网络、深核机等中的一种或几种的组合。在一些实施例中,初始深度学习模型可以包括至少一个卷积神经网络。所述至少一个神经网络可以包括至少一个卷积核。在一些实施例中,初始深度学习模型可以是未经训练的深度学习模型,其参数可以是预设的初始值。在一些实施例中,初始深度学习模型可以是先前经过训练的深度学习模型,其参数经过了一定程度的优化,但尚不能满足实际图像处理的需要,或者处理效果需要进一步提高。
在303中,可以获取样本图像。操作303可以由数据获取模块210执行。样本图像可以包括正样本图像和/或负样本图像。例如,为了分割肋骨,正样本图像中可以包含肋骨信息,而负样本图像中可以不包含肋骨信息。数据获取模块210可以从存储器150、成像设备110、终端130、外部数据源等处获取样本图像。样本图像的数量可以是一个或多个。样本图像的类型可以是MRI、CT、PET等单模态图像或多模态图像。本发明不对样本图像的数量和类型做任何限定。
在305中,可以划分所述样本图像,生成子图像。任意两个相邻的子图像之间具有部分重叠的区域。操作305可以由子图像划分单元222执行。子图像划分单元222可以基于样本图像的尺寸和/或GPU的可用显存空间,确定子图像的个数N和/或每个子图像的尺寸,并进一步确定样本图像中相邻两个子图像的重叠区域的宽度。进一步地,子图像划分单元222可以基于子图像重叠区域的宽度、子图像的个数N和/或每个子图像的尺寸,将样本图像划分为子图像。生成的子图像的形状和尺寸可以相同或不相同。例如,第一子图像的形状为正方形,第二子图像的形状为长方形,等等。重叠区域的宽度可以相同或不相同。例如,第一子图像和第二子图像的重叠区域的宽度为5个像素,而第一子图像与第三子图像的重叠区域的宽度为7个像素,等等。本发明不对子图像的具体数量、形状、大小,以及相邻两个子图像的重叠区域的具体宽度做任何限定。关于子图像划分的一个实施例可以参见图4所示的流程400和图6所示的示意图。
在307中,可以基于子图像训练所述初始深度学习模型,得到经过训练的深度学习模型。操作307可以由模型训练单元224执行。模型训练单元224可以将子图像加载至图形处理器(GPU)226中进行模型训练。考虑到GPU的显存有限,模型训练单元224可以将若干个子图像分批次加载至模型中进行训练,训练完一批再加载下一批。一批子图像中可以包括一个或多个子图像。不同批次可以加载不同数量的子图像。例如,可以先加载第一子图像至图形处理器(GPU)226,训练结束后,再加载第二子图像,如此循环,直至第N子图像训练结束。模型训练单元224可以在每一次训练中,更新深度学习模型的参数,从而获得更新后的深度学习模型。训练结束后,可以获得经过训练的深度学习模型。关于初始深度学习模型的训练过程的一个实施例可以参见图5所示的流程500。
在309中,可以获取输入图像。如前所述,获取的输入图像也称为目标图像。操作309可以由数据获取模块210执行。数据获取模块210可以从存储器150、成像设备110、终端130、外部数据源等处获取输入图像。输入图像的数量可以是一个或多个。输入图像的类型可以是MRI、CT、PET等单模态图像或多模态图像。本发明不对输入图像的数量和类型做任何限定。
在311中,可以基于经过训练的深度学习模型处理所述输入图像,生成处理结果。操作311可以由图像处理模块230执行。根据深度学习模型的不同用途,图像处理模块230可以对目标图像进行分类、对目标图像进行分割(如将目标图像分割为不同器官或组织)、对目标图像进行识别等(如根据一定规则识别图像中包含的物体或图像的种类是否为风景照或动物照、图像中人脸的身份等)。具体地,图像处理模块230可以将309获取的输入图像输入至经过训练的深度学习模型中,模型中的深度神经网络(如卷积神经网络)将利用前述经过训练优化的参数对输入图像进行处理和运算,并输出处理结果。
需要注意的是,操作301可以在操作303或305后执行;也可以同时执行操作301和操作303;可以在操作301、305和/或307之间或之后加入存储数据的操作,数据可以存储在存储器150或外部数据库中(未示出)。
图4是本发明的划分子图像的一个流程示例图。流程400可以由子图像划分单元222执行。流程400以一个样本图像的划分为例进行说明,多个样本图像的划分与此类似。
在401中,可以基于样本图像的尺寸和/或GPU的可用显存空间,确定子图像的个数N和/或单个子图像的尺寸。在一些实施例中,单个子图像的尺寸可以基于GPU的可用显存空间确定。具体地,可以为单个子图像的尺寸设置一个上限。在一些实施例中,为了有效利用GPU的存储空间,可以为单个子图像的尺寸设置一个范围(包括上限和下限)。所述上限或范围不超过GPU的可用显存空间。所述上限和/或下限可以基于GPU的可用显存空间的百分比来设置,或者基于一个不超过GPU的可用显存空间的阈值来设置。例如,可以设定单个子图像的尺寸上限为GPU的可用显存空间的一个百分比(如50%,60%,70%,80%,90%等)。又如,可以设定单个子图像的尺寸下限为一个阈值T,所述阈值T为不超过GPU的可用显存空间的一个预设值。在一些实施例中,子图像的个数N可以基于样本图像的尺寸、GPU的可用显存空间和/或单个子图像的尺寸来确定。例如,可以将样本图像的尺寸与单个子图像的尺寸相除,取其商(若商为小数,则对商取整后加1)为子图像的个数N。又如,可以基于样本图像的尺寸,计算样本图像需要占用的空间,然后除以GPU的可用显存空间,取其商(若商为小数,则对商取整后加1)为子图像的个数N。
在403中,可以确定样本图像中相邻两个子图像的重叠区域的宽度。本发明以二维样本图像为例进行描述。
假如卷积神经网络中只有一个卷积核,在卷积运算时,丢失的信息约为卷积核宽度值W的一半(即(W-1)/2)。为了保证卷积运算时,样本图像的所有信息都能进行训练,所述重叠区域的宽度可以基于深度学习模型中卷积神经网络的卷积核的尺寸来确定。例如,对应于重叠区域(或相同区域)的宽度的像素或体素个数可以不少于一个参考值R,所述参考值R可以与所述卷积核的宽度值W减一的值相等(即R=W-1)。例如,当卷积核为3×3矩阵时,卷积核的宽度值为3,那么相同区域的宽度的像素或体素个数可以为2;当卷积核为5×5矩阵时,卷积核的宽度值为5,那么相同区域的宽度的像素或体素个数可以为4。经过这样设置之后,即便在卷积运算时,相邻的两个子图像各丢失(W-1)/2的信息,仅仅是消除了重叠区域,而相邻两个子图像之间并不存在信息缺失,其效果仍然能保证样本图像中的全部信息都能用于训练。
而通常情况下,卷积神经网络中有多层下采样层,并且每层采样层有至少一个卷积核。为了保证在多次卷积运算中,不丢失样本图像的信息,对应于样本图像的相同区域的宽度的像素或体素个数可以设置为不少于参考值R。所述参考值R与所述至少一个卷积核的宽度值和卷积神经网络中具有卷积核的下采样层的层数N有关。所述参考值R可以由下式进行计算,
其中,Pi=Si+1(1+Pi+1),i=1,2,…,N-2,第N层为输出层,PN-1=SN,Sj=(Wj-1)/2,j=1,2,…,N,Wj为第j层中尺寸最大的卷积核的宽度值。
在405中,可以基于重叠区域的宽度、子图像的个数N和/或单个子图像的尺寸,划分样本图像,生成子图像。在一些实施例中,可以在样本图像中,按照从上到下、从左到右的顺序,根据单个子图像的尺寸,先划分一个子图像,然后再在相邻的位置划分一个子图像,并保证二者的重叠区域具有上述宽度。在一些实施例中,可以先将样本图像划分为N个初始子图像,初始子图像之间不具有重叠区域;然后再在样本图像中查找与各个初始子图像的边界区域相邻的区域,对各个初始子图像进行扩展,扩展的宽度可以不小于R/2,这样可以保证相邻两个子图像的重叠区域宽度不小于R。按照类似方法,可以将样本图像划分为形状大小相同(或不相同)的第一子图像、第二子图像、…、第N子图像等。第一子图像和第二子图像可以包括样本图像的第一区域。第一区域可以是第一子图像与第二子图像的重叠区域。第一子图像和第三子图像可以包括样本图像的第二区域。第二区域可以是第一子图像和第三子图像的重叠区域。第一区域和第二区域可以具有相同的宽度。需要注意的是,第一子图像并不一定代表第一个生成的子图像,第N子图像也并不一定代表第N个生成的子图像。第一子图像、第二子图像、…、第N子图像只是为了区别不同的子图像而进行命名,并不对子图像的生成顺序或训练顺序造成任何限定。此外,可以从流程400中添加或移除一步或数步操作,如在405后增加存储子图像的操作;还可以将401和403同时执行。
在一些实施例中,可以在所述样本图像各维度向外进行数据扩展,扩展的数据的宽度不小于所述参考值的一半。所述扩展的数据为系统或用户指定的数据,或基于所述样本图像本身的像素数据得来的数据。
数据扩展可以在样本图像划分之前进行,也可以在样本图像划分子图像后,针对位于样本图像四周边缘的若干子图像(例如,图16所示的第一子图像621,第二子图像622,第三子图像623,第五子图像625,第六子图像626,第七子图像627,第八子图像628和第九子图像629)进行数据填充(或扩展)。在进行数据填充(或扩展)时,可以向样本图像的外部方向进行填充(或扩展)。例如,对于第一子图像621,沿X轴负向和Y轴正向进行填充(或扩展);对于第二子图像622,沿Y轴正向进行填充(或扩展);对于第三子图像623,沿X轴负向进行填充(或扩展);对于第五子图像625,沿X轴负向和Y轴负向进行填充(或扩展);对于第六子图像626,沿Y轴负向进行填充(或扩展);对于第七子图像627,沿X轴正向和Y轴正向进行填充(或扩展);对于第八子图像628,沿X轴正向进行填充(或扩展);对于第九子图像629,沿X轴正向和Y轴负向进行填充(或扩展)。为了保证卷积运算时不丢失信息,填充(或扩展)的数据的宽度可以不小于R/2。填充(或扩展)的数据可以是图像处理系统100或用户指定的数据,也可以是基于样本图像本身的数据得来的数据。例如,填充(或扩展)的数据可以是0。又如,填充(或扩展)的数据可以是与样本图像的边缘像素相同的数据。再如,填充(或扩展)的数据可以是样本图像中的一个或多个像素经过加权之后和/或衰减之后得到的数据。
图5是本发明的训练深度学习模型的一个流程示例图。流程500可以由模型训练单元224执行。
在501中,可以向图形处理器(GPU)226加载第一子图像。
在503中,可以基于第一子图像训练初始深度学习模型,获取经过更新的深度学习模型。可以将第一子图像带入初始深度学习模型中的各层神经网络进行运算,提取第一子图像的特征,与预期结果进行比较,从而修正或优化初始深度学习模型中的参数,并获得经过更新的深度学习模型。
在505中,可以向图形处理器(GPU)226加载第i个子图像。i可以为大于0的正整数。i可以代表当前的迭代次数。i的初始值可以是一个预设的数值,例如1。在一些实施例中,可以排除已经训练的i-1个子图像,从剩余子图像中选取一个子图像作为第i个子图像。
在507中,可以基于第i个子图像训练经过更新的深度学习模型。操作507中的训练过程可以与503中的训练过程相似,在此不再赘述。
在509中,可以判断是否满足条件。所述条件可以包括第i-1次训练后,经过更新的模型参数的改变值与第i次训练后,经过更新的模型参数的改变值小于某个范围,或者,i不小于某个预设阈值(如最大迭代次数)。当条件满足时,可以执行操作513。当条件不满足时,可以执行操作511。在511中,i自动加1,之后再次执行操作505,进行下一次迭代。
在513中,可以获取经过训练的深度学习模型。例如,可以将最后一次更新的深度学习模型作为最终获取的经过训练的深度学习模型。在一些实施例中,可以利用多个样本图像的子图像训练同一个初始深度学习模型。需要注意的是,可以在操作513之后增加一个存储模型数据的操作,存储的模型数据可以用于后续图像处理。
图6-15是本发明的样本图像与若干子图像(图示9个子图像)以及子图像的重叠区域的示意图。需要注意的是,图示9个子图像仅为示例,本发明并不对子图像的个数、位置及编号做任何限定。
如图6-15所示,样本图像610被划分为9个子图像(如图6中阴影部分正方形所示),包括第一子图像621,第二子图像622,第三子图像623,第四子图像624,第五子图像625,第六子图像626,第七子图像627,第八子图像628和第九子图像629。各个子图像的形状和尺寸可以相同。区域A1-A2,B1-B5,C1-C2,D1-D5,E1-E2代表了子图像的重叠区域。例如,A1表示第一子图像621和第二子图像622的重叠区域。又如,B1表示第一子图像621和第三子图像623的重叠区域。B2表示第一子图像621、第二子图像622、第三子图像623和第四子图像624的重叠区域。各个重叠区域的宽度可以相同。
图16是本发明的不同尺寸图像占用GPU可用显存空间的示意图。如图7所示,设备采用的GPU为NVIDIA(英伟达)公司的GeForce GTX 1070显卡,可用显存空间为8192MB。训练的深度学习模型为Vnet网络。当加载未经划分的样本图像(图像大小为1024×1024)时,占用显存空间为6579MB;当加载经过划分的子图像(图像大小为512×512)时,占用显存空间为2439MB。由此可见,将样本图像划分为若干个子图像后,GPU占用率降低,提升了GPU性能。
以上所述仅为本发明的优选实施而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。