新编数字图像处理技术及应用(修订版)课件 第12章 基于深度学习的图像处理综合应用_第1页
新编数字图像处理技术及应用(修订版)课件 第12章 基于深度学习的图像处理综合应用_第2页
新编数字图像处理技术及应用(修订版)课件 第12章 基于深度学习的图像处理综合应用_第3页
新编数字图像处理技术及应用(修订版)课件 第12章 基于深度学习的图像处理综合应用_第4页
新编数字图像处理技术及应用(修订版)课件 第12章 基于深度学习的图像处理综合应用_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章基于深度学习的图像处理综合应用本章内容CNN的deepnetworkdesigner实现

1基于Python的图像重建2学习目标1.会基于MATLAB搭建CNN。2.会基于Python设计人工神经网络。本章内容(概念图)大数据时代和计算机软硬件的迅猛发展,使得基于数据驱动的数字图像处理正在逐渐成为人们的研究热点,其中基于深度学习的图像增强、图像重建、图像分割、图像融合、图像识别等均已有一些突破性成果。基于MATLAB和基于Python均有相当多的开源框架和代码用于图像处理,本章摘取一些以飨读者。首先,介绍一个基于MATLAB的、数字图像处理中最常用的神经网络一一深度卷积神经网络(ConvolutionalNeuralNetwork,CNN)的搭建方法;其次,基于Python以U-Net为基本架构介绍一个基于深度学习的图像重建方法。需要说明的是,任何深度学习都需要大量的数据、一定配置的软硬件环境,建议读者在学习本章前,先配置好环境。12.1.1加载使用预训练的网络12.1CNN的deepnetworkdesigner实现

本书主要以MATLAB为工具进行编程仿真,这里不再赘述其安装与使用方法,下面直接开始CNN构建。MATLAB2019菜单栏“APP”下拉获得APP列表,从中选择用实现的具体功能。具体如图12.1所示。图12.1APP列表在图12.1的“机器学习和深度学习”中,双击深层网络设计器“DeepNetworkDesigner”,打开设计窗口,如图12.2所示。单击“导入”菜单,在“导入网络”对话框中选择需要的网络,如Alexnet等,如图12.3所示。导入网络后,工作区显示网络图结构,同时可以“分析”网络,显示网络各层的具体参数,如图12.4所示。图12.2DeepNetworkDesigner窗口图12.3导入网络对话框图12.4导入的网络结构图和参数12.1.2定制搭建网络结构当然,读者也可以自行设计网络,其过程类似搭积木。具体如下:(1)从图层库拖动模块到设计区进行连接“装配”。在设计过程中,可以显示或编辑网络层的参数,选中某一图层,右侧将显示该图层的详细参数,读者可以根据设计需求编辑各参数,实现特定的网络结构功能。图12.5为一个搭建的简单网络。图12.5搭建的简单网络(2)网络搭建完成后,为了检验网络连接的正确性,需要进行网络分析。单击“分析网络”工具,获得分析结果,包括各网络层的名称、类型、激活与可学习参数。如图12.6所示。12.6搭建好网络的参数(3)使用GESIGNER的导出功能生成代码,如图12.7所示。生成的网络架构代码存储在*.mlx文件中,输出Layer变量layers,暂存在工作区中,用于后续的网络训练。12.7导出功能生成代码Selflenet.mlx可用于创建深度学习网络架构,其主要内容如下(以层数为9、连接数为8创建层组)layers=[imageInputLayer([28281],"Name","imageinput")convolution2dLayer([33],6,"Name","conv_1","Padding","same")maxPooling2dLayer([55],"Name","maxpool_1","Padding","same")convolution2dLayer([33],16,"Name","conv_2","Padding","same")maxPooling2dLayer([22],"Name","maxpool_2","Padding","same")convolution2dLayer([11],120,"Name","conv_3","Padding","same")fullyConnectedLayer(84,"Name","fc")softmaxLayer("Name","softmax")classificationLayer("Name","classoutput")];如有必要,可用plot(layerGraph(layers))绘制所涉及的层,如图12.8所示。(4)训练网络。通常需要输入训练集训练设计好的网络,以使其学习到完成任务所需的参数。输入数据集往往需要预处理。以图像为例,可对不符合网络输入层要求的数据调整尺度与裁剪,感兴趣的读者可以参看MATLAB中有关深度学习中图像预处理的内容。图12.8

绘制层结果然后确定训练参数选项,如:options=trainingOptions('sgdm',...'MiniBatchSize',10,...'MaxEpochs',6,...'InitialLearnRate',1e-4,...'Shuffle','every-epoch',...'ValidationData',augimdsValidation,...'ValidationFrequency',6,...'Verbose',false,...'Plots','training-progress');trainedNet=trainNetwork(images,layers,options)更多说明可参看MATLAB中的相关内容。其中,

images为经过预处理后增强图像数据存储单元的输入图像,训练后的网络结果存储在trainedNet中。后续可以调用该网络进行分类预测。12.2基于Python的速采磁共振图像重建磁共振成像(MagneticResonanceImaging,MRI)因其出色的软组织对比度和灵活性已经成为多种疾病诊疗的重要手段。但是,它最主要的缺点是数据采集时间长。数据采集时间过长,不仅会给患者带来不适,而且检查费用较高,从而限制了其进一步推广和使用。为了缓解患者不适和提高MRI效率,近二十年来,在加速采集信号的情况下提高图像保真度一直是MRI领域的研究重点。现有的MRI加速方法包括并行成像和压缩感知(CompressedSensing,CS)。其中,并行成像的加速因子受到接收器线圈数量和位置的限制,不仅扫描仪的制造成本高,而且这种方法还会引入成像假象,目前遭遇到了高倍速采瓶颈。而传统的CS方法受低水平稀疏性制约,也不易做到高倍速采。随着深度学习在计算机视觉方面的一系列突破,基于深度神经网络的MRI图像重建方法已成为当前研究的热点。这种方法致力于为下一代MRI扫描仪研发提供算法模型,其思路是在傅里叶变换域(k空间)进行信号欠采样,以节省信号采集时间,然后利用人工神经网络重建出可以和现有全采样结果相媲美的MRI图像。本节介绍一种基于U-Net网络架构的MRI图像重建方法。12.2.1

U-Net网络架构卷积神经网络一直面临的困境有两个方面,一是没有足够的标注数据,二是使用的网络规模一直很小。过去卷积神经网络用于分类任务时,只能图像输入、标签输出,但是在许多视觉任务中,比如生物医学图像处理中,人们希望得到针对每个像素的分类结果,另外,获取大量的医学图像数据用于训练是不可能的。而U-Net结构能够解决上述问题,它包含一个用于捕捉语义的收缩路径和一个用于精准定位的对称扩展路径,只使用少量数据,就可以训练出一个端对端(图像输入、图像输出)网络。卷积神经网络的总体架构如图12.9所示。图中,表示重建图像,Y为标签图像,Loss为损失值。典型的应用型结构是在经典的全卷积网络(FCN)基础上改良后并广泛应用在医疗影像中的U-Net网络,其网络结构如图12.10所示。U-Net网络采用完全不同的特征融合方式——拼接,将特征在通道(Channel)维度拼接在一起,形成更厚的特征。而FCN融合时使用对应点相加,并不形成更厚的特征。图12.9卷积神经网络的总体架构图12.10

U-Net网络架构用反卷积方式,并与并与对应大小的下采样层连接,经过两次卷积后再反卷积,结构简单,因此对小样本量数据集效果较好。由图12.10可以看出,其网络结构非常清晰。如前所述,U-Net网络是一个经典的全卷积网络,即下采样后经过两次卷积后再下采样,而上采样则使网络输入是572×572的边缘经过镜像操作的图像(InputImageTile),网络的左侧是由卷积和MaxPool构成的一系列下采样操作,称为压缩路径(ContractingPath)。压缩路径由4个卷积块组成,每个卷积块使用3个有效卷积和1个最大池化下采样,每次下采样之后特征图的个数翻倍,因此出现了图12.10中所示的特征图尺寸变化,最终得到尺寸为32×32的特征图。网络的右侧称为扩展路径(ExpansivePath),同样由4个卷积块组成,每个卷积块开始之前通过反卷积将特征图的尺寸乘以2,同时将其个数减半(最后一层略有不同),然后和左侧对称的压缩路径的特征图合并。由于左侧压缩路径和右侧扩展路径的特征图的尺寸不一样,U-Net网络是通过将压缩路径的特征图裁剪到和扩展路径相同尺寸进行归一化的(图12.10中左侧部分)。扩展路径的卷积操作仍使用的是有效卷积操作,最终得到的特征图的尺寸是388×388。由于该任务是一个二分类任务,因此网络有两个输出特征图。12.2.2图像重建的Python实现训练集建立原始数据下载链接为/或者其他公共数据集,图像尺寸为320x320。首先,对全采样k空间数据Y进行笛卡儿欠采样。欠采样是在全采样k空间数据的相位编码方向上省略了k空间线进行的。当加速因子等于4时,全采样的中心区域占所有k空间线的8%;当加速因子等于8时,全采样的中心区域占所有犽空间线的4%。其余的k空间线随机设置,使得欠采样掩码可达到所需的加速因子。图12.11描绘了两个随机欠采样的k空间轨迹。其次,将欠采样后的k空间数据经过傅里叶逆变换转到图像域并形成训练图像集(欠采样图像),这样对应的全采样图像Y就可以作为标签图像了,如式(12.1)所示。其中,M表示笛卡儿欠采样操作;表示傅里叶逆变换;μ代表样本数量。图12.11两个随机欠采样的k空间轨迹网络设计由于U-Net网络已成功用于许多图像预测任务,因此,我们采用U-Net网络实现MRI图像重建。所采用的U-Net网络结构如图12.12所示,包括一个向下采样的压缩路径和一个向上采样的扩展路径。下采样路径由两个3×3卷积块组成,每个卷积块后跟实例规范化(InstanceNormalization)和ReLU激活函数。随后采用步长为2的最大池化层进行下采样操作,并使尺寸变为一半,通道数量变为上一层卷积块的2倍。上采样路径由结构与下采样路径相似的卷积块组成,采用双线性插值进行上采样操作,并使图像分辨率提高一倍。在上采样过程中,将下采样路径中对应级别的卷积块通过跳连接合并,它们具有相同的分辨率(图12.12中的水平箭头所示)。在上采样路径的末尾,包含两个1×1卷积,这些卷积在不改变图像分辨率的情况下,将通道数减少为1。图12.12

U-Net网络架构整个网络以端到端方式对训练数据进行训练,通过损失函数进行反馈,最后使得重建结果与全采样图像的误差最小。损失函数为:最终的重建图像由:得到,其中fnet表示U-Net网络评价指标为了对重建结果进行量化评估,采用的评价指标包括归一化均方误差(NormalizedMeanSquareError,NMSE)、峰值信噪比(PeakSignal-to-NoiseRatio,PSNR)和结构相似性(StructuralSimilarity,SSIM)。归一化均方误差(NMSE)

归一化均方误差被广泛用于衡量重建图像与全采样图像之间的误差,表示为:其中,表示欧几里得范数的平方。NMSE值越小,说明重建图像越接近全采样图像(2)峰值信噪比(PSNR)峰值信噪比是在图像处理领域使用最为广泛的一种客观评价指标,通过均方误差(MeanSquareError,MSE)进行定义,单位为dB。表示为:PSNR值越大,表示MRI重建图像越接近全采样图像。(3)结构相似性(SSIM)SSIM是一种分别从亮度、对比度、结构三个方面衡量两幅图像相似度的指标。SSIM的最大值为1,最小值为0。值越接近1,说明重建图像越接近全采样图像,质量越高。SSIM表示为:其中,是全采样图像Y的平均值;是重建图像的平均值;是Y的方差;是的方差;是Y和的协方差;是用来维持稳定的常数,其中,

,是像素值的动态范围。4.关键代码classConvBlock(nn.Module):#每个卷积块由两个卷积层组成,每个卷积层之后跟随实例规范化instancenormalization,采用LeakyReLU激活函数。

def__init__(self,in_chans,out_chans,drop_prob):super().__init__()self.in_chans=in_chansself.out_chans=out_chansself.drop_prob=drop_probself.layers=nn.Sequential(#定义第一个3x3的卷积块

nn.Conv2d(in_chans,out_chans,kernel_size=3,padding=1,bias=False),nn.InstanceNorm2d(out_chans),nn.LeakyReLU(negative_slope=0.2,inplace=True),nn.Dropout2d(drop_prob),#定义第二个3x3的卷积块

nn.Conv2d(out_chans,out_chans,kernel_size=3,padding=1,bias=False),nn.InstanceNorm2d(out_chans),nn.LeakyReLU(negative_slope=0.2,inplace=True),nn.Dropout2d(drop_prob),)defforward(self,image):"""

参数:image(torch.Tensor):输入tensor的形状[batch_size,self.in_chans,height,width]

返回:(torch.Tensor):输出tensor的形状[batch_size,self.out_chans,height,width]"""returnself.layers(image)def__repr__(self):return(#调用卷积块

f"ConvBlock(in_chans={self.in_chans},out_chans={self.out_chans},"f"drop_prob={self.drop_prob})")classTransposeConvBlock(nn.Module):#定义反卷积块:ATransposeConvolutionalBlockthatconsistsofoneconvolutiontransposelayersfollowedbyinstancenormalizationandLeakyReLUactivation.def__init__(self,in_chans,out_chans):super().__init__

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论