技术领域
本发明涉及一种微血管树结构的人工生成方法,属于生物医学领域。
背景技术
血管网络新生是涉及多时间尺度的生理过程,动物实验较难通过控制实验条件来同时观察较短和较长时程上的生理过程,且获得真实的微血管网络的过程较为困难和复杂。传统方法多基于统计和分形理论生成微血管树,所生成的微血管树具有较高的同质性,不能反映具有高度异质性的真实微血管树结构。因此,研究者尝试模拟生成微血管树结构。如何生成符合实际生理结构与拓扑特性的微血管树具有重要的研究价值。
发明内容
灰度图、彩色图、梯度图等图像之间的转换称之为图像翻译。这些任务可以用同一种框架来解决,该框架的名称为Pix2Pix算法。该算法是基于条件生成对抗网络来实现的,且输入为图像而非随机向量。本发明正是参考并且借鉴了Pix2Pix算法的基本思想,利用条件生成对抗网络和pair输入到判别器中来保证映射,进行高维数组特征的提取和比较。针对传统方法的不足,本发明建立了基于条件生成对抗网络的微血管树新生模型,该模型能够从真实血管网络结构中学习微血管树的形态与拓扑模式,进而生成与真实微血管树在形态和拓扑结构上相似的模拟微血管树。
本发明解决其技术问题所采用的技术方案是:
一种基于U-Net条件生成对抗网络的微血管树生成方法,包括以下步骤:
a.从血管网络中提取微血管分叉对数据,所述微血管分叉对数据为一组母系和子系血管分叉数据,其中,母系血管分叉数据包括母系血管分叉的母系主分支节点坐标及管径信息、母系左分支节点坐标及管径信息、母系右分支节点坐标及管径信息,子系血管分叉数据为母系血管分叉数据中的一分支为主分支的血管分叉节点坐标及管径信息,包括子系主分支节点坐标及管径信息、子系左分支节点坐标及管径信息、子系右分支节点坐标及管径信息。
b.基于深度卷积神经网络构造由生成器和判别器组成的U-Net条件生成对抗网络;其中,生成器采用U-Net结构,输入为分叉对的母系血管分叉数据,输出为生成的子系血管分叉数据;判别器的输入为步骤a得到的真实的微血管分叉对和由生成器生成的假的子系血管分叉与真实母系血管分叉组成的分叉对,用于区分输入数据是来自真实样本还是生成器生成的假样本。
c.根据步骤a的分叉对数据对生成器和判别器进行训练,通过损失函数的博弈获得训练好的生成器;
d.根据训练好的生成器逐级生成子系血管分叉同时进行微血管分叉树生长。
进一步地,所述步骤a中,从血管网络中提取微血管分叉对数据,具体包括以下子步骤:
a1从原始微血管网络中分离出微动脉树,并将提取到的每条微血管分叉节点坐标及管径存储到一个二维数组array中;所述二维数组array的每一行为存储每条微血管分叉的主分支、左分支、右分支节点的x、y坐标及管径信息。
a2分别对节点坐标值和管径值进行归一化,使它们的数值在0-1之间。所述归一化公式为:
normValue=(value-min)/(max-min)
其中,value表示管径值或坐标节点,min表示数据集中管径或节点坐标的最小值,max表示数据集中管径或节点坐标的最大值;
a3对二维数组array中不足N的每一行数据后补0,统一构成一个9×N的矩阵,N为微血管分支最多包含的子节点数量;其中,在主分支,左分支,右分支的管径信息中,对于该分支的补零位置的索引处将0置为1作为标签。为便于将数据输入到神经网络中进行训练在数组中增加一行同时都用0进行填充,使矩阵大小变为10×N。
a4在二维数组array中的微血管分叉中挑选成对的母系和子系血管分叉数据,组成20×N微血管分叉对数据作为分叉对数据。
进一步地,所述步骤a中,还包括扩增数据子步骤,具体为:
在0°~360°范围内,对存储在数组array中的微血管分叉树,每次增加α度旋转,对数据进行扩增,所述旋转公式如下:
x
y
其中,x
进一步地,所述步骤b中,生成器采用的U-Net结构的深度卷积神经网络的层数为10层,其中前5层都为卷积层,后5层为反卷积层。最后输出节点个数为10×N。
进一步地,判别器的网络同样使用深度卷积神经网络模型进行构造。其输入为步骤a得到的微血管分叉对矩阵形式,输入的矩阵大小为10×N×2。设置深度卷积神经网络模型的层数为5层,其中前4层为卷积层,最后一层为输出层,输出层的节点数为1。
进一步地,所述步骤c中,损失函数为:
其中:
L
L
L
进一步地,所述步骤d中,根据训练好的生成器逐级生成子系血管分叉同时进行微血管分叉树生长,包括以下子步骤:
d1从微血管分叉库中选取1个分支管径平均值最大的微血管分叉作为待生成的血管树的入口分叉,即微血管树的第0级分叉,并把该入口分叉作为母系血管分叉,输入训练好的生成器,生成下一级的子系血管分叉。
d2将生成的子系微血管分叉主分支的端点(endX,endY)平移至上一级母系血管分叉结点(nodeX,nodeY)位置,然后以结点位置为原点,对下一级的子系血管分叉进行旋转,使其主分支与x轴正方向夹角和上级分叉的生长分支与x轴正方向夹角相同。
d3将子系血管分叉重新作为下一轮生成器的训练样本输入,此时子系血管分叉变为母系血管分叉,生成对应的下一级子系血管分叉,即第2级分叉。
d4将该第2级分叉与d2完成的第1级分叉树匹配拼接成为二级分叉树。
d5重复步骤d2-d4逐级完成微血管分叉的生成和微血管分叉树的匹配连接,直到管径值小于一定阈值或递归次数大于指定值时,即完成了一个微血管树的生成。
本发明的有益效果主要表现在:生成式对抗网络能够根据所给的上一级分叉生成出符合原始数据分布的下一级分叉的假样本,采用二维数组的形式处理微血管分叉数据,能够有效的学习到不同节点数量的分支结构,再通过生成微血管分叉的同时进行微血管树拼接的迭代处理方式,最后生成出与真实微血管分叉树在形态和拓扑结构上误差极小的血管树。
附图说明
图1为本发明一种基于生成对抗网络的血管树生成方法的流图。
图2为一个分叉对的示意图
图3为生成对抗网络整体结构示意图。
图4为生成器网络结构图。
图5为判别器网络结构图。
图6为生成微血管树流程图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。本发明实例中选取了小鼠肠系膜血管网络数据集。但本发明不仅限于此数据集,可适用于不同的血管网络。
举例来说,本实例中,选用的小鼠肠系膜血管网络由微动脉树、微静脉树以及毛细血管组成,而微血管树又是由许多微血管分叉级级生长而成。每个微血管分叉有三个分支(图2),而每个分支又由不同数量的节点坐标和管径信息构成。
参照图1-图6,一种微血管树结构的人工生成方法,包括以下步骤:
a.从血管网络中提取微血管分叉对数据,并对数据进行预处理;其中,所述微血管分叉对数据为一组母系和子系血管分叉数据,其中,母系血管分叉数据包括母系血管分叉的母系主分支节点坐标及管径信息、母系左分支节点坐标及管径信息、母系右分支节点坐标及管径信息,子系血管分叉数据为母系血管分叉数据中的一分支为主分支的血管分叉节点坐标及管径信息,包括子系主分支节点坐标及管径信息、子系左分支节点坐标及管径信息、子系右分支节点坐标及管径信息。
b.基于U-Net和深度卷积神经网络构造生成器和判别器;其中,生成器采用U-Net结构,输入为分叉对的母系血管分叉数据,输出为生成的子系血管分叉数据;判别器的输入为步骤a得到的真实的微血管分叉对和由生成器生成的假的子系血管分叉与真实母系血管分叉组成的分叉对,用于区分输入数据是来自真实样本还是生成器生成的假样本。
c.基于条件生成对抗网络对生成器和判别器进行训练;
d.获取待生成微血管树的入口分叉,根据训练好的生成器生成微血管分叉的同时进行微血管分叉树的生长。
作为一优选方案,所述步骤a中,所述数据预处理包括以下步骤:
a1从原始微血管网络中分离出微动脉树。并将提取到的每个微血管分叉的节点坐标及管径存储到一个二维数组array中,其中array[0,:]存储主分支节点x坐标,array[1,:]存储左分支节点x坐标,array[2,:]存储右分支节点x坐标,array[3,:]存储主分支节点y坐标,array[4,:]存储左分支节点y坐标,array[5,:]存储右分支节点y坐标,array[6,:]存储主分支管径信息,array[7,:]存储左分支管径信息,array[8,:]存储右分支管径信息。其中,array[i,:]表示array数组第i行,所有列;
a2分别对微血管分叉坐标值和管径值进行归一化,使它们的数值在0-1之间,以保留微血管分叉的相对大小信息,所述归一化公式为:
normValue=(value-min)/(max-min)
其中,value表示管径值或坐标节点,min表示数据集中管径或节点坐标的最小值,max表示数据集中管径或节点坐标的最大值;
另外,可以在0°~360°范围内,对存储在数组array中的微血管分叉树,每次增加α度旋转,对数据进行扩增,所述旋转公式如下:
x
y
其中,x
a3由于每段微血管分支中包含的子节点数目不同,造成数组array中各行的列数不统一,为此,在数组中每一行坐标和管径数据后补0,统一构成一个9×N的矩阵,N为微血管分支最多包含的子节点数量;
a4将数组中array[0,:]~array[5,:]中开始补零位置的索引记录下来,分别对应的在array[6,:]~array[8,:]记录下来的索引处将0置为1;
a5在数组中增加array[9,:],同时都用0进行填充,使矩阵大小变为10×N;
a6将数组变为列表,在列表array中的微血管分叉中挑选成对数据,母血管分叉作为匹配分叉,统一把匹配的分支放到左分支位置,在数据集中对该分支进行匹配,若匹配到另一个分叉中含有相同分支且该分叉与匹配分叉不相同,则判定为子血管分叉,这两个分叉组合在一起则为一个完整的分叉对;图2所示即为一个分叉对的可视化图像。
a7将提取到的分叉对节点坐标及管径存储到一个二维数组array中,其中array[0,:]存储母系主分支节点x坐标,array[1,:]存储母系左分支节点x坐标,array[2,:]存储母系右分支节点x坐标,array[3,:]存储母系主分支节点y坐标,array[4,:]存储母系左分支节点y坐标,array[5,:]存储母系右分支节点y坐标,array[6,:]存储母系主分支管径信息,array[7,:]存储母系左分支管径信息,array[8,:]存储母系右分支管径信息,array[9,:]都用0填充,array[10,:]存储子系主分支节点x坐标,array[11,:]存储子系左分支节点x坐标,array[12,:]存储子系右分支节点x坐标,array[13,:]存储子系主分支节点y坐标,array[14,:]存储子系左分支节点y坐标,array[15,:]存储子系右分支节点y坐标,array[16,:]存储子系主分支管径信息,array[17,:]存储子系左分支管径信息,array[18,:]存储子系右分支管径信息其中,array[19,:]都用0填充,array[i,:]表示array数组第i行,所有列,统一构成一个20×N的矩阵,N为微血管分支最多包含的子节点数量。
通过以上步骤,可以将原始微血管分叉数据处理为可输入至生成对抗网络的形式。
作为一优选方案,所述步骤b中,基于深度卷积神经网络构造由生成器和判别器组成的U-Net条件生成对抗网络,具体包括以下步骤:
b1生成器网络使用U-Net结构的深度卷积神经网络模型进行构造,其输入为真实分叉对的上一级母系血管分叉,设置的深度卷积神经网络模型的层数为10层,其中前5层都为卷积层,后5层为反卷积层,最后输出节点个数为10×N;
b2判别器的网络同样使用深度卷积神经网络模型进行构造。其输入为步骤a得到的真实的微血管分叉对和由生成器生成的假的下级分叉与真实上级分叉组成的分叉对,输入的矩阵大小为10×N×2。设置深度卷积神经网络模型的层数为5层,其中前4层为卷积层,最后一层为输出层,输出层的节点数为1。本实施例中设计的生成器G和判别器D分别如图3,4所示。
进一步,所述步骤c中,基于U-Net条件生成对抗网络,生成器根据上级分叉来生成符合原始数据分布的假样本,判别器用来区分输入数据是来自真实样本还是生成器生成的假样本,通过损失函数的进行博弈从而达到平衡状态,训练过程具体包括以下步骤:
c1从微血管分叉数据中选取1个分支管径平均值最大的微血管分叉作为待生成的血管树的入口分叉,即上级母系血管分叉,将该样本作为生成器的输入,生成下级子系血管分叉;
c2将该生成的下级子系血管分叉与上级母系血管分叉进行拼接,作为假的分叉对输入到判别器中;
c3对于入口分叉,将数据集中该血管分叉作为上级母系血管分叉的分叉对提取出来,作为真实的分叉对,通过判别器将真假分叉对进行比较,通过损失函数的进行博弈;
c4将入口分叉的真实下一级子系血管分叉又作为下一轮生成器的训练样本输入,此时下级子系血管分叉变为上级母系血管分叉,生成对应的下级子系血管分叉;
c5重复步骤c2-c4,逐级完成分叉的生成,直到管径值小于一定阈值或递归次数大于指定值时,即完成了一轮由上一级微血管分叉生成下一级微血管分叉的迭代生成训练。
其中,损失函数为:
其中:
L
L
L
通过以上步骤,判别器则可以提取输入数据的特征,训练的生成器能够通过上一级微血管分叉数据生成符合原始数据分布的下一级微血管分叉。
进一步,所述步骤d中,生成微血管树流程图如图6所示,包括以下步骤:
d1从待生成微血管树中提取1个分支管径平均值最大的微血管分叉作为待生成的血管树的入口分叉,即微血管树的第0级分叉,并把该入口分叉作为上级母系血管分叉,将其输入训练好的生成器,生成1个下级的子系血管分叉。
d2将生成的子系微血管分叉主分支的端点平移至上一级母系血管分叉结点结点位置,然后以上一级母系血管分叉结点位置为原点,对的子系血管分叉进行旋转,使其主分支与x轴正方向夹角和上级分叉的生长分支与x轴正方向夹角相同。再将上下级分叉进行拼接,生长成为一级分叉树,坐标平移计算方式如下:
newArray[0:3,:]=array[0:3,:]-(endX-nodeX)
newArray[3:5,:]=array[3:5,:]-(endY-nodeY)
其中array[0:3,:]表示平移之前,子系血管分叉主分支与子分支的x坐标,newArray[0:3,:]表示平移之后,子系血管分叉主分支与子分支的x坐标;array[3:5,:]表示平移之前,子系血管分叉主分支与子分支的y坐标,newArray[3:5,:]表示平移之后子系血管分叉主分支与子分支的y坐标,(endX,endY)表示的是子系血管分叉主分支的端点,(nodeX,nodeY)表示的是母系血管分叉的结点;
对匹配微血管分叉顺时针旋转,计算公式如下:
x'=(x-nodeX)cosθ+(y-nodeY)sinθ+nodeX
y'=(y-nodeY)cosθ-(x-nodeX)sinθ+nodeY
其中,x和y分别为平移之后子系血管分叉坐标,x’和y’分别为x和y绕(nodeX,nodeY)顺时针旋转之后微血管分叉坐标值,θ表示计算出来的上级分叉的生长分支与x轴正方向夹角;
d3将这个生成的下级子系血管分叉作为下一轮生成器的训练样本输入,此时下级子系血管分叉变为上级母系血管分叉,生成对应的下一级子系血管分叉,即第2级分叉。
d4同时将该第2级分叉与d2完成的一级分叉树匹配拼接成为二级分叉树。
d5重复步骤d2-d4完成下一级微血管分叉的生成和下一级微血管分叉树的匹配连接,直到管径值小于一定阈值或递归次数大于指定值时,即完成了一个微血管树的生长。
通过以上步骤,可以生成出与真实微血管树在形态和拓扑结构上相似的微血管树。
本发明的有益效果主要表现在:条件生成式对抗网络能够根据所给的上一级分叉生成出符合原始数据分布的下一级分叉的假样本,采用二维数组的形式处理微血管分叉数据,能够有效的学习到不同节点数量的分支结构,再通过生成微血管分叉和拼接微血管树的迭代处理方式,最后生成出与真实微血管分叉树在形态和拓扑结构上误差极小的血管树。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法把所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围。
机译: 基于改进的条件生成对抗网络的绝缘子分割方法
机译: 基于条件生成对抗网络和相关设备的图像合成图像的方法
机译: 基于条件生成对抗网络的实时图像风格转移方法