《机器视觉理论与实战》 课件 第六章 语义分割原理与实战_第1页
《机器视觉理论与实战》 课件 第六章 语义分割原理与实战_第2页
《机器视觉理论与实战》 课件 第六章 语义分割原理与实战_第3页
《机器视觉理论与实战》 课件 第六章 语义分割原理与实战_第4页
《机器视觉理论与实战》 课件 第六章 语义分割原理与实战_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第六章语义分割原理与实战

本章知识点语义分割系统构成UNet算法网络结构UNet算法参数配置6.1语义分割概述

语义分割是将标签或类别与图片的每个像素关联的一种深度学习算法。它用来识别构成可区分类别的像素集合。例如,自动驾驶汽车需要识别车辆、行人、交通信号、人行道和其他道路特征。语义分割可用于多种应用场合,比如自动驾驶、医学成像和工业检测。

语义分割的一个简单例子是将图像划分成两类。例如,下图中,一幅图像显示一个人在海边,与之相配的版本显示分割为两个不同类别的图像像素:人和背景。

语义分割并不局限于两个类别。您可以更改对图像内容进行分类的类别数。例如,这幅图像也可能分割为四个类别:人、天空、水和背景。语义分割与目标检测有什么区别语义分割可以作为目标检测的一种有用替代方法,因为它允许感兴趣对象在像素级别上跨越图像中的多个区域。这种技术可以清楚地检测到形态不规则的对象,相比之下,目标检测要求对象必须位于有边界的方框内。语义分割的步骤

语义分割的一般步骤如下:数据准备:选择合适的数据集,将图像和对应的标注信息加载进来。模型构建:选择合适的模型结构,如FCN、UNet、DeepLab等,进行模型的构建和训练。模型训练:使用训练数据集对模型进行训练,通过优化损失函数来调整模型参数,使其能够更好地适应数据集。模型评估:使用评估数据集对训练好的模型进行测试和评估,计算模型的准确率、召回率、F1值等指标。预测和应用:使用训练好的模型对新的图像进行语义分割,获取图像中每个像素所属的类别,从而实现图像分割的自动化和精细化。6.2基于UNet模型实现脊柱CT定位

在医学领域,经常需要分析人体患某种疾病后身体脂肪含量的变化,一般通过选择某个脊柱体的截面来估计全身的脂肪含量。

基于UNet模型的脊柱CT定位系统可以帮助医生更准确地诊断和治疗脊柱疾病。该系统主要基于深度学习技术,通过训练模型学习CT图像中的特征,达到准确识别和定位脊柱的目的。

实现方面,首先需要收集大量的CT图像数据,并进行图像增强、去噪等预处理操作,以提高模型的训练效果。然后利用UNet模型进行训练,通过调整模型参数和算法优化,提高模型的准确性和泛化能力。训练完成后,可以将训练好的模型部署到在线定位系统中,通过输入新的CT图像,自动输出脊柱的位置和姿态信息。可以通过不同角度对脊柱进行定位。脊柱正视图及侧面视图通过最大强度投影(MIP)将三维CT图像转换为二维图像,从而降低问题的维数。将MIP图像用作2D全卷积网络的输入,以2D置信图的形式预测位置。6.2.1系统结构设计

模型以UNet为基础,自适应卷积块、空间注意力模块为辅助网络结构,同时把参数数量对实验结果的影响也考虑进来,改进网络结构。为捕捉病变区域中的不规则图案,在UNet编码器和解码器中集成自适应卷积块。在编码解码连接时使用门控完全特征融合模块用以衡量各个特征图的重要内容,以此为依据进行特征融合。在解码器之前设计了密集空间注意力模块,从而生成更具判别性的特征内容,提高特征在空间中的映射能力。6.2.2自适应卷积块和空间注意力模块

自适应卷积块是指将自适应卷积加入到卷积块的中间层中,每个自适应卷积块是由一个批归一化层、一个卷积层、一个可变形卷积和一个激活函数组成,DB算法有以下几个优势:算法结构简单,无需繁琐的后处理在开源数据上拥有良好的精度和性能

引入全局-局部注意力引导结构,从全局和局部两个角度提取上下文信息,阻止无效信息和噪声。其中,全局提取上下文信息有利于提升网络系统对场景信息的理解,强调空间范围内每个像素之间的距离关系,从而实现精确定位;局部提取上下文信息可以更好的呈现出图像内容的细节,有效突出感兴趣的区域。局部-全局两者融合可以更好地将局部特征与其全局相关性相结合,有助于将正确的类别与对应的像素相匹配,减少漏分和误分的情况。

对于每个图像集都会看到正面和受限矢状MIP并排显示。主要标志物选为椎弓根的中间,与横突的顶部边缘对齐Unet模型介绍UNet常常用在生物医学图像上,而该任务中图片数据往往较少。所以,Ciresan等人训练了一个卷积神经网络,用滑动窗口提供像素的周围区域(patch)作为输入来预测每个像素的类标签。这个网络有两个优点:(1)输出结果可以定位出目标类别的位置;(2)由于输入的训练数据是patches,这样就相当于进行了数据增强,从而解决了生物医学图像数量少的问题。UNet主要贡献是在U型结构上,该结构可以使它使用更少的训练图片的同时,且分割的准确度也不会差,UNet的网络结构如下图:Unet模型结构(1)UNet采用全卷积神经网络。(2)左边网络为特征提取网络:使用conv和pooling(3)右边网络为特征融合网络:使用上采样产生的特征图与左侧特征图进行concatenate操作。(pooling层会丢失图像信息和降低图像分辨率且是永久性的,对于图像分割任务有一些影响,对图像分类任务的影响不大,为什么要做上采样呢?上采样可以让包含高级抽象特征低分辨率图片在保留高级抽象特征的同时变为高分辨率,然后再与左边低级表层特征高分辨率图片进行concatenate操作)(4)最后再经过两次卷积操作,生成特征图,再用两个卷积核大小为1*1的卷积做分类得到最后的两张heatmap,例如第一张表示第一类的得分,第二张表示第二类的得分heatmap,然后作为softmax函数的输入,算出概率比较大的softmax,然后再进行loss,反向传播计算。UNet模型训练

本案例使用在COCO数据集上预训练的U-Net模型,运行download_pretrained_unet.sh进行下载,代码如下:#下载unet模型并解压到./pretrained_models目录下!shwork/download_pretrained_unet.sh

注:./pretrained_model/为PaddleSeg默认的预训练模型存储目录,预训练模型将存放在./pretrained_model/unet_coco_init/目录下。Unet模型训练PaddleSeg是基于百度飞浆生态下的语义分割库,可结合丰富的预训练模型更便捷高效地进行语义分割。

将下载的PaddleSeg压缩包进行解压即可使用,代码如下。#解压从/PaddlePaddle/PaddleSeg下载好的zip包!unzipPaddleSeg-release-v0.1.0.zip#将PaddleSeg代码上移至当前目录!mvPaddleSeg-release-v0.1.0/*~#安装所需依赖项!pipinstall-rrequirements.txtUnet模型训练

若你想在自己的电脑环境中安装PaddleSeg,可运行如下命令:#从PaddleSeg的github仓库下载代码gitclone/PaddlePaddle/PaddleSeg.git#运行PaddleSeg的程序需在PaddleSeg目录下cdPaddleSeg/#安装所需依赖项pipinstall-rrequirements.txt

实际训练中可能遇到以下情况:如果需要修改大量参数,建议另外再编写一个yaml文件,然后传给—cfg参数,这种做法适合需要长期、大量进行改动的情况,例如更换数据集,代码如下。python./pdseg/train.py--cfg./configs/xxx.yaml

如果只是临时对少量参数进行更改,建议在命令行直接对相应参数进行赋值,这种做法适合短期、少量、频繁进行改动的情况。这里采用这种方式,代码如下。#Training!python./pdseg/train.py--cfg./configs/unet_pet.yaml\--use_gpu\

SOLVER.NUM_EPOCHS3\

TRAIN.PRETRAINED_MODEL_DIR"pretrained_model/unet_coco_init/"\

TRAIN.MODEL_SAVE_DIR"snapshots/unet_pet/"参数含义--cfg指定yaml配置文件路径--use_gpu是否启用gpu--use_mpio是否开启多进程BATCH_SIZE批处理大小TRAIN_CROP_SIZE训练时图像裁剪尺寸(宽,高)TRAIN.PRETRAINED_MODEL_DIR预训练模型路径TRAIN.MODEL_SAVE_DIR模型保存路径TRAIN.SYNC_BATCH_NORM是否使用多卡间同步BatchNorm均值和方差,默认FalseMODEL.DEFAULT_NORM_TYPEBatchNorm类型:bn(batch_norm)、gn(group_norm)SOLVER.LR初始学习率SOLVER.NUM_EPOCHS训练epoch数,正整数SOLVER.LR_POLICY学习率下降方法,选项为poly、piecewise和cosineSOLVER.OPTIMIZER优化算法,选项为sgd和adam常用参数说明PaddleSeg中共有三处可设置模型参数,包括命令窗口传递的参数、configs目录下的yaml文件、pdseg/utils/config.py。对于相同的参数,传递的优先级为:命令窗口>yaml文件>config.py。即同一个参数,优先级较高的将覆盖优先级较低的。若没有GPU计算资源,则需要在以下的训练、验证、测试脚本中删除参数--use_gpu。在多GPU训练的情况下,建议开启TRAIN.SYNC_BATCH_NORM来提高分割精度。

接下来用一个已训练500个epoch的UNet模型,进行预测和可视化。该模型位于work/unet_pet_500/500目录下。eval.py为模型的评估脚本,代码如下。#Evaluation!python./pdseg/eval.py--cfgconfigs/unet_pet.yaml\--use_gpu\TEST.TEST_MODEL"work/unet_pet_500/500/"\EVAL_CROP_SIZE"(512,512)"EVAL_CROP_SIZE的设置要求如下:当AUG.AUG_METHOD为unpadding时,EVAL_CROP_SIZE的宽高应不小于AUG.FIX_RESIZE_SIZE的宽高。当AUG.AUG_METHOD为stepscaling时,EVAL_CROP_SIZE的宽高应不小于原图中最大的宽高。当AUG.AUG_METHOD为rangscaling时,EVAL_CROP_SIZE的宽高应不小于缩放后图像中最大的宽高。

对于UNet,需要特别留心EVAL_CROP_SIZE的设置,若设置过大,容易超出显存。若不确定如何设置,可使用数据校验工具。指标含义accMeanAccuracy(平均准确率)IoUMeanIntersectionoverUnion(MIoU,平均交并比)CategoryIoU每个类别的IoU指标CategoryAcc每个类别的Accuracy指标KappaKappa系数是一个用于一致性检验的指标,可以衡量分类或分割的效果。取值范围为[-1,1],越趋近于1,说明分类或分割的效果越好。

数据集预处理

本案例选用的数据集,由于原始图片的对比度相对较低,如果将图片直接输入网络进行训练,无法得到较好的分割效果。如果对图像数据进行适当的预处理,分割效果和效率都会更好。先将需要的原始图片进行部分内容预处理,从而提高网络的分割性能。为了增加训练集的数量和防止过拟合,对原始图像随机缩放、随机旋转以及水平和垂直移位来进行数据增强。对采集到的像素每一个都进行归一化,并对所有的图像进行伽马校正。

定义数据集读取类

将原始数据集按照80%训练,20%验证进行划分,读取数据集代码如下:#定义数据读取类importpaddlefrompaddle.ioimportDatasetimportnumpyasnpfromscipy.ndimageimportzoomimportpaddle.vision.transformsasT

定义模型

基于Unet网络进行模型搭建,自适应卷积块(AdaptiveConvolutionBlock)是一种特殊的卷积结构,它可以根据输入数据的特性动态调整卷积核的大小和步长,以实现更灵活和高效的卷积操作。在下面的代码中,我们首先定义了一个名为AdaptiveConv的自定义模块,它继承自nn.Module类。在__init__函数中,我们初始化了卷积层、批量归一化层和ReLU激活函数。在forward函数中,我们根据输入数据动态计算卷积核大小和步长,然后调用卷积层进行卷积操作,再经过批量归一化和ReLU激活函数得到最终的输出。classAdaptiveConv(nn.Module):def__init__(self,in_channels,out_channels,kernel_size,stride=1,padding=0):super(AdaptiveConv,self).__init__()self.conv=nn.Conv2d(in_channels,out_channels,kernel_size,stride,padding)self.bn=nn.BatchNorm2d(out_channels)self.relu=nn.ReLU(inplace=True)defforward(self,x):

空间注意力模块可以在深度学习模型中使用,以增强模型对空间位置的注意力。空间注意力模块接受一个输入张量x,它具有形状(batch_size,channels,height,width)。模块通过计算平均值和最大值来获得一个上下文向量,然后将其与原始输入拼接在一起,并通过卷积层产生一个缩放因子。最后,使用sigmoid函数将缩放因子的值范围限制在0到1之间,得到空间注意力图。代码如下:importtorchimporttorch.nnasnnimporttorch.nn.functionalasF

classSpatialAttention(nn.Module):def__init__(self,kernel_size=7):super(SpatialAttention,self).__init__()assertkernel_size

温馨提示

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

评论

0/150

提交评论