DCGAN生成彩色图片

TesrFlow中用DCGAN生成图像代码问题解决 今天在github上找到了 TensorFlow 中用DCGAN生成图像 的项目,试着跑了下,记录两个小问题: 首先,我笔记本是环境是 Windows+python3.6+tensorflow1.13.1 。 解决问题1: 运行程序download.py下载MNIST数据集时,输入以下命令 python download.py mnist 结果报错: Traceback (most rece... 阅读详情

我们以cifar数据集作为训练数据

import tensorflow as tf
import matplotlib.pyplot as plt


import numpy as np

mnist = np.load('images.npy')

print('---------load data successful-----------')
def input_placeholder(img_size,noise_size):
    img=tf.placeholder(dtype=tf.float32,shape=(None,img_size[1],img_size[2],img_size[3]),name='input_image')
    noise=tf.placeholder(dtype=tf.float32,shape=(None,noise_size),name='input_noise')
    return img,noise

def generator(noise_img, output_dim, is_train=True, alpha=0.01):

    with tf.variable_scope("generator") as scope0:
        if not is_train:
            scope0.reuse_variables()

        # 100 x 1 to 4 x 4 x 512
        # 全连接层
        layer1 = tf.layers.dense(noise_img, 4*4*512)
        layer1 = tf.reshape(layer1, [-1, 4, 4, 512])
        layer1 = tf.layers.batch_normalization(layer1, training=is_train)
        # Leaky ReLU
        layer1 = tf.maximum(alpha * layer1, layer1)
        # dropout
        layer1=tf.nn.dropout(layer1,keep_prob=0.9)


        # 4 x 4 x 512 to 8 x 8 x 256
        layer2 = tf.layers.conv2d_transpose(layer1, 256, 4, strides=2, padding='same')
        layer2 = tf.layers.batch_normalization(layer2, training=is_train)
        layer2 = tf.maximum(alpha * layer2, layer2)
        layer2=tf.nn.dropout(layer2,keep_prob=0.9)

        # 8 x 8 256 to 16 x 16 x 128
        layer3 = tf.layers.conv2d_transpose(layer2, 128, 3, strides=2, padding='same')
        layer3 = tf.layers.batch_normalization(layer3, training=is_train)
        layer3 = tf.maximum(alpha * layer3, layer3)
        layer3=tf.nn.dropout(layer3,keep_prob=0.9)

        # 16 x 16 x 128 to 32 x 32 x 3
        logits = tf.layers.conv2d_transpose(layer3, output_dim, 3, strides=2, padding='same')

        outputs = tf.tanh(logits)

        tf.summary.image('input',outputs,10)

        return outputs



def discriminator(img_or_noise, reuse=False, alpha=0.01):
    with tf.variable_scope('discriminator') as scope1:

        if reuse:
            scope1.reuse_variables()

        layer1=tf.layers.conv2d(img_or_noise,128,3,strides=2,padding='same')
        layer1=tf.maximum(alpha*layer1,layer1)
        layer1=tf.nn.dropout(layer1,keep_prob=0.9)


        layer2=tf.layers.conv2d(layer1,256,3,strides=2,padding='same')
        layer2=tf.layers.batch_normalization(layer2,training=True)
        layer2=tf.maximum(alpha*layer2,layer2)
        layer2=tf.nn.dropout(layer2,keep_prob=0.9)

        layer3=tf.layers.conv2d(layer2,512,3,strides=2,padding='same')
        layer3=tf.layers.batch_normalization(layer3,training=True)
        layer3=tf.maximum(alpha*layer3,layer3)
        layer3=tf.nn.dropout(layer3,keep_prob=0.9)

        flatten=tf.reshape(layer3,(-1,4*4*512))
        logits=tf.layers.dense(flatten,1)
        outputs=tf.sigmoid(logits)
        return logits,outputs


def inference(real_img,fake_noise,image_depth=3,smooth=0.1):
    g_outputs=generator(fake_noise,image_depth,is_train=True)
    d_logits_real,d_outputs_real=discriminator(real_img)
    d_logits_fake,d_outputs_fake=discriminator(g_outputs,reuse=True)

    g_loss=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake,
                                        labels=tf.ones_like(d_outputs_fake)*(1-smooth)))

    d_loss_real=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_real,
                                        labels=tf.ones_like(d_outputs_real)*(1-smooth)))

    d_loss_fake=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake,
                                        labels=tf.zeros_like(d_outputs_fake)))

    d_loss=tf.add(d_loss_real,d_loss_fake)

    tf.summary.scalar('d_loss_real', d_loss_real)
    tf.summary.scalar('d_loss_fake', d_loss_fake)



    return g_loss,d_loss

def test(fake_placeholder,output_dim=3,num_images=25):
    with tf.Session() as sess:
        saver.restore(sess,tf.train.latest_checkpoint('checkpoints'))
        fake_shape=fake_placeholder.shape.as_list()[-1]

        fake_images=np.random.uniform(-1,1,size=[num_images,fake_shape])

        samples=sess.run(generator(fake_placeholder,output_dim,is_train=False),
                         feed_dict={fake_placeholder:fake_images})




        plot_image(samples)

def plot_image(samples):

    samples=(samples+1)/2.
    fig,axes=plt.subplots(nrows=5,ncols=5,figsize=(7,7))

    for img,ax in zip(samples,axes.flatten()):        
        ax.imshow(img, cmap='Greys_r')        
        ax.axis('off')


def get_optimizer(g_loss,d_loss,beta=0.4,learning_rate=0.001):
    train_vars=tf.trainable_variables()
    g_vars=[var for var in train_vars if var.name.startswith('generator')]
    d_vars=[var for var in train_vars if var.name.startswith('discriminator')]
    with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
        g_opt=tf.train.AdamOptimizer(learning_rate,beta1=beta).minimize(g_loss,var_list=g_vars)
        d_opt=tf.train.AdamOptimizer(learning_rate,beta1=beta).minimize(d_loss,var_list=d_vars)

    return g_opt,d_opt

def train(real_placeholder,fake_placeholder,g_train_opt,d_train_opt,epoches,noise_size=100,batch_size=64,n_samples=25):
    global_step_=tf.Variable(0,trainable=False)
    with tf.Session() as sess:

        sess.run(tf.global_variables_initializer())

        saver.restore(sess,tf.train.latest_checkpoint('checkpoints'))
        summary_writer = tf.summary.FileWriter('log/', sess.graph)

        for e in range(1,epoches):

            for step in range(len(mnist)//batch_size):
                global_step_=global_step_+1
                images=mnist[step*batch_size:(step+1)*batch_size]


                batch_image=images*2 -1

                batch_noise=np.random.uniform(-1,1,size=(batch_size,noise_size))

                sess.run(g_train_opt,feed_dict={real_placeholder:batch_image,fake_placeholder:batch_noise})


                sess.run(d_train_opt,feed_dict={real_placeholder:batch_image,fake_placeholder:batch_noise})

                summary_str=sess.run(summary,feed_dict={real_placeholder:batch_image,fake_placeholder:batch_noise})

                summary_writer.add_summary(summary_str, step)
                summary_writer.flush()

                if step %50 ==0:

                    train_loss_d=d_loss.eval({real_placeholder:batch_image,fake_placeholder:batch_noise})

                    train_loss_g=g_loss.eval(feed_dict={fake_placeholder:batch_noise})

                    print('step:{}/Epoch:{}/total Epoch:{}'.format(step,e,epoches),
                          'Discriminator Loss:{:.4f}..'.format(train_loss_d),'Generator Loss:{:.4f}..'.format(train_loss_g))

            saver.save(sess,'./checkpoints/generator.ckpt',global_step=global_step_)



with tf.Graph().as_default():

    real_img,fake_img=input_placeholder([-1,32,32,3],noise_size=100)

    g_loss,d_loss=inference(real_img,fake_img)
    summary = tf.summary.merge_all()
    g_train_opt,d_train_opt=get_optimizer(g_loss,d_loss)

    saver=tf.train.Saver()
    train(real_img,fake_img,g_train_opt,d_train_opt,epoches=5)
    test(fake_img,num_images=25)
机器学习笔记 - 基于Torch Hub的DCGAN图像生成 + 调用自定义网络模型 Pytorch Hub 是一个预训练模型存储库,旨在促进研究的可重复性。Torch Hub 允许您发布预先训练的模型,以帮助促进研究共享和可重复性。 Torch Hub 在其官方展示中总共纳入了48个研究模型(目前为止)。音频模型8个、生成式模型2个、自然语言处理 (NLP)3个、可编写脚本20个、视觉模型等等。这些模型还在基准数据集(例如Kinetics 400和COCO 2017)上进行了训练。 阅读详情

相关推荐

深度学习100例-生成对抗网络(DCGAN)生成动漫人物 | 第20天

文章目录一、前言二、什么是生成对抗网络?1. 设置GPU2. 加载和准备数据集三、创建模型1. 生成器2. 判别器四、定义损失函数和优化器1. 判别器损失2. 生成器损失五、保存检查点六、定义训练循环七、训练模型1. 恢复模型参数2. 训练模型3. 创建 GIF八、同系列作品九、数据+模型 一、前言 ???? 我的环境: 语言环境:Python3.6.5 编译器:jupyter notebook 深度学习环境:TensorFlow2.4.1 ???? 深度学习新人必看:《小白入门深度学习》 小白入门深

“365天深度学习训练营”报名进行中~ 5088

DCGAN生成手写体数据

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sun Aug 13 11:24:13 2017@author: no1 """ import tensorflow as tf import matplotlib.pyplot as pltfrom tensorflow.examples.tutorials.mnist im

GAN_player的博客 1646

深度学习100例-生成对抗网络(DCGAN)手写数字生成 | 第19天

文章目录深度卷积生成对抗网络(DCGAN)一、前言二、什么是生成对抗网络?1. 设置GPU2. 加载和准备数据集三、创建模型1. 生成器2. 判别器四、定义损失函数和优化器1. 判别器损失2. 生成器损失五、定义训练循环六、训练模型七、创建 GIF八、同系列作品 深度卷积生成对抗网络(DCGAN) 一、前言 ???? 我的环境: 语言环境:Python3.6.5 编译器:jupyter notebook 深度学习环境:TensorFlow2.4.1 ???? 深度学习新人必看: 小白入门深度学习 |

“365天深度学习训练营”报名进行中~ 3846

生死看淡,不服就GAN(六)----用DCGAN生成马的彩色图片

1. 首先我们需要的一组真实样本集来自cifar10,因此先制作一个读取cifar10的脚本。 """ -------------------------------------------------------生死看淡,不服就GAN------------------------------------------------------------------------- PROJECT:...

Pika 3096

利用PyTorch搭建深度卷积生成对抗网络(DCGAN)生成彩色图像.ipynb

利用PyTorch搭建卷积生成对抗网络生成彩色图像,可参考文章:https://blog.youkuaiyun.com/didi_ya/article/details/121670277

Colorization_GAN:使用条件生成对抗网络进行灰度图像着色

着色_GAN 使用条件生成对抗网络进行灰度图像着色。 这是DCGAN的PyTorch实现,如论文“中所述 先决条件 Python 3.6 火炬 方法 在传统GAN中,发生器的输入是随机产生的噪声数据z。 但是,由于其输入的性质,该方法不适用于自动着色问题。 必须修改发生器,以接受灰度图像作为输入而不是噪声。 通过使用称为的GAN变体解决了此问题。 由于没有引入噪声,因此将生成器的输入视为零噪声,而将灰阶输入作为先验: 鉴别器从生成器和原始数据中获取彩色图像,并以灰度输入作为条件,并试图分辨出哪对包含真正的彩色图像: 网络架构 生成器的体系结构受U-Net的启发:模型的体系结构是对称的,具有n个编码单元和n个解码单元。 为了区分,我们使用类似的架构作为基线收缩路径。 数据集 我们使用CIFAR-10数据集。 要培养对fulldataset模式,下载数据集。 参考 使用GAN进行图像着

DCGAN生成彩色头像

最近是一段特殊时期,因为发热,虽然未到过疫区或接触过疑似患者,但仍被要求在家隔离,本人非计算机专业,业余爱好编程,最感兴趣的是深度神经网络,天天看大佬们发各种博文或帖子,一直再学习,刚好利用在家隔离的时间,看了一些东西,也算略有所得,计算机专业飘过即可,和我一样的爱好者可以看看。 关于DCGAN的原理不再赘述,优快云里有太多博文,直接上自己的代码,当然参考了不少网友的博文,最初是学习应用GAN生...

delcomp的博客 650

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 227

Matalb实现基于生成对抗网络(GAN)的图片生成——附代码

生成对抗网络 (GAN) 是一种深度学习网络,它能够生成与真实输入数据具有相似特征的数据。本文基于Matlab平台,使用Matlab自带的深度学习工具箱和自带的训练数据,构建了卷积生成对抗网络(DCGAN),实现了对彩色图片的样本生成,其中生成器的输入是噪声序列,输出是生成的图片;判别器的输入是真实的图片和生成器生成的虚伪图片,输出是该图片是真实图片的概率。生成对抗网络训练过程中生成器和判别器互相对抗,最后到达平衡,即生成器生成的图片使得判别器无法判断是真实的还是虚假的。

不定时分享电力优化、神经网络、数学建模等技术等 1万+

后向投影算法(BPA)-SAR成像算法系列(二)

SAR成像算法:后向投影算法(BPA)原理介绍及实现步骤解析。

yjh_2019的博客 1万+

关于影响力最大化问题中贪心算法的一些理解

在影响力最大化问题中(Influence Maximization,以下简称IM),贪心算法是最早提出的一种解决方法,并且一直沿用至今。它基于IM问题所具有的单调性(Monotonicity)和子模性(Submodularity)使用一种Hill Climbing策略,不断使用Monte Carlo模拟来寻找在当前情况下的具有最大传播范围的节点,添加至种子集合,得到最终结果,算法伪代码如下所示: 这里算法1其实并没有使用MonteCarlo模拟,而只是使用了贪心的策略...

nianjuan1990的专栏 2852

如何通过DCGAN实现动漫人物图像的自动生成?

背景基于生成对抗网络(GAN)的动漫人物生成近年来兴起的动漫产业新技术。传统的GAN模型利用反向传播算法,通过生成器和判别器动态对抗,得到一个目标生成模型。由于训练过程不稳定,网络难以收...

淘系技术 5354

AI开发提效10倍:从需求到部署的全流程实战指南(附Prompt模板)

用AI开发不是“偷懒”,而是把时间花在更有价值的地方——原来花80%时间写重复代码,现在用AI搞定后,能把精力放在“优化用户体验”“提升系统性能”这些核心工作上,这才是AI给开发者的真正红利。如果你还没开始用AI做开发,建议从“写一个简单接口”“补一段注释”开始尝试,先用起来再优化方法。记住:AI是工具,不是对手,学会驾驭它,你会发现开发效率提升的同时,还能告别无效加班。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1531

DCGAN生成目标训练图片

前言: GAN的原理很简单,但是它有很多变体,如:DCGAN、CycleGAN、DeblurGAN等,它们也被用在不同地方,本文将用到DCGAN来生成头像图片,可以做到以假乱真的地步。 1.首先调用程序对图片进行标准化 代码如下: from skimage import io,transform,color import numpy as np ​ def conver...

WHY380012801的博客 1505

第4节:cesium 0基础发布离线地图(含源码+视频)

cesium发布离线地图

qq_29384639的博客 1597

从苏宁电器到卡巴斯基第02篇:我的本科时光(中)

怎么还分班了呢? 大概是在大二第二学期的时候吧,学院突然通知我们要分班。因为我们目前所有学生都是属于工商管理专业的,而从下个学期开始,就要分为会计、市场营销以及工商管理这三个方向。这还真是打了我一个措手不及,我都不知道还有分班这一回事。不过也没关系,我继续选择我的工商管理就好了。不过,在实际的选择结果上,像会计和工商管理这种学科,选的人自然是占了绝大多数,而选择市场营销的,大概也就是十

Gleam的专栏 9607

基础 | 如何通过DCGAN实现动漫人物图像的自动生成?

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!文章来源:淘系技术背景基于生成对抗网络(GAN)的动漫人物生成近年来兴起的动漫产业新技术。传统的...

idol24的博客 4609

怎样让你的论文看起来“像人写的”?只用三招直接去除AI味(附提示词)

当然如果你在实际使用中还有其他需求,比如降重润色、改写翻译等,也可以结合七哥的专业写作平台来辅助,这个高级学术平台已经内置了ChatGPT4o、ChatGPT4.1、Claude3.7、满血版DeepSeek-R1等AI大模型,帮你写文献综述、干课题申报、写论文等学术任务绝对每一点问题。比如我自己的一套学术写作平台,其中的“降重与润色”模块整合了多种GPTs应用,除了能帮助调整语言风格、避免雷同表达,还可以顺带降个重,对于提升学术文本的整体质量还是非常有用的。一、为什么用AI写出来的文章会有AI味?

智能AI让学术科研更容易 1686

DCGAN

DCGAN flyfish DCGAN是对GAN的直接扩展,分别在判别器和生成器中明确地使用卷积和卷积转置层。 –dataset 指定训练数据集 –dataroot 数据集的根目录 –workers DataLoader进行数据预处理及数据加载使用进程数 –batchSize 训练中使用的batch大小,DCGAN论文使用的是128 ,我们这里使用的是64 –imageSize 用于训...

二分掌柜的 1289

手把手完整实现STM32+ESP8266+MQTT+阿里云服务器+手机APP应用——第一节—阿里云物联网平台配置+IoTStudio界面绘制+MQTT.fx模拟MQTT客户端与使用AT命令发布订阅消息

通过MQTT.fx模拟连接以及通过CH340串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266(本系列使用了ESP8266-ESP01/01S以及正点原子的ATK-ESP8266) 来连接网络,获取设备数据发送到阿里云物联网平台并显示数据,通过IOT studio界面显示数据并发送命令控制设备。本系列使用的主控芯片是STM32F103系列,当然也可以使用其他系列单片机都可以实现,思路都是一样的。同时本系列有手机APP源

嵌入式阿齐Archie 5万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习:DCGAN

CDGAN(Deep Convolutional Generative Adversarial Networks),是GAN(Generative Adversarial Networks)的一种变体,它特别使用了卷积神经网络(CNNs)作为生成器和判别器的构建模块。DCGAN使用全卷积网络结构代替传统的池化层和全连接层。在生成器中采用转置卷积(也称为分数步长卷积或反卷积)来逐步增加图像的空间维度。在判别器中使用卷积层来逐步减少空间维度并提取特征。

Landy_Jay的博客 1208

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习之生成对抗网络(3)DCGAN实战

深度学习之生成对抗网络(3)DCGAN实战1. 动漫图片数据集2. 生成器3. 判别器4. 训练与可视化判别网络生成网络网络训练5. 完整代码datasetGANGAN_train  本节我们来完成一个二次元动漫头像图片生成实战,参考DCGAN的网络结构,其中判别器D利用普通卷积层实现,生成器G利用转置卷积层实现,其网络结构如下图所示: DCGAN网络结构 1. 动漫图片数据集  这里使用的是一组二次元动漫头像数据集[1][2],共51223张图片,无标注信息,图片主体已裁剪、对齐并统一缩放到96×96

weixin_43360025的博客 2195

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度有趣 | 08 DCGAN人脸图片生成

简介 在人脸数据上训练DCGAN,并生成一些人脸图片 数据 使用两个数据集 LFW:http://vis-www.cs.umass.edu/lfw/,Labeled Faces in the Wild,超过1.3W张图片,其中1680人拥有超过两张或以上图片 CelebA:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html,CelebFaces At...

宏伦工作室 4699

GAN生成彩色图片

import torch import torch.nn as nn from torch.autograd import Variable from torch.utils.data import DataLoader from torchvision import transforms from torchvision import datasets from torchvision.uti...

weixin_38241876的博客 2097

深度学习_GAN_使用PyTorch对DCGAN进行搭建实例

GAN基础概念 对抗生成网络(GAN)是一个教深度模型获取训练数据分布的一种框架,因此我们能够使用类似的分布来生成新的数据。 首先我们进行一些符号定义。xxx表示图像数据。D(x)D(x)D(x)表示判别网络,它的输出表示数据xxx来自于训练数据而不是生成器的概率。这里输入D(x)D(x)D(x)是CHW大小为3×64×643\times64\times643×64×64的图像。直观地说,当xxx...

Rocky Ding相信人工智能、数据科学、商业逻辑、金融工具、终身成长以及顺应时代的潮流会赋予我们超能力。 1689
上一篇: DCGAN生成手写体数据
下一篇: tensorflow中batch_normalization的坑
GAN_player
博客等级 码龄10年 52粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值