Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建

news2024/9/24 11:24:45

Mindspore框架DCGAN模型实现漫画头像生成

  1. Mindspore框架DCGAN模型实现漫画头像生成|(一)漫画头像数据集准备
  2. Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
  3. Mindspore框架DCGAN模型实现漫画头像生成|(三)DCGAN模型训练和推理
  4. Mindspore框架DCGAN模型实现漫画头像生成|(四)应用程序生成实践

Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建

DCGAN,全称是 Deep Convolution Generative Adversarial Networks,深度卷积生成对抗网络

1. DCGAN模型特点

  • make GAN + CNN more stable and deeper,能够产生更高分辨率的图像;
  • 全卷积网络(all convolutional net):用步幅卷积(strided convolutions)替代确定性空间池化函数(deterministic spatial pooling functions)(比如最大池化),让网络自己学习downsampling方式。作者对 generator 和 discriminator 都采用了这种方法。
  • 取消全连接层:使用 全局平均池化(global average pooling)替代 fully connected layer。global average pooling会降低收敛速度,但是可以提高模型的稳定性。GAN的输入采用均匀分布初始化,可能会使用全连接层(矩阵相乘),然后得到的结果可以reshape成一个4 dimension的tensor,然后后面堆叠卷积层即可;对于鉴别器,最后的卷积层可以先flatten,然后送入一个sigmoid分类器。
  • 批归一化(Batch Normalization):BN 被证明是深度学习中非常重要的 加速收敛 和 减缓过拟合 的手段。这样有助于解决 poor initialization 问题并帮助梯度流向更深的网络。防止G把所有rand input都折叠到一个点,同时防止样本震荡和模型的不稳定,只对生成器(G)的输出层和鉴别器(D)的输入层使用BN。
  • Leaky Relu 激活函数: 生成器(G),输出层使用tanh 激活函数,其余层使用relu 激活函数。鉴别器(D),都采用leaky rectified activation。
  • DCGAN生成器G的结构如下:
    在这里插入图片描述

2. 构造网络:生成器G

生成器G的功能是将隐向量z映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的 RGB 图像。

import mindspore as ms
from mindspore import nn, ops
from mindspore.common.initializer import Normal

weight_init = Normal(mean=0, sigma=0.02)
gamma_init = Normal(mean=1, sigma=0.02)

# 通过输入部分中设置的nz、ngf和nc来影响代码中的生成器结构。
class Generator(nn.Cell):
    """DCGAN网络生成器"""

    def __init__(self):
        super(Generator, self).__init__()
        self.generator = nn.SequentialCell(
            nn.Conv2dTranspose(nz, ngf * 8, 4, 1, 'valid', weight_init=weight_init),
            nn.BatchNorm2d(ngf * 8, gamma_init=gamma_init),
            nn.ReLU(),
            nn.Conv2dTranspose(ngf * 8, ngf * 4, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf * 4, gamma_init=gamma_init),
            nn.ReLU(),
            nn.Conv2dTranspose(ngf * 4, ngf * 2, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf * 2, gamma_init=gamma_init),
            nn.ReLU(),
            nn.Conv2dTranspose(ngf * 2, ngf, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf, gamma_init=gamma_init),
            nn.ReLU(),
            nn.Conv2dTranspose(ngf, nc, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.Tanh()
            )

    def construct(self, x):
        return self.generator(x)

generator = Generator()

注意:nz是隐向量z的长度,ngf与通过生成器传播的特征图的大小有关,nc是输出图像中的通道数
在这里插入图片描述

2. 构造网络:判别器D

判别器D是一个二分类网络模型,输出判定该图像为真实图的概率。形如:
在这里插入图片描述

通过一系列的Conv2d、BatchNorm2d和LeakyReLU层对其进行处理,最后通过Sigmoid激活函数得到最终概率。

class Discriminator(nn.Cell):
    """DCGAN网络判别器"""

    def __init__(self):
        super(Discriminator, self).__init__()
        self.discriminator = nn.SequentialCell(
            nn.Conv2d(nc, ndf, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.LeakyReLU(0.2),
            nn.Conv2d(ndf, ndf * 2, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf * 2, gamma_init=gamma_init),
            nn.LeakyReLU(0.2),
            nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf * 4, gamma_init=gamma_init),
            nn.LeakyReLU(0.2),
            nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 'pad', 1, weight_init=weight_init),
            nn.BatchNorm2d(ngf * 8, gamma_init=gamma_init),
            nn.LeakyReLU(0.2),
            nn.Conv2d(ndf * 8, 1, 4, 1, 'valid', weight_init=weight_init),
            )
        self.adv_layer = nn.Sigmoid()

    def construct(self, x):
        out = self.discriminator(x)
        out = out.reshape(out.shape[0], -1)
        return self.adv_layer(out)

discriminator = Discriminator()

模型结构输出:
在这里插入图片描述

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

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

相关文章

广州市广州城市信息模型(CIM)白皮书学习

一级标题 二级标题 框架 四级标题 五级标题 六级标题 CIM平台定义 以建筑信息模型(BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据,构建起三维数字空间的城市…

主持人大赛活动流程和规则

比赛内容: ①命题主持三分钟 选手抽签获得一命题主持内容,思考三十秒后开始主持 ②模拟主持两分钟 选手提前自己准备好,模拟主持一段电视或广播节目。 要求创意新颖、声情并茂。 ③即兴演讲两分钟 选手现场抽题。抽到一个话题,思…

算法021:山脉数组的峰顶索引

山脉数组的峰顶索引. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/peak-index-in-a-mountain-array/ 这个题,看似好像不是递增或者递减数组&#xff…

【网络安全入门】学习网络安全必须知道的77个网络基础知识

1、TCP/IP 协议的四层模型(网络接口层、网络层、传输层、应用层) TCP/IP 协议是互联网通信的基础,四层模型中,网络接口层负责与物理网络的连接;网络层主要处理 IP 数据包的路由和转发;传输层提供端到端的可…

电路原理分析

文章目录 0 基础符号说明电容电感电阻U/IC二极管三极管变压器杂合元件IGBT电机运放开关TPJ高组态电阻上拉电阻可靠高电平提高驱动能力阻值选择下拉电阻可靠低电平晶振压电效应晶振原理实物电荷泵电路防倒灌电路0 基础符号说明 电容 电容 C Electrolytic capacitor 电解电容 E…

内网穿透--LCX端口转发实验

实验背景 通过公司带有防火墙功能的路由器接入互联网,然后由于私网IP的缘故,公网无法直接访问内部主机,通过端口转发,穿透访问内网主机服务。 实验设备 1.路由器一台,实现内部 DHCP 分配和边界 NAT 2.外网 window20…

Java语言程序设计——篇十一(3)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

JavaFX布局-ButtonBar

JavaFX布局-ButtonBar 常用属性buttonOrderpaddingbuttonMinWidth 实现方式Java实现fxml实现 一个特殊的容器,用于创建一组按钮,水平排列按钮太多,会被遮住,不会自动产生滚动条 常用属性 buttonOrder 预制顺序 buttonBar.setBut…

别再盲目推广了!Xinstall助你开启App线下推广新篇章

在这个数字化飞速发展的时代,App已经成为我们生活中不可或缺的一部分。然而,App市场的竞争也日益激烈,如何让你的App在众多竞争者中脱颖而出,成为每个推广者必须面对的问题。今天,就让我们一起探讨一下App线下推广的痛…

【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分

【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分 本文承接文章【2024】Datawhale AI夏令营 Task3笔记——Baseline2部分代码解读及初步上分思路,对其中vllm加速方式进行修改,推理速度获得了极大提升。另外,…

【JAVA入门】Day17 - GUI

【JAVA入门】Day17 - GUI 文章目录 【JAVA入门】Day17 - GUI一、组件二、事件 GUI 即图形化界面。 一、组件 一个 Java 的图形化界面项目主要用到了下面几种组件。 Java 中最外层的窗体叫做 JFrame。Java 中最上层的菜单叫做 JMenuBar。Java 中管理文字和图片的容器叫做 JLab…

快速体验LLaMA3模型微调(超算互联网平台国产异构加速卡DCU)

序言 本文以 LLaMA-Factory 为例,在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE,对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。 超算互联网平台 异构加速卡AI 显存64GB PCIE 一、参考资料 github仓库代码:LLaMA-Fac…

C#中的Winform基础

program 每个Windows应用程序都会有一个Program类——程序入口点 [STAThread] ----指示应用程序的COM线程模型是单线程单元(如果无此特性,无法工作) static voidMain() —— 入口 System.Windows.Forms.Application类提供一系列静态方法和…

【C++】一堆数组案例 元素逆置

所谓元素逆置就是把一堆数组的元素顺序反过来 例如一堆数组的为 1,2,3,4 那么它的逆置为 4,3,2,1 逆置过程运用赋值存储的思想,先把第一个数组存贮到一个变量中,然后把末尾数组…

开源LivePortrait,快速实现表情包自定义

最近可灵AI很火,看到网上生成的效果也很赞啊,之前发现快手可灵开源了LivePortrait,今天去玩了一下,很有意思。 比如下图官方展示效果: 这些图片开始自带表情了,主要就是通过LivePortrait来实现。 LivePor…

浏览器用户文件夹详解 - Top Sites(七)

1. TopSites简介 1.1 什么是TopSites文件? TopSites文件是Chromium浏览器中用于存储用户访问频率最高的网站信息的一个重要文件。每当用户在浏览器中访问网站时,这些信息都会被记录在TopSites文件中。通过这些记录,浏览器可以为用户提供个性…

校园抢课助手【7】-抢课接口限流

在上一节中,该接口已经接受过风控的处理,过滤掉了机器人脚本请求,剩下都是人为的下单请求。为了防止用户短时间内高频率点击抢课链接,海量请求造成服务器过载,这里使用接口限流算法。 先介绍下几种常用的接口限流策略…

脚拉脚模型笔记

脚拉脚模型 ⌈♪⌋例题: 辅助线(中点)做法: 倍长中线Rt △ △ △ 斜边中线等腰 △ △ △ 三线合一中位线 需要:两个等腰三角形,顶角互补 共__底点__ 底角需要连接 解: ∵ D Q 1 / 2 A B O…

中国人工智能最好50所大学排名-2024年最强学校名单

人工智能最强的学校包含:清华大学、上海交通大学、南京大学、西安电子科技大学、电子科技大学、中国科学技术大学、哈尔滨工业大学、华中科技大学、东南大学、浙江大学等学校。这些都是人工智能专业排名全国前十的名牌大学。 圆梦小灯塔将在下文继续为2024年高考生…

鸿蒙应用开发 DevEcoStudio 汉化

步骤 DevEcoStudio 是默认支持中文的,只是默认是关闭的,需要在已安装的插件中搜索 Chinese 关键字,然后启用并重启即可(注意:是在已安装的插件中搜索)。 1. 2. 3. 重启就行