APP下载

基于卷积神经网络的肺表面纹理合成①

2019-02-15陈国栋潘冠慈

关键词:纹理损失卷积

陈国栋, 潘冠慈, 田 影

(福州大学物理与信息工程学院,福建 福州 350116)

0 引 言

虚拟手术又称手术仿真,是虚拟现实技术在医学领域中的应用。在虚拟手术场景中,要建立真实的视觉反馈系统,除了要正确逼真地进行器官模型建模外,还要通过人体器官的各种纹理细节来丰富其表现特征[1]。

基于样图的纹理合成技术在过去二十年一直是研究的热点。传统的算法主要以马尔科夫随机场(MRF)为模型通过像素点或纹理快的查找拼接来完成。2012年ImageNet比赛结果让深度学习成为学术界和工业界研究的热点。2015年Gatys[2]等人提出基于卷积神经网络(CNN)的全新纹理合成技术。该方法相对于普通的参数法最大的突破之一就是降低了对复杂滤波器的设计。图像中的“深”层特征通过多层已经训练好的神经网络隐式地学习从而解决复杂的任务。文章提出的算法基于Gatys的研究理论并结合2017年Cohen[3]等人提出的纹理深度相关性理论进行深入研究,在神经网络的高层引入马尔科夫随机场(MRF)以合成具有全局结构特征以及局部和非局部结构特征相结合的肺表面纹理图像。

1 卷积神经网络VGG模型

该算法是基于CNN来合成肺表面纹理图像,使用已经训好的VGG-19[4]网络的16个卷积层和5个池化层的特征空间,并且去掉了最后3个全连接层。输入图像的大小为224×224,网络架构基于如下两类基本运算:

(1)卷积滤波器大小为3×3×k,其中k是输入特征图的数量。卷积的步长为1以确保输出特征图和输入特征图的空间维度一样。

(2)不重叠2×2区域的池化层,采用平均池化来对特征图进行降采样。这两类运算交替进行。

2 基于VGG-19的纹理生成模型

2.1 合成具有非局部结构特征的纹理图

(1)

其中q和m是对应特征图的位置索引。则第l层的Gram矩阵可表示为:

(2)

Gram矩阵表示该层各个维度自身的特征(对角线)以及各个维度之间的关系,最终生成的{G1,G2,…Gl}是整个CNN网络产生的所有层关系矩阵的集合,该集合表示纹理图的局部结构特征。第l层对总损失函数的贡献可表示为:

(3)

(4)

(5)

图1 卷积操作得到特征图

根据肺表面纹理的特征,从视觉上可以直观的得出该纹理具有一定的相似性,即在全局部结构上保持了纹理的规律性。Gram矩阵定义了特征间的相关性,即图像的局部结构信息,而图像的非局部结构信息则用特征内的相关性来表示,以下给出不同层特征内的深度相关矩阵的定义,其作用是引导纹理合成过程的优化以保持整体结构的规律性。

(6)

Rl,n∈Ql×Ml,公式(6)说明了深度相关矩阵是将垂直移动i个像素,水平移动j个像素,并在重叠区域上应用逐点乘法,最后再由重叠区域总量的倒数加权求和。其中wi,j的定义如下:

wi,j=[(Q-|i|)(M-|j|)]-1

(7)

基于上述深度相关矩阵,可以定义第l层特征内的相关性损失函数Dcor:

(8)

计算出该损失函数对该层特征矩阵的偏导数:

(9)

其中*表示卷积。与基于Gram矩阵定义的损失函数类似,通过计算各层基于DCor的损失函数,最后得出基于DCor的总损失函数:

(10)

图2 左边为输入样图,右边为输出结果

Gram矩阵本质上属于像素间的一一对应,计算量相当大。为提高算法效率,仅在pool1,pool2层计算Gram矩阵。在网络的更高层(relu3_1和relu4_1)引入马尔科夫随机场(MRF),将特征图分成若干图像块,寻找图像块之间的匹配,由于不再是像素上的一一对应,计算效率显著提高。MRF对于图像高层语义的空间布局限制起到了关键作用,相当于在DCor相关项的约束下进行二次约束。

2016年Li等人[5]在基于MRF的图像风格转移上给出了基于MRF的损失函数,定义如下:

(11)

(12)

2.1.1 合成多样性肺表面纹理图

长期抽烟或是生活在雾霾地区肺表面纹理会发生相应变化,具体可表现为肺表面斑点状纹理增多且大规模出现黑色斑块纹理。当肺出现病变时也会出现相应的斑点或斑块纹理,且局部特征更为突出。在2.1的基础上加入两个新的特征损失表达式,以合成多样性的肺表面纹理图。为了增加纹理的局部细节即表面斑点状纹理图定义如下l层的损失函数:

(13)

(14)

总损失函数为:

(15)

随着病变程度加深肺表面纹理黑色斑块进一步扩大,随机分布在肺表面,且纹理边缘变得更明显,常见的纹理状态可呈白色糜烂状或边缘黑色加粗,因此根据纹理边缘的特点,可定义一种边缘保留的损失函数。2016年Johnson等人[6]在图像超分辨率重建中提出一种平滑度损失函数,并将其定义为总变差项,该项会使纹理过度平滑以至于边缘被弱化。2017年Cohen等人[3]在其启发下提出一种保留边缘的损失函数。

(16)

其中σ为图像标准差,δi,δj为特征图上相邻的索引(4邻域像素)。根据纹理表面病变的特点,为了突出局部特征,在特征图的邻域像素中引入局部标准差(LSD),LSD滤波器的大小为3×3,与卷积滤波器的大小保持一致。σδ定义为:

(17)

(18)

2.1.1.1 肺表面纹理合成综述

(19)

3 实验结果

算法对规定的网络层使用指定的损失函数,实验中具体的超参数如表1所示,算法运行时间等数据如表2所示,总损失函数E在迭代过程中的误差变化如图5所示。BP算法中使用随机梯度下降进行参数优化,并用有界约束的BFGS[7]算法进行测试。图像I被初始化为标准差为σN=1×10-3的高斯白噪声。图4给出了基于该算法得出的目标纹理图像,其中4.1是样本纹理图像,图像来自网络,其中黑色斑块为常年抽烟所致,病变主要体现在黑色斑块不规则分布且颜色深浅不一,中间框图部分为图像残缺部分,但在4.2-4.5的输出图像中不仅残缺部分得到修复,并且图像的整体纹理结构并没被改变。4.2、4.3、4.4、4.5分别是γ=-0.75×10-4,γ=-0.75×10-3,γ=-0.75×10-5,γ=-0.75×10-2时的目标纹理图像,从4.4与4.5的对比可以看出γ取较大值时对纹理边缘的影响较大,在整体结构保持大致相同的情况下(EDCor和MRF约束),白色方框处可以看出纹理的局部细节得到增强,带有病灶的纹理边缘更明显(EDiv与ESmooth作用)。

图3 算法框图

损失函数对应层层权重损失权重EGramPool10.50.5EGramPool20.50.5EDCorPool210.5×10-4EDivPool21-1×10-4ESmoothConv11-0.75×10-2

表2 算法运行效率对比

图4 γ取不同值的结果

图5 总损失函数误差

实验基于Matlab2015进行编程,使用MatConvnet[8]来搭建CNN框架实现本课题的算法。硬件环境主要是NVIDIA GeForce GTX 750,8G RAM,Intel I7-4790。

猜你喜欢

纹理损失卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
基于BM3D的复杂纹理区域图像去噪
卷积神经网络的分析与设计
从滤波器理解卷积
使用纹理叠加添加艺术画特效
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
TEXTURE ON TEXTURE质地上的纹理
消除凹凸纹理有妙招!