昇思学习打卡-22-生成式/DCGAN生成漫画头像

文章目录

  • DCGAN网络
  • 数据处理
  • 构造网络
    • 生成器
    • 判别器
    • 损失函数
    • 优化器
  • 结果展示

我们将学习DCGAN网络如何数据处理、设置网络,包括生成器、判别器、损失函数、优化器等。

DCGAN网络

DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Adversarial Networks)是GAN的直接扩展。不同之处在于,DCGAN会分别在判别器和生成器中使用卷积和转置卷积层。

本教程将使用动漫头像数据集来训练一个生成式对抗网络,接着使用该网络生成动漫头像图片。
首先对陌生概念隐向量进行了解,隐向量通常指的是通过某种分解技术(如矩阵分解)从原始数据中提取出的低维向量,这些向量捕捉了数据中的潜在结构或特征,而这些结构或特征在原始数据中可能是不直接可见或难以直接观测的。
然后,学习DCGAN生成漫画头像

数据处理

通过create_dict_iterator函数将数据转换成字典迭代器

import numpy as np
import mindspore.dataset as ds
import mindspore.dataset.vision as visiondef create_dataset_imagenet(dataset_path):"""数据加载"""dataset = ds.ImageFolderDataset(dataset_path,num_parallel_workers=4,shuffle=True,decode=True)# 数据增强操作transforms = [vision.Resize(image_size),vision.CenterCrop(image_size),vision.HWC2CHW(),lambda x: ((x / 255).astype("float32"))]# 数据映射操作dataset = dataset.project('image')dataset = dataset.map(transforms, 'image')# 批量操作dataset = dataset.batch(batch_size)return datasetdataset = create_dataset_imagenet('./faces')

使用matplotlib模块可视化部分训练数据

import matplotlib.pyplot as pltdef plot_data(data):# 可视化部分训练数据plt.figure(figsize=(10, 3), dpi=140)for i, image in enumerate(data[0][:30], 1):plt.subplot(3, 10, i)plt.axis("off")plt.imshow(image.transpose(1, 2, 0))plt.show()sample_data = next(dataset.create_tuple_iterator(output_numpy=True))
plot_data(sample_data)

在这里插入图片描述

构造网络

生成器

生成器G的功能是将隐向量z映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的 RGB 图像。在实践场景中,该功能是通过一系列Conv2dTranspose转置卷积层来完成的,每个层都与BatchNorm2d层和ReLu激活层配对,输出数据会经过tanh函数,使其返回[-1,1]的数据范围内。

判别器

判别器D是一个二分类网络模型,输出判定该图像为真实图的概率。通过一系列的Conv2d、BatchNorm2d和LeakyReLU层对其进行处理,最后通过Sigmoid激活函数得到最终概率。

DCGAN论文提到,使用卷积而不是通过池化来进行下采样是一个好方法,因为它可以让网络学习自己的池化特征。

损失函数

使用MindSpore中定义的二进制交叉熵损失函数BCELoss

优化器

设置了两个单独的优化器,一个用于D,另一个用于G。这两个都是lr = 0.0002和beta1 = 0.5的Adam优化器。

结果展示

plt.figure(figsize=(10, 5))
plt.title("Generator and Discriminator Loss During Training")
plt.plot(G_losses, label="G", color='blue')
plt.plot(D_losses, label="D", color='orange')
plt.xlabel("iterations")
plt.ylabel("Loss")
plt.legend()
plt.show()

在这里插入图片描述
可视化训练过程中通过隐向量fixed_noise生成的图像。

import matplotlib.pyplot as plt
import matplotlib.animation as animationdef showGif(image_list):show_list = []fig = plt.figure(figsize=(8, 3), dpi=120)for epoch in range(len(image_list)):images = []for i in range(3):row = np.concatenate((image_list[epoch][i * 8:(i + 1) * 8]), axis=1)images.append(row)img = np.clip(np.concatenate((images[:]), axis=0), 0, 1)plt.axis("off")show_list.append([plt.imshow(img)])ani = animation.ArtistAnimation(fig, show_list, interval=1000, repeat_delay=1000, blit=True)ani.save('./dcgan.gif', writer='pillow', fps=1)showGif(image_list)

在这里插入图片描述
在这里插入图片描述

此章节学习到此结束,感谢昇思平台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1487294.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

windows下运行sh文件

1、打开git bash 2、进入sh文件所在文件夹,使用sh xx.sh运行

普发Pfeiffer TPG300手侧配置安装操作技术资疗包含

普发Pfeiffer TPG300手侧配置安装操作技术资疗包含

学习笔记:MySQL数据库操作2

1. 建库建表 创建数据库 mydb8_worker。使用该数据库 mydb8_worker。创建职工表 t_worker,字段包括: department_id: 部门号,整型,不允许为空。worker_id: 职工号,主键,整型,不允许为空。worke…

硬盘数据恢复的基本原理是什么 硬盘数据恢复教程

无论是电脑硬盘,还是日常办公过程中使用系统硬盘,都是由多个存储空间组成的。如果这些存储空间中的信息被删除了,那内部的文件也会跟着消失。下面,小编就以“硬盘数据恢复工具恢复原理,硬盘数据恢复教程”这两个问题为…

昇思25天学习打卡营第18天 | DCGAN生成漫画头像

探索DCGAN在生成动漫头像的实用性 通过深入学习和实践DCGAN(Deep Convolutional Generative Adversarial Networks),我对这种深度学习模型在生成动漫头像方面的应用有了更全面的理解。DCGAN作为一种改进的GAN模型,通过在生成器和…

MP的使用

1、MP简介 MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生 官网:MyBatis-Plus 🚀 为简化开发而生 参考教程:https://baomidou.c…

土地规划中的环境影响评估:守护绿水青山的科学指南

土地规划,作为指导区域开发与保护的蓝图,其决策不仅关乎经济发展,更与生态环境息息相关。环境影响评估(EIA)作为土地规划不可或缺的一环,旨在预测、评估规划项目对自然环境和社会环境的潜在影响&#xff0c…

英语科技写作 希拉里·格拉斯曼-蒂(英文版)pdf下载

下载链接: 链接1:https://pan.baidu.com 链接2:/s/1fxRUGnlJrKEzQVF6k1GmBA 提取码:b69t 由于是英文版,可能有些看着不太方便,可以在网页版使用以下软件中英文对照着看,看着更舒服,…

【echarts区域地图】

背景:我们在制作大屏的时候,经常会使用到echarts制作各种图表,饼图,柱状图,折线图。有时候也会用到地图的交互,使大屏效果看起来更加高级。 我们要完成上面的效果需要准备什么呢? 首先是需要我…

Gson的基本使用:解析Json格式数据 序列化与反序列化

目录 一,Gson和Json 1,Gson 2,Json 3,Gson处理对象的几个重要点 4,序列化和反序列化 二,Gson的使用 1,Gson的创建 2,简单对象序列化 3,对象序列化,格…

基于ansible进行运维自动化的研究以及相关的属性

一、ansible-简介 介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点, 实现了批量系统配置、批量程序部署、批量运行命令等功能。 无客户端。 …

【LeetCode】71.简化路径

1. 题目 2. 分析 3. 代码 我写了一版很复杂的代码&#xff1a; class Solution:def simplifyPath(self, path: str) -> str:operator [] # 操作符的栈dir_name [] # 文件名的栈idx 0cur_dir_name ""while(idx < len(path)):if path[idx] /:operator.ap…

最新可用度盘不限速后台系统源码_去授权开心版

某宝同款度盘不限速后台系统源码&#xff0c;验证已被我去除&#xff0c;两个后端系统&#xff0c;账号和卡密系统 第一步安装宝塔&#xff0c;部署卡密系统&#xff0c;需要环境php7.4 把源码丢进去&#xff0c;设置php7.4&#xff0c;和伪静态为thinkphp直接访问安装就行 …

音频处理过程

1、音频 &#xff08;1&#xff09;打开设备 &#xff08;2&#xff09;从音频设备中读取数据 &#xff08;3&#xff09;将音频设备中读取的数据写入文件夹中 &#xff08;4&#xff09; 通过界面控制开始录制和结束录制&#xff08;使用多线程和状态码控制&#xff09; &…

C++与C中,由函数形参test(int *a)引出的问题

文章参考来源&#xff1a; 1.c函数中形参为引用的情况&#xff1b;C中a和&a的区别 描述&#xff1a; 最近在看循环单链表时&#xff0c;看到有篇文章中&#xff0c;链表初始化函数为图下&#xff0c;我在想&#xff0c;这个函数形参(类似 "int * & a"一样)到…

【C# WInForm】将TextBox从输入框设置为文本框

1.需求情形&#xff1a; textbox作为最常用的控件之一&#xff0c;通常是用来输入文本信息或者显示文字&#xff0c;但是如果要在界面中显示大段文本&#xff0c;一个带有边框、可选中的文本样式似乎不合适。像这样&#xff1a; 我需要的是这段文字不仅能跨行&#xff0c;而且…

Geoserver介绍与安装

Geoserver简介 概览 GeoServer是一个使用Java编写的&#xff0c;允许用户分享、编辑地理空间数据的开源软件。它在设计时就考虑了互操作性&#xff0c;其支持使用开放标准发布多数主流格式的空间数据。 作为一个社区驱动的项目&#xff0c;GeoServer由来自世界各地的个人和组…

记一次因敏感信息泄露而导致的越权+存储型XSS

1、寻找测试目标 可能各位师傅会有苦于不知道如何寻找测试目标的烦恼&#xff0c;这里我惯用的就是寻找可进站的思路。这个思路分为两种&#xff0c;一是弱口令进站测试&#xff0c;二是可注册进站测试。依照这个思路&#xff0c;我依旧是用鹰图进行了一波资产的搜集&#xff…

HTTP模块(二)

HTTP 设置 HTTP 响应报文 HTTP报文常见属性&#xff1a; const http require(http);const server http.createServer((request, response) > {// 设置请求状态码 2xx 4xx 5xxresponse.statusCode 200;// 设置请求描述 了解即可response.statusMessage hello// 指定响…

Vue3 study

Vue3 工程 创建 还是能像 vue2 一样通过 vue-cli 创建&#xff0c;即 vue create projectName 但是官方更推荐 vite 创建&#xff0c;即 npm create vuelatest&#xff0c;然后从项目名开始配置 总结&#xff1a;入口在 index.html&#xff0c;它会引入 main.ts&#xff0c;…