深度学习——基于TensorFlow的生成模型实验

编程入门 行业动态 更新时间:2024-10-09 17:24:58

<a href=https://www.elefans.com/category/jswz/34/1769690.html style=深度学习——基于TensorFlow的生成模型实验"/>

深度学习——基于TensorFlow的生成模型实验

风格迁移和对抗生成网络

  • 风格迁移:风格迁移,就是在开始前使用两张图片,一张图片作为风格图片,一张图片作为内容图片,我们将风格图片的风格和内容图片的内容提取出来,通过我们的网络模型进行训练,将其组合成一个新的图片,新的突破保留了风格图片的风格,也保留了内容图片的内容



核心思想

  1. 提取图片内容
  2. 给图片施加风格(纹理)
  • GAN网络:GAN网络,又叫对抗生成神经网络,因为对抗的意义就是——不服就是干(GAN)!

    • 该网络由两个部分组成:

      • 生成器(Generator):生成图片
      • 鉴定器(Discriminator):鉴定图片
    • 其原理就是,生成器生成的图片会送到鉴定器中去做鉴定,如果鉴定器鉴定为假,那么生成器就得继续生成图片,直到鉴定为真,而我们的目的,就是让生成器和鉴定器做对抗,为了能够生成鉴定为真的图片,生成器网络就会不断地训练自己,让自己变得强大,让自己生成的图片尽可能的靠近真的图片,而这个过程就是一个对抗的过程,所以又叫对抗生成神经网络,又有点类似于进化论的意思,神经网络,也是能够在不断地训练进化的!

    • 举个栗子:

      • 鸟和虫的对抗:众所周知,早起的鸟儿有虫吃,虫子被吃多了,要反抗,怎么办,就开始进化,让自己的身体的颜色融入环境,形成保护自己不被鸟发现的手段,那虫子都进化了,鸟没东西吃了咋办,就得让自己的眼力变得更好、更强、更能发现虫子的踪迹,不断地对抗博弈、不断地进化

模型构建

  • 风格迁移


    GAN网络:核心:生成器的反卷积!

生成器:

generator_input= keras.Input(shape=(latent_dim,))  # latent_dim= 32
x = layers.Dense(128 * 16 * 16)(generator_input) 
x = layers.LeakyReLU()(x) 
x = layers.Reshape((16, 16, 128))(x) 
x = layers.Conv2DTranspose(256, 4, strides=2, padding='same')(x) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(256, 5, padding='same')(x) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(256, 5, padding='same')(x) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(3, 7, activation='tanh', padding='same')(x)
generator = keras.models.Model(generator_input, x) 
generator.summary()

鉴别器:

discriminator_input= layers.Input(shape=(height, width, channels)) 
x = layers.Conv2D(128, 3)(discriminator_input) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(128, 4, strides=2)(x) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(128, 4, strides=2)(x) 
x = layers.LeakyReLU()(x) 
x = layers.Conv2D(128, 4, strides=2)(x) 
x = layers.LeakyReLU()(x) 
x = layers.Flatten()(x) 
x = layers.Dropout(0.4)(x) 
x = layers.Dense(1, activation='sigmoid')(x) 
discriminator = keras.models.Model(discriminator_input, x) 
discriminator.summary()


最后组合起来:

实验过程

  1. 风格迁移:
  • 内容图片:

  • 风格图片:

  • 目标图片:

  1. GAN网络
  • 实现该网络有几个重要步骤:

    • 定义一个鉴定器,并且训练鉴定器,让鉴定器拥有能够区别真图和假图的功能

    • 定义一个生成器,让生成器能够生成图片

    • 将生成器和鉴定器连接,组成一个新的神经网络,让生成器的输出图片作为鉴定器的输入图片,对图片进行鉴定

    • 将整个神经网络的结果判为真,即输出的图片为真,鉴定器的鉴定结果也为真,所以生成器的输出结果也会不断地朝真的方向训练,使得其输出的图片逐渐靠近真相

真值表:

神经网络 = 鉴定器 ∩ 生成器,现在已知神经网络和鉴定器的值为真,所以可以求出生成器的值也应该为真,所以生成器的真值在训练的过程中会不断地向1靠近

神经网络鉴定器生成器
11x→1




从一开始啥也看不清,最后能稍微辨别出裤子衣服和鞋子,这就是生成器在不断训练进化地证明

  1. 图像修复:
  • 从GAN网络中我们知道,训练的最后,生成器已经可以根据输入图片而自动的恢复一些特征,让图片变得更靠近原始图片,这就是图像修复的功能

  • 输入的噪声图片:

  • 不断训练后修复的图片:

  • 原始图片:


    可以看出,修复后的图片虽然和原石图片仍有一些差距,但是与噪声图片相比,确实是恢复了不少的细节

更多推荐

深度学习——基于TensorFlow的生成模型实验

本文发布于:2024-03-15 10:13:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738662.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:深度   模型   TensorFlow

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!