「埃尔法哥哥」快速看懂如何使用GAN生成“真实”的人脸( 二 )
尽管GAN的概念在理论上很简单 , 但要建立一个有效的模型却非常困难 。 在GAN中 , 有两个深层网络耦合在一起 , 使得反向传播梯度的难度提高了两倍 。
深度卷积GAN(DCGAN)是演示如何构建实用的GAN的模型之一 , 该GAN可以自己学习如何合成新图像 。 DCGAN与GAN非常相似 , 但专门致力于使用深度卷积网络代替Vanilla GAN中使用的全连接网络 。
卷积网络有助于发现图像中的深层相关性 , 即它们寻找空间相关性 。 这意味着DCGAN将是图像/视频数据的更好选择 , 而GAN可以被认为是DCGAN和许多其他体系结构(CGAN , CycleGAN , StarGAN等)已经发展起来的一般思想 。
让我们加载数据集并查看输入图像的外观:
import numpy as np
import pandas as pd
import os
import tensorflow as tf
PIC_DIR = 'D:/Jupyter/celeba-dataset/img_align_celeba/img_align_celeba/'
from tqdm import tqdm
from PIL import Image
IMAGES_COUNT = 10000
ORIG_WIDTH = 178
ORIG_HEIGHT = 208
diff = (ORIG_HEIGHT - ORIG_WIDTH) // 2
WIDTH = 128
HEIGHT = 128
crop_rect = (0, diff, ORIG_WIDTH, ORIG_HEIGHT - diff)
images = []
for pic_file in tqdm(os.listdir(PIC_DIR)[:IMAGES_COUNT]):
pic = Image.open(PIC_DIR + pic_file).crop(crop_rect)
pic.thumbnail((WIDTH, HEIGHT), Image.ANTIALIAS)
images.append(np.uint8(pic))
本文插图
显示我们图像的格式
【「埃尔法哥哥」快速看懂如何使用GAN生成“真实”的人脸】images = np.array(images) / 255
print(images.shape)
from matplotlib import pyplot as plt
本文插图
我们的部分图像输出出来:
plt.figure(1, figsize=(10, 10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.imshow(images[i])
plt.axis('off')
plt.show()
本文插图
下一步是创建一个生成器:
生成器则采用另一种方式:试图欺骗判别器的是艺术家 。 该网络由8个卷积层组成 。 在这里 , 首先 , 我们接受输入 , gen_input并将其输入到第一个卷积层中 。 每个卷积层都执行卷积 , 然后执行批归一化以及leaky ReLu 。 然后 , 我们返回tanh激活函数 。
from keras import Input
from keras.layers import Dense, Reshape, LeakyReLU, Conv2D, Conv2DTranspose, Flatten, Dropout
from keras.models import Model
from keras.optimizers import RMSprop
LATENT_DIM = 32
CHANNELS = 3
def create_generator():
gen_input = Input(shape=(LATENT_DIM, ))
x = Dense(128 * 16 * 16)(gen_input)
x = LeakyReLU()(x)
x = Reshape((16, 16, 128))(x)
x = Conv2D(256, 5, padding='same')(x)
x = LeakyReLU()(x)
x = Conv2DTranspose(256, 4, strides=2, padding='same')(x)
x = LeakyReLU()(x)
x = Conv2DTranspose(256, 4, strides=2, padding='same')(x)
x = LeakyReLU()(x)
x = Conv2DTranspose(256, 4, strides=2, padding='same')(x)
x = LeakyReLU()(x)
x = Conv2D(512, 5, padding='same')(x)
- 埃尔法哥哥万物互联的5G时代,将会给我们的生活带来哪些变化?
- 埃尔法哥哥我学python的一点感受
- 埃尔法哥哥使用哪种编程语言的开发人员最幸福?
- 埃尔法哥哥vue移动端开发时,客户端如何判断当前设备是Android还是IOS
- 埃尔法哥哥还可以做扫地机器人啊,自动驾驶不做了
- 埃尔法哥哥短期内难以找到替代华为海思的客户,寒武纪交出上交所答卷
- 埃尔法哥哥人工智能与人类的未来
- 爱搞事的瑞哥哥5G最具性价比手机,华为再次发力!荣耀X10成为标杆
- 牛牛侃天下嫂子卖掉嫁妆养他,结果养出位超级富豪,父亲去世后哥哥辍学打工
- 埃尔法哥哥Arvind Krishna全球首秀,IBM新CEO