使用深度学习从分割图生成图像

简介: 使用深度学习从分割图生成图像

一、前言
使用 pix2pixHD 条件生成对抗网络 (CGAN) 从语义分割映射生成场景的合成图像。
Pix2pixHD由两个同时训练的网络组成,以最大限度地提高两者的性能。生成器和鉴别器网络在训练期间相互竞争。当两个网络都无法进一步改进时,训练就会收敛。

二、下载视频数据集
此示例使用CamVid 数据集进行训练。该数据集是 701 张图像的集合,其中包含驾驶时获得的街道视图。该数据集为 32 个语义类提供像素标签,包括汽车、行人和道路。从这些 URL 下载 CamVid 数据集。下载时间取决于您的互联网连接。

三、预处理训练数据
创建一个图像数据存储,以将图像存储在CamVid数据集中。

使用辅助函数定义数据集中 32 个类的类名和像素标签 ID。使用辅助函数获取数据集的标准颜色图。创建像素标签数据存储以存储像素标签图像。

预览像素标签图像和相应的真实地面场景图像。使用 label2rgb 函数将标签从分类标签转换为 RGB 颜色,然后在蒙太奇中显示像素标签图像和真实图像。
1.png

使用帮助程序函数将数据划分为训练集和测试集。此函数作为支持文件附加到示例。帮助程序函数将数据拆分为 648 个训练文件和 32 个测试文件。

使用组合函数将像素标签图像和真实地面场景图像合并到单个数据存储中。通过将转换函数与帮助程序函数指定的自定义预处理操作一起使用来扩充训练数据。此帮助程序函数作为支持文件附加到示例。该函数执行以下操作:将真实数据缩放到范围 [-1, 1]。此范围与生成器网络中最终 tanhLayer(深度学习工具箱)的范围相匹配。将图像和标注调整为网络的输出大小(576 x 768 像素),分别使用双三次和最近邻缩减采样。使用 onehotencode(深度学习工具箱)函数将单通道分割图转换为 32 通道独热编码分割图。在水平方向上随机翻转图像和像素标签对。

在蒙太奇中预览独热编码分割图的通道。每个通道代表一个对应于唯一类像素的热图。
2.png

四、创建发电机网络
定义一个 pix2pixHD 发生器网络,该网络从深度一级的独热编码分割图生成场景图像。此输入具有与原始分割图相同的高度和宽度,以及与类相同的通道数。

显示网络架构。请注意,此示例显示了如何使用 pix2pixHD 全局生成器生成大小为 576 x 768 像素的图像。要创建以更高分辨率(如 1152 x 1536 像素甚至更高)生成图像的本地增强器网络,可以使用函数。本地增强器网络有助于以非常高的分辨率生成精细的细节。

五、创建鉴别器网络
定义将输入图像分类为真实 (1) 或虚假 (0) 的补丁 GAN 鉴别器网络。此示例使用不同输入尺度的两个鉴别器网络,也称为多尺度鉴别器。第一个比例与图像大小的大小相同,第二个比例是图像大小的一半。

判别器的输入是独热编码分割图和待分类场景图像的深度串联。将输入到鉴别器的通道数指定为标记类和图像颜色通道的总数。

指定第一个鉴别器的输入大小。将第二个鉴别器的输入大小指定为图像大小的一半,然后创建第二个补丁 GAN 鉴别器。可视化网络。

六、定义模型梯度和损失函数
帮助器函数计算生成器和鉴别器的梯度和对抗损失。

七、加载特征提取网络
此示例修改了预训练的 VGG-19 深度神经网络,以提取真实图像和生成图像在各个层的特征。这些多层特征用于计算发生器的感知损耗。

八、指定训练选项
指定 Adam 优化的选项。训练60个时代。为生成器和鉴别器网络指定相同的选项。

九、训练网络
默认情况下,该示例使用帮助程序函数为 CamVid 数据集下载 pix2pixHD 发生器网络的预训练版本。

十、评估从测试数据生成的图像
这种经过训练的Pix2PixHD网络的性能是有限的,因为CamVid训练图像的数量相对较小。此外,某些图像属于图像序列,因此与训练集中的其他图像相关。为了提高Pix2PixHD网络的有效性,请使用具有大量没有相关性的训练图像的不同数据集来训练网络。

由于这些限制,此Pix2PixHD网络为某些测试图像生成比其他图像更逼真的图像。为了演示结果的差异,请比较第一个和第三个测试图像的生成图像。第一个测试图像的相机角度具有不常见的有利位置,其面向比典型训练图像更垂直于道路的视角。相比之下,第三个测试图像的相机角度具有沿道路面向的典型有利位置,并显示带有车道标记的两条车道。与第一个测试图像相比,网络为第三个测试图像生成逼真的图像的性能明显更好。

从测试数据中获取第一个地面实况场景图像。使用双三次插值调整图像大小。

从测试数据中获取对应的像素标签图像。使用最近邻插值调整像素标签图像的大小。创建将数据输入生成器的对象。如果支持的 GPU 可用于计算,则通过将数据转换为对象在 GPU 上执行推理。发电机网络的最后一层产生 [-1, 1] 范围内的激活。对于显示,将激活重新缩放到范围 [0, 1]。以蒙太奇形式显示 RGB 像素标签图像、生成的场景图像和真实场景图像。
3.png

十一、评估从自定义像素标签图像生成的图像
要评估网络对 CamVid 数据集之外的像素标签图像的泛化程度,请从自定义像素标签图像生成场景图像。像素标签图像作为支持文件附加到示例中。没有可用的地面实况图像。
创建一个像素标签数据存储,用于读取和处理当前示例目录中的像素标签图像。

4.png
5.png

目录
相关文章
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
15 9
|
2天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:图像风格迁移与生成
【7月更文挑战第13天】 使用Python实现深度学习模型:图像风格迁移与生成
9 2
|
13天前
|
机器学习/深度学习 算法 PyTorch
深度学习中的图像风格迁移技术探析
图像风格迁移是近年来深度学习领域备受关注的研究方向之一。本文将从算法原理、实现步骤到应用案例,全面分析和探讨几种主流的图像风格迁移技术,为读者深入理解和应用这一技术提供详实的指南。 【7月更文挑战第2天】
|
21天前
|
机器学习/深度学习 算法 固态存储
m基于深度学习的卫星遥感图像轮船检测系统matlab仿真,带GUI操作界面
在MATLAB 2022a中,使用GoogLeNet对卫星遥感图像进行轮船检测,展示了高效的目标识别。GoogLeNet的Inception架构结合全局平均池化增强模型泛化性。核心代码将图像切块并分类,预测为轮船的部分被突出显示,体现了深度学习在复杂场景检测中的应用。
103 8
|
19天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
35 1
|
22天前
|
机器学习/深度学习 机器人 数据处理
深度学习之点云分割
点云分割是计算机视觉中的一个重要任务,特别是在三维数据处理和分析中。点云数据是由大量三维点构成的集合,每个点包含空间坐标(x, y, z),有时还包含其他信息如颜色和法向量。点云分割的目标是将点云数据分割成有意义的部分,例如物体或地形的不同区域。
41 2
|
2天前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
8 0
|
12天前
|
机器学习/深度学习 文字识别 算法
深度学习助力版面分析技术,图像“还原”有方
深度学习助力版面分析技术,图像“还原”有方
15 0
|
2月前
|
机器学习/深度学习 算法 数据挖掘
深度学习面试问题目录 | 深度学习目标检测、语义分割、分类上百种面试问答技巧
这篇文章汇总了深度学习面试,特别是目标检测领域的常见问题,提供了一个详细的目录大纲,便于读者直接跳转至答案。通过理解和解答这些问题,求职者能展示其在深度学习专业的知识、解决问题的能力及对应用的理解,从而提高面试成功率和竞争力。包含多个专题,如损失函数、Python解释器、经典网络、YOLO系列、激活函数等。
|
2月前
|
机器学习/深度学习 算法 搜索推荐
基于深度学习的图像风格转换技术
【5月更文挑战第31天】 在数字图像处理领域,风格转换技术已从传统算法演变至以深度学习为核心的智能化方法。本文深入探讨了基于卷积神经网络(CNN)的图像风格转换技术,分析了其核心原理、关键技术及应用前景。通过引入感知损失与风格损失的概念,实现了图像内容与风格的解耦和重组,使得源图像能够获得目标风格特征。此外,文章还讨论了目前技术面临的主要挑战,包括风格迁移的精度、效率以及多样化问题,并提出了潜在的改进方向。