没有合适的资源?快使用搜索试试~ 我知道了~
深度学习项目开发实战_面部生成与标签缺失处理_编程案例解析实例详解课程教程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 165 浏览量
2023-05-08
15:38:17
上传
评论
收藏 8.11MB PDF 举报
温馨提示
试读
31页
使用 GAN 的有趣应用程序还有很多。本章将展示 GAN 的另一个很有前景的应用,即基于 CelebA 数据库的面部生成。同时还将演示当面对一个带有一些缺失标签的数据集时,如何将 GAN 用于半监督学习。许多研究人员认为无监督学习是一般 AI 系统中缺失的环节。为了克服这些障碍,尝试使用较少的标记数据来解决指定的问题是一个关键。在这种场景下,GAN 为使用少量标记的样本学习复杂的任务提供了另一个替代方案。然而,监督学习和半监督学习之间的性能差距仍然很大。随着新技术的产生,这种差距有望越来越小。
资源推荐
资源详情
资源评论
面部生成与标签缺失处理
使用 GAN 的有趣应用程序还有很多。本章将展示 GAN 的另一个很有前景的应用,
即基于 CelebA 数据库的面部生成。同时还将演示当面对一个带有一些缺失标签的数据集
时,如何将 GAN 用于半监督学习。
本章将介绍以下主题。
面部生成。
用生成对抗网络进行半监督学习。
15.1 面部生成
生成器与判别器包含了反卷积网络(Deconvolutional Network,DNN)
①
和卷积神经
网络(Convolutional Neural Network,CNN)
②
。
CNN 是一类神经网络,它将图像的数百个像素编码成维度更小的向量(z),可
以认为这个向量是图像的压缩版本。
DNN 是一类通过学习一些过滤器来从 z 恢复原始图像的网络。
此外,判别器将输出一个 1 或 0 来表示输入图像是来自实际数据集还是由生成器生成的。
生成器将尝试基于隐空间 z 来生成类似于原始数据集的图像,隐空间 z 可能遵循高斯分布。
因此,判别器的目标是正确识别真实图像,而生成器的目标是学习原始数据集的分布,从而
欺骗判别器以使它做出错误的决定。
① 关于 DNN,详见 quora 官网。
② 关于 CNN,详见 CS231n 官网。
第 15 章 面部生成与标签缺失处理
330
在本节中,我们将尝试训练生成器学习人脸图像的分布,以便生成真实的面部图像。
对于大多数在应用中使用人类面孔的图形公司而言,生成类似人脸的面孔至关重要,
同时它为我们提供了一个生动的例子,即人工智能如何在生成人类面孔时实现真实性。
这个示例将使用 CelebA 数据集。CelebFaces 属性数据集(CelebA)是一个大型的人
脸属性数据集,有大约 20 万张名人图像,每张图像有 40 个属性注释。数据集中的图像
涵盖了许多不同的姿势,同时背景也非常杂乱,CelebA 非常多样化并且有很好的注释。
具体来说,其中包括以下内容。
10 177 个人。
202 599 张脸部图片。
每张图像的 5 个标志位置和 40 个二值属性注释。
除了面部生成之外,我们还可以将此数据集用于其他的计算机视觉应用,如面部识
别和定位,或面部属性检测。
图 15.1 所示是训练过程中生成器的误差以及学习真实人脸分布的过程。
图 15.1 用于从名人图像数据集中生成新面孔的 GAN
15.1.1 获取数据
在本节中,将定义一些有助于下载 CelebA 数据集的辅助函数。首先,导入此实现
所需的包。
import math
import os
import hashlib
from urllib.request import urlretrieve
国 15.1 面部生成
331
import zipfile
import gzip
import shutil
import numpy as np
from PIL import Image
from tqdm import tqdm
import utils
import tensorflow as tf
然后,将使用 utils 脚本下载数据集。
#Downloading celebA dataset
celebA_data_dir = 'input'
utils.download_extract('celeba', celebA_data_dir)
输出如下。
Downloading celeba: 1.44GB [00:21, 66.6MB/s]
Extracting celeba...
15.1.2 探讨数据集
CelebA 数据集包含超过 20 万张带注释的名人图像。由于我们将使用 GAN 生成类
似的图像,因此有必要查看该数据集中的一组图像并观察它们的外观。在本节中,将
定义一些辅助函数,用于可视化 CelebA 数据集中的一组图像。
下面使用 utils 脚本来显示数据集中的一些图像。
#number of images to display
num_images_to_show = 25
celebA_images=utils.get_batch(glob(os.path.join(celebA_data_dir,
'img_align_celeba/*.jpg'))[:num_images_to_show],
28, 28, 'RGB')
pyplot.imshow(utils.images_square_grid(celebA_images, 'RGB'))
输出结果如图 15.2 所示。
第 15 章 面部生成与标签缺失处理
332
图 15.2 从 CelebA 数据集中提取图像样本
这个计算机视觉任务的主要焦点是使用 GAN 生成类似于名人数据集中的图像,因
此我们需要关注图像的面部部分。要关注图像的脸部,就必须删除不包含名人脸部的图
像部分。
15.1.3 构建模型
下面开始构建这次实现的核心,即计算图,主要包括以下部分。
模型输入。
判别器。
生成器。
模型的损失函数。
模型的优化器。
模型的训练环节。
1.模型输入
在本节中,我们将实现一个辅助函数,用来定义负责为模型计算图提供数据输入的
占位符。
这个函数应该能够创建 3 类主要的占位符。
来自数据集的实际输入图像,其维度包括批量大小、输入图像宽度、输入图像高
度、通道数。
国 15.1 面部生成
333
隐空间 z,发生器使用它生成虚假图像。
学习率的占位符。
辅助函数将返回这 3 个输入占位符构成的元组。下面继续定义这个函数。
# defining the model inputs
def inputs(img_width, img_height, img_channels, latent_space_z_dim):
true_inputs = tf.placeholder(tf.float32, (None, img_width, img_
height, img_channels),
'true_inputs')
l_space_inputs = tf.placeholder(tf.float32, (None, latent_space_
z_dim), 'l_space_inputs')
model_learning_rate = tf.placeholder(tf.float32,
name='model_learning_rate')
return true_inputs, l_space_inputs, model_learning_rate
2.判别器
接下来,需要实现网络的判别器部分,该部分将用于判断输入是来自真实数据集还
是由生成器生成的。同样,将使用 TensorFlow 的 tf.variable_scope 功能为一些变量添加
带有判别器字样的前缀,以便可以检索和重用它们。
这里定义一个函数,它将返回判别器的二元输出和 logit 值。
# Defining the discriminator function
def discriminator(input_imgs, reuse=False):
# using variable_scope to reuse variables
with tf.variable_scope('discriminator', reuse=reuse):
# leaky relu parameter
leaky_param_alpha = 0.2
# defining the layers
conv_layer_1 = tf.layers.conv2d(input_imgs, 64, 5, 2, 'same')
leaky_relu_output = tf.maximum(leaky_param_alpha * conv_layer_1,
conv_layer_1)
conv_layer_2 = tf.layers.conv2d(leaky_relu_output, 128, 5, 2,
'same')
normalized_output = tf.layers.batch_normalization(conv_layer_2,
training=True)
leay_relu_output = tf.maximum(leaky_param_alpha *
剩余30页未读,继续阅读
资源评论
好知识传播者
- 粉丝: 498
- 资源: 4204
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功