1.本发明涉及计算机视觉领域,具体涉及一种基于深度学习和各向异性活动轮廓的图像分割方法。
背景技术:2.基于深度学习的图像分割方法和基于测地线主动轮廓的图像分割方法有各自的优点,所以可以采用将上述两种方法的优点结合的方式,来进行图像分割,提高模型的分割准确性。在2020年提出了深度学习(网络结构:v-net)和经典的测地线主动轮廓模型相结合(参考文献:ma j,he j,yang x.learninggeodesic active contours for embedding object global information insegmentation cnns[j].ieee transactions on medical imaging,2020,pp(99).) 的方法来分割图像。该方法是在原来的网络结构(所选用的网络结构:v-net) 的基础上,加入残差模块,并在网络结构的最后一层生成一个经过水平集函数处理过的概率图。并将测地线主动轮廓模型设计成网络的损失函数,再加入dice 和l1两个辅助的损失函数训练网络,来提高图像分割的准确性。但是上述方法中,基于测地线主动轮廓模型的损失函数存在缺点,没有结合图像的各向异性和非对称的特征等因素。
技术实现要素:[0003]
本发明为了克服以上技术的不足,提供了一种提高图像的分割准确性,减少图像分割的有异常值和分割曲线容易发生泄漏问题的图像分割方法。
[0004]
本发明克服其技术问题所采用的技术方案是:
[0005]
一种基于深度学习和各向异性活动轮廓的图像分割方法,包括如下步骤:
[0006]
a)读取图像数据存储的路径,读取医学图像数据对应的医生手动分割出来感兴趣的区域做标集的路径作为标准的分割的路径,将路径对应的医学图像划分为训练集traini和测试集vali,使用pytorch中的dataset抽象类将医学图像和标准的分割封装起来;
[0007]
b)对封装后的医学图像和标准的分割进行数据的动态增强;
[0008]
c)设置依次由编码路径、中间路径及解码路径构成的网络结构;
[0009]
d)计算损失函数l;
[0010]
e)采用adam优化算法,根据损失函数l使用反向传播来调整步骤c)中的网络结构的权重weight和偏置量bias;
[0011]
f)判断网络训练结果,在计算机中设置一个保存评价最优指标的变量,保存最优结果的网络权重weight及其偏置量bias,将分割结果最优的网络权重weight 及其偏置量bias保存到ph文件中;
[0012]
g)重复步骤f)n次,将训练集traini和测试集vali分别放入优化后的网络结构中训练并保存网络结构机器权重;
[0013]
h)在进行分割医学图像时,加载步骤g)中保存的网络结构及其权重,然后从测试
集vali中加载一张图像,将图像放进网络结构中,最终得到图像的分割结果,将分割结果保存成jpg格式的文件。
[0014]
进一步的,步骤a)中通过python中pydicom模块读取图像数据存储的路径和。
[0015]
进一步的,步骤a)中按5:1的比例将医学图像划分为训练集traini和测试集vali。
[0016]
进一步的,步骤a)中将医学图像封装时将医学图像的像素修改为512*512。
[0017]
进一步的,步骤b)中使用python中的albumentations模块对管路操作后的医学图像进行仿射变换、修改图像亮度、修改图像对比度的动态增强操作。
[0018]
进一步的,步骤c)中的网络结构为:
[0019]
c-1)编码路径依次由第一编码层、第二编码层、第三编码层、第四编码层构成;第一编码层依次由第一卷积层、第二卷积层、池化层构成;第二编码层依次由卷积层、池化层构成;第三编码层依次由卷积层、池化层构成构成;第四编码层依次由卷积层、池化层构成;
[0020]
c-2)中间路径由卷积层构成;
[0021]
c-3)解码路径依次由第四解码层、第三解码层、第二解码层、第一解码层构成;第四解码层依次由反卷积层、卷积层构成;第三解码层依次由反卷积层、卷积层构成;第二解码层依次由反卷积层、卷积层构成;第一解码层依次由反卷积层、第一卷积层及第二卷积层构成。
[0022]
进一步的,步骤c-1)中第一编码层中的第一卷积层的卷积核大小设置为7*7, stride设置为1*1,padding设置为3,输出通道数设置为64,第一卷积层使用 batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第二卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,第一编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第一编码层输出的特征图像素大小为256*256,通道数为64;第二编码层中的卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为128,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第二编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第二编码层输出的特征图像素大小为128*128,通道数为128;第三编码层中的卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为 256,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu 函数,第三编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第三编码层输出的特征图像素大小为64*64,通道数为256;第四编码层中的卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为512,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第四编码层中的池化层使用最大池化层,池化窗口大小设置为 2*2,第四编码层输出的特征图像素大小为32*32,通道数为512;
[0023]
步骤c-1)中中间路径中的卷积层的卷积核大小设置为3*3,stride设置为1*1, padding设置为1,输出通道数设置为1024,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,中间路径输出的特征图像素大小为32*32,通道数为1024;
[0024]
步骤c-2)中第四解码层的反卷积层的卷积核大小设置为2*2,stride设置为 2*2,输出通道数设置为512,通过反卷积层将中间路径输出的特征图像素大小恢复到64*64,通道数为512,将恢复后的特征图与第四编码层输出的特征图进行融合,融合后的特征图像素
为64*64,通道数为1024,将融合后的特征图输入到第四解码层的卷积层中,卷积层的卷积核大小设置3*3,stride设置为1*1, padding设置为1,输出通道数设置为512,第四解码层输出的特征图像素大小为64*64,通道数为512;第三解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,输出通道数设置为512,通过反卷积层将第四解码层输出的特征图像素大小恢复到128*128,通道数为512,将恢复后的特征图与第三编码层输出的特征图进行融合,融合后的特征图像素为128*128,通道数为512,将融合后的特征图输入到第三解码层的卷积层中,卷积层的卷积核大小设置3*3, stride设置为1*1,padding设置为1,输出通道数设置为512,第三解码层输出的特征图像素大小为128*128,通道数为256;第二解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,输出通道数设置为256,通过反卷积层将第三解码层输出的特征图像素大小恢复到256*256,通道数为256,将恢复后的特征图与第二编码层输出的特征图进行融合,融合后的特征图像素为 256*256,通道数为256,将融合后的特征图输入到第二解码层的卷积层中,卷积层的卷积核大小设置3*3,stride设置为1*1,padding设置为1,输出通道数设置为128,第二解码层输出的特征图像素大小为64*64,通道数为128;第一解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,padding 设置为1,输出通道数设置为64,通过反卷积层将第二解码层输出的特征图像素大小恢复到512*512,通道数为64,将恢复后的特征图与第一编码层输出的特征图进行融合,融合后的特征图像素为512*512,通道数为128,将融合后的特征图依次输入到第一解码层的第一卷积层和第二卷积层中,第一卷积层的卷积核大小设置3*3,stride设置为1*1,padding设置为1,输出通道数设置为512,第二卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为1,第一解码层输出的特征图像素大小为512*512,通道数为1;编码路径、中间路径及解码路径中的各个卷积层的卷积使用pytorch中的conv2d 进行编码,解码路径中的各个反卷积层使反卷积使用pytorch中的 convtranspose2d进行反卷积操作。
[0025]
进一步的,步骤d)包括如下步骤:
[0026]
d-1)通过公式
[0027][0028]
计算得到损失函数l
ac
,式中φ(x)为水平集函数,x为网络结构输出的特征图上的点,s为网络结构输出的特征图中的区域,为区域s的边界,为点x到边界的欧式距离,为水平集函数的梯度,为水平集函数梯度的模值,ω为预测图像的区域,δ
ε
为光滑的狄拉克函数,ε为参数,ε>
0,v(x)为向量场,0,v(x)为向量场,为动态增强后的医学图像的梯度,为动态增强后的医学图像的梯度模值,gi为图像边缘指示器函数,b为常数,b>0,g
σ
为高斯核函数,g
∞
为gi的最大值,α为常数,α>0,f1为动态增强后的医学图像的轮廓内部的高斯混合概率密度函数,i为动态增强后的医学图像的二维数组集合,为动态增强后的医学图像的轮廓内部的图像数据的均值,为动态增强后的医学图像的轮廓内部的图像数据的协方差矩阵,为第j个高斯概率分布量,k为高斯概率分布量的总数,为第j个高斯概率分布量的加权值,f2为动态增强后的医学图像的轮廓外部的高斯混合概率密度函数,函数,为动态增强后的医学图像的轮廓外部的图像数据的均值,为动态增强后的医学图像的轮廓外部的图像数据的协方差矩阵,为第j个高斯概率分布量,k为高斯概率分布量的总数,为第j个高斯概率分布量的加权值,h
ε
(x)为光滑heaviside函数, y为变量,y=φ(x)或y=(1-φ(x));
[0029]
d-2)通过公式计算得到dice损失函数,式中n 为动态增强后的医学图像的像素的数量,si为网络结构输出的特征图中的第i个像素点的像素值,gi为标准的分割的第i个像素点的像素值;
[0030]
d-3)通过公式l1=||φ-φ
gt
||计算得到绝对值损失函数,||
·
||为l1范数,φ
gt
为标准的分割的水平集函数,x0为标准的分割中的点,s0为标准的分割的区域,为区域s0的边界,为点x0到边界的欧式距离。
[0031]
d-4)通过公式l=l
dice
+l1+λl
ac
计算得到损失函数l,式中λ为常数。进一步的,步骤f)中使用绝对体积差、平均对称的表面距离、豪斯多夫距离、 dice系数四种评价指标判断网络训练结果。
[0032]
优选的,步骤g)中n取值为5。
[0033]
本发明的有益效果是:考虑了图像边缘的各向异性和非对称特征,将测地线主动轮廓模型作为损失函数的形式融入到v-net网络中,首先对训练集的数据动态增强,即在训练网络时,输入训练的一份数据进行多种变化,如。将增强后的数据送入网络训练,使用新定义的损失函数l来进行回归,优化方法adam优化方法。训练集数据训练完成后保存网络参数,进行图像分割时先加载网络参数,然后直接对图像进行分割,得到结果,这种结合了测地主动轮廓的损失函数对医学图像分割相对于只有深度学习的网络分割医学图像更稳健。
附图说明
[0034]
图1为本发明的训练集数据训练网络的流程图;
[0035]
图2为本发明的测试集数据查看网络分割效果的流程图。
具体实施方式
[0036]
下面结合附图1、附图2对本发明做进一步说明。
[0037]
为了弥补测地线主动轮廓损失函数的不足,设计了一种新的主动轮廓损失函数。该损失函数结合了边缘的各向异性和非对称的特征等因素,然后添加了混合高斯模型。进一步提高图像的分割准确性,减少图像分割的有异常值和分割曲线容易发生泄漏的问题。具体的,本基于深度学习和各向异性活动轮廓的图像分割方法,这样可以按照索引查询医学图像和标准的分割,包括如下步骤:
[0038]
a)读取图像数据存储的路径,读取医学图像数据对应的医生手动分割出来感兴趣的区域做标集的路径作为标准的分割的路径,将路径对应的医学图像划分为训练集traini和测试集vali,使用pytorch中的dataset抽象类将医学图像和标准的分割封装起来。
[0039]
b)对封装后的医学图像和标准的分割进行数据的动态增强。
[0040]
c)设置依次由编码路径、中间路径及解码路径构成的网络结构,收入网络结构的图像像素大小为512*512,通道数为1。
[0041]
d)计算损失函数l。
[0042]
e)采用adam优化算法,调整优化器的参数,其中学习率参数采用的策略是模拟退火算法来寻找最优的学习率参数,其余的参数采用默认参数。根据损失函数 l使用反向传播来调整步骤c)中的网络结构的权重weight和偏置量bias。
[0043]
f)判断网络训练结果,在计算机中设置一个保存评价最优指标的变量,保存最优结果的网络权重weight及其偏置量bias,将分割结果最优的网络权重weight 及其偏置量bias保存到ph文件中。
[0044]
g)重复步骤f)n次,将训练集traini和测试集vali分别放入优化后的网络结构中训练并保存网络结构机器权重。
[0045]
h)在进行分割医学图像时,加载步骤g)中保存的网络结构及其权重,然后从测试集vali中加载一张图像,将图像放进网络结构中,最终得到图像的分割结果,将分割结果保存成jpg格式的文件,方便以后查看。
[0046]
提供了一种端到端的医学图像分割方法,考虑了图像边缘的各向异性和非对称特征,将测地线主动轮廓模型作为损失函数的形式融入到v-net网络中,首先对训练集的数据
动态增强,即在训练网络时,输入训练的一份数据进行多种变化,如。将增强后的数据送入网络训练,使用新定义的损失函数l来进行回归,优化方法 adam优化方法。训练集数据训练完成后保存网络参数,进行图像分割时先加载网络参数,然后直接对图像进行分割,得到结果,这种结合了测地主动轮廓的损失函数对医学图像分割相对于只有深度学习的网络分割医学图像更稳健。
[0047]
实施例1:
[0048]
步骤a)中通过python中pydicom模块读取图像数据存储的路径和标准的分割的路径。
[0049]
实施例2:
[0050]
步骤a)中按5:1的比例将医学图像划分为训练集traini和测试集vali。
[0051]
实施例3:
[0052]
步骤a)中将医学图像封装时将医学图像的像素修改为512*512。
[0053]
实施例4:
[0054]
步骤b)中使用python中的albumentations模块对管路操作后的医学图像进行仿射变换、修改图像亮度、修改图像对比度对数据集进行数据的动态增强操作。
[0055]
实施例5:
[0056]
步骤c)中的网络结构为:
[0057]
c-1)编码路径依次由第一编码层、第二编码层、第三编码层、第四编码层构成;第一编码层依次由第一卷积层、第二卷积层、池化层构成;第二编码层依次由卷积层、池化层构成;第三编码层依次由卷积层、池化层构成构成;第四编码层依次由卷积层、池化层构成。
[0058]
c-2)中间路径由卷积层构成。
[0059]
c-3)解码路径依次由第四解码层、第三解码层、第二解码层、第一解码层构成;第四解码层依次由反卷积层、卷积层构成;第三解码层依次由反卷积层、卷积层构成;第二解码层依次由反卷积层、卷积层构成;第一解码层依次由反卷积层、第一卷积层及第二卷积层构成。
[0060]
实施例6:
[0061]
步骤c-1)中第一编码层中的第一卷积层的卷积核大小设置为7*7,stride设置为1*1,padding设置为3,输出通道数设置为64,使用大卷积核来提取更大范围的特征,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第二卷积层的卷积核大小设置为3*3,stride设置为1*1,padding 设置为1,使用一个较小的卷积层提取特征,第一编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第一编码层输出的特征图像素大小为256*256,通道数为64;第二编码层中的卷积层的卷积核大小设置为3*3,stride设置为 1*1,padding设置为1,输出通道数设置为128,第一卷积层使用batchnorm2d 将数据归一化,第一卷积层激活函数采用relu函数,第二编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第二编码层输出的特征图像素大小为 128*128,通道数为128;第三编码层中的卷积层的卷积核大小设置为3*3,stride 设置为1*1,padding设置为1,输出通道数设置为256,第一卷积层使用 batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第三编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第三编码层输出的特征图像素大小为64*64,通道数为256;第四编码层中的卷积层的卷积核大
小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为512,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,第四编码层中的池化层使用最大池化层,池化窗口大小设置为2*2,第四编码层输出的特征图像素大小为32*32,通道数为512。
[0062]
步骤c-1)中中间路径中的卷积层的卷积核大小设置为3*3,stride设置为1*1, padding设置为1,输出通道数设置为1024,第一卷积层使用batchnorm2d将数据归一化,第一卷积层激活函数采用relu函数,中间路径输出的特征图像素大小为32*32,通道数为1024。
[0063]
步骤c-2)中第四解码层的反卷积层的卷积核大小设置为2*2,stride设置为 2*2,输出通道数设置为512,通过反卷积层将中间路径输出的特征图像素大小恢复到64*64,通道数为512,将恢复后的特征图与第四编码层输出的特征图进行融合,融合后的特征图像素为64*64,通道数为1024,将融合后的特征图输入到第四解码层的卷积层中,对特征图进行一次卷积操作,减少特征图的通道数,卷积层的卷积核大小设置3*3,stride设置为1*1,padding设置为1,输出通道数设置为512,第四解码层输出的特征图像素大小为64*64,通道数为512;第三解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,输出通道数设置为512,通过反卷积层将第四解码层输出的特征图像素大小恢复到 128*128,通道数为512,将恢复后的特征图与第三编码层输出的特征图进行融合,融合后的特征图像素为128*128,通道数为512,将融合后的特征图输入到第三解码层的卷积层中,对特征图进行一次卷积操作,减少特征图的通道数,卷积层的卷积核大小设置3*3,stride设置为1*1,padding设置为1,输出通道数设置为512,第三解码层输出的特征图像素大小为128*128,通道数为256;第二解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,输出通道数设置为256,通过反卷积层将第三解码层输出的特征图像素大小恢复到 256*256,通道数为256,将恢复后的特征图与第二编码层输出的特征图进行融合,融合后的特征图像素为256*256,通道数为256,将融合后的特征图输入到第二解码层的卷积层中,对特征图进行一次卷积操作,减少特征图的通道数,卷积层的卷积核大小设置3*3,stride设置为1*1,padding设置为1,输出通道数设置为128,第二解码层输出的特征图像素大小为64*64,通道数为128;第一解码层的反卷积层的卷积核大小设置为2*2,stride设置为2*2,padding 设置为1,输出通道数设置为64,通过反卷积层将第二解码层输出的特征图像素大小恢复到512*512,通道数为64,将恢复后的特征图与第一编码层输出的特征图进行融合,融合后的特征图像素为512*512,通道数为128,将融合后的特征图依次输入到第一解码层的第一卷积层和第二卷积层中,对特征图进行一次卷积操作,减少特征图的通道数,第一卷积层的卷积核大小设置3*3,stride设置为 1*1,padding设置为1,输出通道数设置为512,第二卷积层的卷积核大小设置为3*3,stride设置为1*1,padding设置为1,输出通道数设置为1,第一解码层输出的特征图像素大小为512*512,通道数为1;编码路径、中间路径及解码路径中的各个卷积层的卷积使用pytorch中的conv2d进行编码,解码路径中的各个反卷积层使反卷积使用pytorch中的convtranspose2d进行反卷积操作。
[0064]
实施例7:
[0065]
步骤d)包括如下步骤:
[0066]
d-1)通过公式
[0067][0068]
计算得到损失函数l
ac
,式中φ(x)为水平集函数,x为网络结构输出的特征图上的点,s为网络结构输出的特征图中的区域,为区域s的边界,为点x到边界的欧式距离,为水平集函数的梯度,为水平集函数梯度的模值,ω为预测图像的区域,δ
ε
为光滑的狄拉克函数,ε为参数,ε>0,v(x)为向量场,v(x)为向量场,为动态增强后的医学图像的梯度,为动态增强后的医学图像的梯度模值,gi为图像边缘指示器函数,b为常数,b>0,g
σ
为高斯核函数,g
∞
为gi的最大值,α为常数,α>0,f1为动态增强后的医学图像的轮廓内部的高斯混合概率密度函数,i为动态增强后的医学图像的二维数组集合,为动态增强后的医学图像的轮廓内部的图像数据的均值,为动态增强后的医学图像的轮廓内部的图像数据的协方差矩阵,为第j个高斯概率分布量,k为高斯概率分布量的总数,为第j个高斯概率分布量的加权值,f2为动态增强后的医学图像的轮廓外部的高斯混合概率密度函数,的高斯混合概率密度函数,为动态增强后的医学图像的轮廓外部的图像数据的均值,为动态增强后的医学图像的轮廓外部的图像数据的协方差矩阵,为第j个高斯概率分布量,k为高斯概率分布量的总数,为第j个高斯概率分布量的加权值,h
ε
(x)为光滑heaviside函数, y为变量,y=φ(x)或y=(1-φ(x))。关于采用的活动轮廓能量函数l
ac
中的第一项,考虑待处理图像梯度的各向异性以及非对称
特性。向量场v包含了图像梯度的方向特征,当向量v的方向和轮廓的法向量具有相反方向时,的值很小。反之则很大。这使得我们的模型可以充分利用如下的梯度一致性的假设:沿着待分割区域的边界,图像的梯度方向指向待分割区域的内部。在实际应用中,非常多的图像符合上述梯度方向的一致性的假设。
[0069]
d-2)通过公式计算得到dice损失函数,式中n 为动态增强后的医学图像的像素的数量,si为网络结构输出的特征图中的第i个像素点的像素值,gi为标准的分割的第i个像素点的像素值。
[0070]
d-3)通过公式l1=||φ-φ
gt
||计算得到绝对值损失函数,||
·
||为l1范数,φ
gt
为标准的分割的水平集函数,x0为标准的分割中的点,s0为标准的分割的区域,为区域s0的边界,为点x0到边界的欧式距离。
[0071]
d-4)通过公式l=l
dice
+l1+λl
ac
计算得到损失函数l,式中λ为常数。在训练的前100轮中,将λ设为零,因为这样可以快速的进行图像的初始化分割,之后将λ的值设为l
dice
+l1与l
ac
的比值,以确保不同损失函数项之间数值大小的处在同一水平。
[0072]
实施例8:
[0073]
步骤f)中使用绝对体积差(relative absolute volume difference)、平均对称的表面距离(average symmetric surface distance)、豪斯多夫距离 (hausdorff distance)、dice(dice coefficient)系数四种评价指标判断网络训练结果。
[0074]
实施例9:
[0075]
步骤g)中n取值为5。
[0076]
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。