【图像语义分割的相关模型概述5000字】_第1页
【图像语义分割的相关模型概述5000字】_第2页
【图像语义分割的相关模型概述5000字】_第3页
【图像语义分割的相关模型概述5000字】_第4页
【图像语义分割的相关模型概述5000字】_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

IV图像语义分割的相关模型概述目录TOC\o"1-3"\h\u9648图像语义分割的相关模型概述 1130931.1U-Net网络 1274511.2FCN网络 2170951.3LinkNet 264461.4ResNet网络 3106332图像语义分割平台 3321862图像语义分割的实现 3290711.1图像预处理模块 310931.1.1图像和标签的路径读取 38201.1.2数据增强 472011.1.3彩色图像预处理 480291.1.4图像和标签的数据加载 4158901.1.5参数设置 5290271.2图像分割网络实现模块 5202391.1.1U-Net网络的实现 575231.1.2FCN网络的实现 6209451.1.3LinkNet网络的实现 656191.1.4U-Net网络的修改 797881.3训练结果收集模块 773031.3.1语义分割的优化器的选择 7196171.3.2语义分割的评价指标 8107741.4模型训练模块 81.1U-Net网络U-Net网络主要分为两部分,特征提取和上采样反卷积。特征提取主要是利用下采样和卷积获取图像的高维特征,上采样反卷积进行图像大小还原,同时将图像的输出空间维数变为分类数。U-Net网络的一个很大特点,在每一层上采样反卷积的时候都会连接(concat)输入的每一层下采样特征提取后的卷积输出。出现这种特点的原因便是利用的concat连接。concat连接和add连接的区别便是concat会进行横向或者纵向于空间上叠加,而add连接仅仅只是在像素上的叠加。U-Net网络在少量的数据下也能得到不错的效果。1.2FCN网络FCN是端到端的网络训练,其本质上是一个分类网络和上采样的结合,在结构上拥有跳阶结构即会结合前面的信息一起进行上采样。首先对图像进行一层一层的下采样进行特征提取,然后结合前面的信息一起上采样。其结合前面的信息方式是直接像素相加。像素上的直接相加会忽略了像素的空间信息。因此利用FCN实现的图像语义分割网络存在分割结果结构不够精细,空间一致性不足的缺点。1.3LinkNetLinNet网络采用的是编码器和解码器结构,其实现过程是对下采样后的图像进行多次“编码”,然后同样次数的“解码”。LinkNet网络编码器由两次ResNet残差结构组成,解码器由反卷积构成。因为LinkNet网络使用了编码器和解码器结构减少了下采样的次数,使其解决了在保证图像分割精度的条件下图像分割的速率过慢的问题,同时绕开了在提升效率后图像像素空间信息上的缺失问题。1.4ResNet网络微软提出的ResNet模型协助解决语义分割深度过深而出现梯度消失问题,其核心思想便是下一层可以从输入中学习新的信息。、2图像语义分割平台Tensorflow框架是Goole一款开源框架,是基于“数据流图”进行数据计算的编程模型。tensorflow框架以数据进行驱动,其提升了并行计算的能力,因为其数据流图的特点常用于神经网络和机器学习领域。利用tensorflow进行软件开发的神经网络,以张量表示数据,以数据流图搭建网络结构,利用session进行数据计算,优化权重参数,迭代得到模型。2图像语义分割的实现图像分割的实现过程主要是进行模块封装,总共有四个模块。图像预处理模块,图像分割网络实现模块,训练结果收集模块,模型训练模块。图像预处理模块的作用是对图像数据集进行图像增强和归一化处理。图像分割实现网络模块是对分割网络模型的实现过程的封装。模型训练模块。训练结果收集模块中有对tensorflow中IoU函数的重写,利用元组对评测指标IoU、损失值、正确率的存储以及利用绘图函数进行结果预测。模型训练模块中调用模型进行预测,获取损失值,根据损失值和所有可训练参数计算梯度,通过优化器对梯度优化,最后进行指标记录。1.1图像预处理模块1.1.1图像和标签的路径读取利用glob函数获取测试集和训练集中的图像路径和标签路径。为了防止获取的图像路径和标签路径乱序导致预测结果不理想,利用split函数截取路径名,获取路径编号,然后利用sort函数按照编号排序,使得图像路径和标签路径一一对应。为了防止后面的模型训练和预测结果偏向于某一类,利用random随机函数对图像路径进行乱序。根据路径读取图像和标签,彩色图像的读取需要解码所以利用read_file函数和decode_png函数读取彩色图像,利用read_file函数读取标签。对图像和标签过程进行函数封装,在加载图像和标签的过程中根据路径读取图像和标签。1.1.2数据增强为了防止过拟合和在训练途中数据的梯度消失导致结果不理想需要利用数据增强增加训练集中的图像和标签的数量。常见的数据增强的方法有随机翻转、随机裁剪、尺度变换、平移变换、旋转变换、添加髙斯噪声等。本论文利用随机翻转和随机裁剪进行数据增强。因为测试集中的图像和标签过大,在训练过程中可能会导致训练过程中显存溢出,并且如果对过大的图像和标签进行裁剪那么保留的关键信息将会很少,需要对输入模型的图像和标签进行缩放,将图像大小压缩为256*256。不过不能直接将图像缩放为256*256,因为随机裁剪图像也会缩放图像的大小。所以首先将图像缩放为280*280,为了防止随机裁剪过程中裁剪的位置不一致影响预测结果,需要利用concat函数将图像和标签在空间上进行叠加再根据随机数判断是否裁剪,然后再将图像和标签缩放为256*256,然后利用高维切片获取随即裁剪后的图像和标签。对随机裁剪过程进行函数封装,在加载图像和标签的过程中对图像和标签进行随机裁剪。1.1.3彩色图像预处理为了提高精度和使得训练网络的收敛性加快,需要对彩色图像做预处理,彩色图像取值范围[-1,1]。因为标签是需要的分类数和彩色图像的分类标准所以不需要对标签做归一化处理。对归一化过程进行函数封装,在加载图像和标签的过程中对图像做归一化处理。1.1.4图像和标签的数据加载封装图像和标签加载过程,在此模块中调用读取图像和标签的函数封装。对读取的图像和标签使用随机裁剪。设置随机数,根据随机数判断是否调用flip_left_right函数进行图像和标签的随机翻转。1.1.5参数设置根据电脑自身显存设置BUFFER_SIZE和BCTCH_SIZE。BUFFER_SIZE是在缓存中图像的训练个数,控制缓存大小,在缓存中进行迭代训练。同时BUFFER_SIZE也是一个乱序缓冲区,它可以使得在训练的中获取足够的信息量。如果设置的BUFFER_SIZE超过显存缓存那么在训练中途会报错。BCTCH_SIZE是图像每一次在缓存中进行替换的图像数量。设置auto值,其作用是让电脑根据cpu的核个数自动选择读取线程的个数。然后进行图像加载和管道输入。开始开始读取图像和标签的路径路径读取读取图像和标签对图像和标签做图像增强对图像和标签做归一化处理返回图像和标签结束1.2图像分割网络实现模块1.1.1U-Net网络的实现U-Net网络的实现主要是通过自定义下采样层和上采样层,封装下采样层DownSample和上采样层UpSample,然后在U-Net模型的定义中调用封装的下采样层和封装的上采样层实现的。下采样层由卷积、卷积、下采样组成。DownSample初始化,设置第一层卷积和第二层卷积参数并且第一层和第二层卷积参数相同,卷积需要输入的参数由卷积和、卷积内核大小、填充方式。卷积和参数需要在调用函数的时候进行设置。卷积内核大小默认设置为3。因为输入和输出的图像需要大小一致,设置填充方式为same。对封装的下采样层创建前向传播过程,输入参数一个是图像,一个boolean值变量。因为U-Net网络第一层不需要进行下采样,设置一个boolean值变量的作用是通过boolean值判断是否进行下采样,可以进行代码复用。函数主体通过boolean值判断是否对图像进行下采样,对图像做第一层卷积,卷积激活,对图像做第二层卷积卷积激活。卷积卷积卷积下采样上采样层由卷积、卷积、上采样组成。UpSample初始化,卷积参数的设置和下采样中的卷积参数一致,反卷积中的参数有输出空间维数、卷积内核、填充方式、卷积沿高度和宽度的步长膨胀宽度stride。输出空间维数需要同下采样层的空间维数一致,因为上采样层和下采样层需要进行concat。卷积内核为3。填充方式same。因为图像需要放大,设置stride值为2。对封装的上采样层创建前向传播过程,输入参数是图像。函数主体是对图像做第一层卷积卷积激活,对图像做第二层卷积卷积激活,上采样。卷积卷积卷积反卷积Net模型的定义由DownSample和UpSample拼接而成。DownSample和UpSample过程对应,利用concat进行拼接。1.1.2FCN网络的实现由于FCN具有跳阶结构,上采样层的信息需要同下采样信息在像素上直接相加获取输出。利用预训练网络VGG16获取下采样信息,因为预训练网络结构同FCN网络没有进行上采样的网络结构一致。如何获取中间层输出?利用get_layer(层名).output方法获取中间层,通过中间层创建一个新的子模型,然后调用这个子模型获取中间层输出,用于跳阶结构。利用函数API创建子模型,inputs就是预训练网络,outputs就是需要的中间层。这个子模型会继承预训练网络结构。因为存在多个下采样层,需要获得多个下采样输出,所以需要创建多输出模型。将各层层名保存在列表中,通过列表表达式从层名列表中获得各个中间层。和创建单输出模型类似创建多输出模型,不过outputs为中间层列表。不过由于多输出模型继承预训练网络,当前模型不能训练。在每一次进行调节结构之前需要对获取的中间层输出多进行一次卷积,这样做的目的是为了进行特征提取,然后再进行add操作。1.1.3LinkNet网络的实现LinkNet网络类似于U-Net网络,主要是通过卷积和反卷积实现。考虑到代码的复用性,定义卷积块和反卷积块,然后封装编码块和解码块,最后调用编码块和解码块,进行模块“组装”形成LinkNet网络。卷积块主要包括卷积层、bn层、激活层。在卷积层中定义卷积和个数。卷积核kernel_size。卷积沿高度和宽度的步长膨胀宽度strides,strides默认参数为1,经历一次卷积后,图像大小不发生改变。填充方式默认为same填充。bn层,对输入数据进行归一化处理,防止在训练途中数据发生改变导致梯度消失或者梯度爆炸。激活层,卷积激活,不激活卷积无效。对输入图像进行卷积特征提取,然后对图像做归一化批处理,最后激活卷积。反卷积块的封装和卷积块类似。不过反卷积块是进行的反卷积,strides的默认参数为2,即每经历一次反卷积,图像和标签放大一次。因为模型的最后输出是一个反卷积,所以不需要对反卷积进行激活,所以设置一个boolean值变量,用来判断是否进行反卷积激活。编码器模块由两个ResNet残差结构组成。一个是进行缩放的残差结构,一个是没有进行缩放的残差结构。进行缩放的残差结构:调用卷积模块,设置strides为2,然后再一次进行卷积。对输入进行一次strides为2的卷积。经过卷积的输入同两次卷积结果相加。没有进行缩放的残差结构:将输入同经过两次卷积后的结果进行相加。解码器模块由卷积、反卷积、卷积。调用卷积和反卷积模块完成。解码器模块的主要的作用是对图像进行放大,使得图片输入输出大小一致。LinkNet网络通过“组装”编码器模块和解码器模块组成,编码器和解码器需要一一对应,因为解码器输出需要同对应的编码器输出相加然后再进行解码。1.1.4U-Net网络的修改在U-Net网络中添加残差网络,在下采样中后的两次卷积输出直接加上下采样结果。其网络结构如下。卷积卷积卷积下采样add1.3训练结果收集模块1.3.1语义分割的优化器的选择几种常用的优化器:SGD,Momentum,AdaGrad,RMSProp,Adam。随机梯度下降算法SGD,每次只使用一个样本来进行更新梯度,因为是一个样本进行更新的原因,SGD速度比较快,能够根据新的样本实时更新模型,但是其梯度震荡严重。动量Momentum,动量即矢量,具有方向,用来描述梯度。如果获取到的梯度方向和前一时刻的梯度方向一致,那么梯度则会增强;如果获取到的梯度方向和前一时刻的梯度方向不一致,那么梯度则会变弱。自适应梯度算法AdaGrad,当开始训练的时候学习率应当设置为比较大,因为此时离最优点比较远,当训练快要结束的时候,应该降低学习率,因为此刻离最优点比较近。自适应算法能够根据自身状态自动调节学习率。因为分母的大小主要由前t时刻的梯度的平方和决定,而梯度的平方和变化过快可能导致训练提前结束。θgt是t时刻的模型的梯度。tgt2均方根传播RMSProp,RMSProp是在AdaGrad的基础上添加了一个衰减系数。这个衰减系数可以用来来控制获取的历史信息的多少,也可以认为是一种指数加权的方式,目的是消除梯度下降时候的梯度摆动。Adam优化器可以看作是RMSProp和Momentum的结合,Adam优化器考虑到了梯度的一阶矩估计、二阶矩估计,对两者进行了综合考

温馨提示

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

评论

0/150

提交评论