【项目实践】DCGAN绘制理想女朋友照片实践,从爬虫到生产女友

DCGAN实战记录 一开始参考博客学习笔记:GAN和DCGAN入门并在github上下载了代码。 根据该博主的教程直接上自己的数据集(很小,一百多张图片) 有几个令人头疼的bug: NameError: name 'j' is not defined 在该链接中找到了组织,也尝试按照大家都说好的解决办法修改 1,2觉得是有用的,但3还是有问题,而且觉得该解决方案给的程序问题很大,cropped_image压... 阅读详情

点击上方AI派,订阅我!此刻开始我们一起学习进步!

AI派在读学生小姐姐Beyonce

Java实战项目练习群

长按识别下方二维码,按需求添加

扫码添加Beyonce小姐姐

扫码关注

进Java学习大礼包

1、项目流程的简介

   项目的主题框架使用为PyTorch的形式实现,而模型的选择为DCGAN模型,数据集的获取是通过爬虫从网络中获取的数据,然后通过目标检测获取妹子们的头像。

2、项目主题部分

2.1、数据集的获取

    这里获取的图片都是乃木坂46成员的图片,一方面我作为饭乃团的SDD,里面的成员我都喜欢,另一方面,风格上也大致相似,可能会有利于训练。

#!/usr/bin/env python
# -*- coding:utf-8 -*-




import os
import re
import urllib
import json
import socket
import urllib
import urllib2
import pdb




# 设置超时
import time




timeout = 5
socket.setdefaulttimeout(timeout)








class Crawler:
    # 睡眠时长
    __time_sleep = 0.1
    __amount = 0
    __start_amount = 0
    __counter = 0




    # 获取图片url内容等
    # t 下载图片时间间隔
    def __init__(self, t=0.1):
        self.time_sleep = t




    # 开始获取
    def __getImages(self, word=u'美女'):
        search = urllib.quote(word)
        # pn int 图片数
        pn = self.__start_amount
        while pn < self.__amount:




            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
            url = 'http://image.baidu.com/search/avatarjson?tn=resultjsonavatarnew&ie=utf-8&word=' + search + '&cg=girl&pn=' + str(
                pn) + '&rn=60&itg=0&z=0&fr=&width=&height=&lm=-1&ic=0&s=0&st=-1&gsm=1e0000001e'
            # 设置header防ban
            try:
                time.sleep(self.time_sleep)
                req = urllib2.Request(url=url, headers=headers)
                page = urllib2.urlopen(req)
                data = page.read().decode('utf8')
            except UnicodeDecodeError as e:
                print('-----UnicodeDecodeErrorurl:', url)
            except urllib2.URLError as e:
                print("-----urlErrorurl:", url)
            except socket.timeout as e:
                print("-----socket timout:", url)
            else:
                # 解析json
                json_data = json.loads(data)
                self.__saveImage(json_data, word)
                # 读取下一页
                print(u"下载下一页")
                pn += 60
            finally:
                page.close()
        print(u"下载任务结束")
        return




    # 保存图片
    def __saveImage(self, json, word):
        # pdb.set_trace()
        cnname = word.decode('utf-8').encode('gb2312')
        savefolder = "./test/" + word
        savefolder = savefolder.decode('utf-8').encode('gb2312')
        if not os.path.exists(savefolder):
            os.mkdir(savefolder)
        # 判断名字是否重复,获取图片长度
        self.__counter = len(os.listdir(savefolder)) + 1
        for info in json['imgs']:
            try:
                if self.__downloadImage(info, word) == False:
                    self.__counter -= 1
            except urllib2.HTTPError as urllib_err:
                print(urllib_err)
                pass
            except Exception as err:
                time.sleep(1)
                print(err);
                print(u"产生未知错误,放弃保存")
                continue
            finally:
                showstr = word+":图+1,已有" + str(self.__counter) + "张图"
                print(showstr.decode('utf-8').encode('gb2312'))
                self.__counter += 1
        return




    # 下载图片
    def __downloadImage(self, info, word):
        # pdb.set_trace()
        time.sleep(self.time_sleep)
        fix = self.__getFix(info['objURL'])
        savepath = './test/' + word + '/' + str(self.__counter) + str(fix)
        savepath = savepath.decode('utf-8').encode('gb2312')
        urllib.urlretrieve(info['objURL'], savepath)




    # 获取后缀名
    def __getFix(self, name):
        m = re.search(r'\.[^\.]*$', name)
        if m.group(0) and len(m.group(0)) <= 5:
            return m.group(0)
        else:
            return '.jpeg'




    # 获取前缀
    def __getPrefix(self, name):
        return name[:name.find('.')]




    # page_number 需要抓取数据页数 总抓取图片数量为 页数x60
    # start_page 起始页数
    def start(self, word, spider_page_num=1, start_page=1):
        self.__start_amount = (start_page - 1) * 60
        self.__amount = spider_page_num * 60 + self.__start_amount
        self.__getImages(word)








member = ['秋元真夏','生田绘梨花','生驹里奈','伊藤万理华','井上小百合','卫藤美彩','川后阳菜','川村真洋','斋藤飞鸟','斋藤千春','斉藤优里','樱井玲香','白石麻衣','深川麻衣','桥本奈奈未','高山一実','中田花奈','中元日芽香','西野七濑','能条爱未','樋口日奈','星野南','永岛圣罗','伊藤宁宁','畠中清罗','松村沙友理','若月佑美','和田玛雅','松井玲奈','渡边迷离爱','柏幸奈','新内真衣','北野日奈子','堀未央奈','伊藤卡琳','寺田兰世','佐佐木琴子','山崎怜奈','伊藤纯奈','铃木绚音','相乐伊织','伊藤理理杏','岩本莲加','梅泽美波','大园桃子','久保史绪里','阪口珠美','佐藤枫','中村丽乃','向井叶月','山下美月','吉田绫乃克莉丝蒂','与田祐希']
crawler = Crawler(0.05)
for membername in member:
  crawler.start(membername, 17)
# crawler.start('二次元 性感', 3, 3)
# crawler.start('帅哥', 5)

2.1.1、目标检测获取头像

    这部分其实用到的是opencv中自带的adaboost的目标检测算法,人脸检测的话使用haar特征可以去的不错的效果。

    这方面如果要去补学术方面的知识的话,建议出门右手边谷歌adaboost。

import cv2
import sys
import os.path
from glob import glob




def detect(filename, cascade_file="haarcascade_frontalface_alt.xml"):
    if not os.path.isfile(cascade_file):
        raise RuntimeError("%s: not found" % cascade_file)




    cascade = cv2.CascadeClassifier(cascade_file)
    image = cv2.imread(filename)
    if image==None: # read failure and skip this image
      return
    if image.shape[2]==1: # drop gray images
      return
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist(gray)




    faces = cascade.detectMultiScale(gray,
                                     # detector options
                                     scaleFactor=1.1,
                                     minNeighbors=3,
                                     minSize=(96, 96))
    for i, (x, y, w, h) in enumerate(faces):
        face = image[y: y + h, x:x + w, :]
        face = cv2.resize(face, (96, 96))
        save_filename = '%s-%d.jpg' % (os.path.basename(filename).split('.')[0], i)
        cv2.imwrite("face/" + save_filename, face)








if __name__ == '__main__':
    if os.path.exists('face') is False:
        os.makedirs('face')
    file_list = glob('./test/ikoma/*.jp*')
    for filename in file_list:
        print filename
        detect(filename)

    事实上,检测人脸可以使用一些deep learning的网络,准确度会高,但是通常速度上会比基于adaboost算法的要慢,因此在这里我并未使用人脸检测的深度学习的网络。

2.1.2、DCGAN

DCGAN网络设计中采用了当时对CNN比较流行的改进方案:

(1)将空间池化层用卷积层替代,这种替代只需要将卷积的步长stride设置为大于1的数值。改进的意义是下采样过程不再是固定的抛弃某些位置的像素值,而是可以让网络自己去学习下采样方式。

(2)将全连接层去除,(我前面关于VGG的文章分析了全连接层是如何大幅度增加网络参数数量的);作者通过实验发现了全局均值池化有助于模型的稳定性但是降低了模型的收敛速度;作者在这里说明了他是通过将生成器输入的噪声reshape成4D的张量,来实现不用全连接而是用卷积的。

(3)采用BN层,BN的全称是Batch Normalization,是一种用于常用于卷积层后面的归一化方法,起到帮助网络的收敛等作用。作者实验中发现对所有的层都使用BN会造成采样的震荡(我也不理解什么是采样的震荡,我猜是生成图像趋于同样的模式或者生成图像质量忽高忽低)和网络不稳定。

    在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。

    以上只是大致说了一下GAN的核心原理,如何用数学语言描述呢?这里直接摘录论文里的公式:

简单分析一下这个公式:

    整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。

    D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。

    G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。

    D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)

    那么如何用随机梯度下降法训练D和G?论文中也给出了算法:

    这里红框圈出的部分是我们要额外注意的。第一步我们训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。

# Generator Code




class Generator(nn.Module):
    def __init__(self, ngpu):
        super(Generator, self).__init__()
        self.ngpu = ngpu
        self.main = nn.Sequential(
            # input is Z, going into a convolution
            nn.ConvTranspose2d( nz, ngf * 8, 4, 1, 0, bias=False),
            nn.BatchNorm2d(ngf * 8),
            nn.ReLU(True),
            # state size. (ngf*8) x 4 x 4
            nn.ConvTranspose2d(ngf * 8, ngf * 4, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf * 4),
            nn.ReLU(True),
            # state size. (ngf*4) x 8 x 8
            nn.ConvTranspose2d( ngf * 4, ngf * 2, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf * 2),
            nn.ReLU(True),
            # state size. (ngf*2) x 16 x 16
            nn.ConvTranspose2d( ngf * 2, ngf, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ngf),
            nn.ReLU(True),
            # state size. (ngf) x 32 x 32
            nn.ConvTranspose2d( ngf, nc, 4, 2, 1, bias=False),
            nn.Tanh()
            # state size. (nc) x 64 x 64
        )




    def forward(self, input):
        return self.main(input)








class Discriminator(nn.Module):
    def __init__(self, ngpu):
        super(Discriminator, self).__init__()
        self.ngpu = ngpu
        self.main = nn.Sequential(
            # input is (nc) x 64 x 64
            nn.Conv2d(nc, ndf, 4, 2, 1, bias=False),
            nn.LeakyReLU(0.2, inplace=True),
            # state size. (ndf) x 32 x 32
            nn.Conv2d(ndf, ndf * 2, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 2),
            nn.LeakyReLU(0.2, inplace=True),
            # state size. (ndf*2) x 16 x 16
            nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 4),
            nn.LeakyReLU(0.2, inplace=True),
            # state size. (ndf*4) x 8 x 8
            nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 1, bias=False),
            nn.BatchNorm2d(ndf * 8),
            nn.LeakyReLU(0.2, inplace=True),
            # state size. (ndf*8) x 4 x 4
            nn.Conv2d(ndf * 8, 1, 4, 1, 0, bias=False),
            nn.Sigmoid()
        )




    def forward(self, input):
        return self.main(input)

2.2、测试结果

epoch=1

epoch=10

epoch=100

训练过程展示

参考:

https://github.com/kong36088/BaiduImageSpider

https://link.zhihu.com/?target=http%3A//kinolien.github.io/gitzip/

https://zhuanlan.zhihu.com/p/24767059

关注公众号,回复【DCGAN】即可获得完整的项目代码以及文档说明。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的程Beyonce

一定要备注【高清图】哦

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

【对抗网络】DCGAN模型讲解和代码实现 DCGAN就是将CNN和原始地GAN结合到一起,生成模型和判别模型都运用了深度卷积神经网络的生成对抗网络。DCGAN将CNN和GAN结合,奠定了之后几乎所有GAN的基本网络架构。总之,DCGAN极大地提升了原始GAN训练地稳定性和生成结果质量。 阅读详情

相关推荐

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 220

python+DCGAN模型生成验证码+训练CNN模型+测试模型准确率

python+DCGAN模型生成验证码+训练CNN模型+测试模型准确率 目录python+DCGAN模型生成验证码+训练CNN模型+测试模型准确率前言摘要本文主要解决的问题一、生成验证码二、定义DCGAN模型生成器判别器三、训练DCGAN模型 前言 好久不见呀,朋友们,这篇文章已经是“蓄谋已久”的了,一直没有时间编写,今天总算挤出点时间来好好写写了。 因为之前有在看深度学习的书籍,并写了python生成验证码→处理验证码→建立CNN模型训练→测试模型准确率→识别验证码这篇博客,当时对CNN和GAN两个模型

微信公众号 2742

高通camera调试经验总结

修改AF对焦模式 adb shell setprop vendor.debug.camera.af.manual 2 //使能手动对焦 adb shell setprop vendor.debug.camera.af.manual 0 //使能自动对焦

weixin_43381364的博客 1万+

DCGAN入门:以人脸生成为例

一个简单的DCGAN实现,使用的是Pytorch,完整代码已经放到GitHub,欢迎试玩:https://github.com/qq995431104/DCGAN-Pytorch.git。 一、DCGAN简介 DCGAN是CNN在无监督学习领域的一个典型应用,是Radford在2016年发表的论文——Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks提出的网络结构,..

AI数据工厂 1900

【加密社】私钥碰撞器,秒杀市面上的碰撞器

基于上述的逻辑和代码,开发了ETH挖掘器(图1.1)这里有个亮点是:1.很多开发者在判断地址是否有效的环节上,用的是查询余额,其实这是不对的,查询余额你可能只能查询对应代币的余额,例如usdt,eth等但是如果用查询交易次数就不一样了,你只要是交易过,我就认为是有效钱包,这样的速度比查询余额要快,也要更准确。2.rpc节点可配置。

加密社的博客 1582

解锁Jetbrains AI助手:中国开发者实战配置与效率跃迁指南

本文为中国开发者提供了一份详细的Jetbrains AI助手实战配置指南。针对服务地域限制,核心解决方案是通过修改Jetbrains账户区域信息并配置网络代理,实现插件的稳定启用。文章进一步分享了AI助手在解读遗留代码、生成中文提交信息、智能问答等场景下的具体应用,旨在帮助开发者深度集成这一工具,实现编码生产力的显著提升。

weixin_28832121的博客 579

pytorch实现dcgan_加载pytorch格式的dcgan已训练网络并测试

加载pytorch格式的dcgan已训练网络并测试加载pytorch格式的dcgan已训练网络并测试建立的dcgan网络通过之后可以得到生成网络netG.pkl文件和鉴别网络netD.pkl文件,加载这些网络输入参数即可得到结果。这里显示了生成网络的加载及测试。同时也调用了网络结构显示的库,以pdf的形式显示所加载的网络的具体结构。'''Created on 2020年10月27日@author:...

weixin_33363025的博客 317

DANN实战:用Python手把手教你实现对抗迁移学习(附完整代码)

本文通过Python实战教程,手把手教你实现DANN对抗迁移学习模型,以解决领域偏移问题。文章详细解析了领域对抗神经网络的核心机制,包括梯度反转层和领域判别器的构建,并提供了从数据准备、模型搭建到训练评估的完整代码,帮助开发者快速掌握这一强大的无监督领域自适应技术。

net55的博客 318

对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例

​  前段时间,我已经写过一篇关于GAN的理论讲解,并且结合理论做了一个手写数字生成的小案例,对GAN原理不清楚的可以点击☞☞☞跳转了解详情。🌱🌱🌱GAN网络即是通过生成器和判别器的不断相互对抗,不断优化,直到判别器难以判断生成器生成图像的真假。​   那么接下来我就要开始讲述DCGAN了喔,读到这里我就默认大家对GAN的原理已经掌握了,开始发车。🚖🚖🚖​   我们先来看一下DCGAN的全称——。

秃头小苏的博客 1万+

基于Python实现基于遥感指数的水体提取

基于Python实现基于遥感指数的水体提取

gis收藏家的博客 6150

水与光的奇妙“切割之舞”:水导激光切割技术探秘

水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1674

TF之DCGAN:基于TF利用DCGAN测试自己的数据集并进行生成过程全记录

TF之DCGAN:基于TF利用DCGAN测试自己的数据集并进行生成过程全记录 目录 训练的数据集部分图片 输出结果 1、默认参数输出结果 训练过程全记录 训练的数据集部分图片 以从网上收集了许多日式动画为例 输出结果 1、默认参数输出结果 train_00_0099 train_00_0399 train_00_...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1万+

AutoSAR_BSW高阶 7. Signal Group 信号组

Autosar BSW的高级配置是实现复杂汽车电子系统的关键步骤之一。通过合理配置信号组和使用适当的参数,您可以提高系统性能,确保数据的可靠传输。在本博客中,我们深入探讨了信号组的概念和高级配置参数,并提供了示例代码,希望这些信息能够帮助您更好地理解和应用Autosar BSW的高级配置。如果您在配置过程中遇到任何问题,不妨寻求专业支持,以确保您的汽车电子系统能够顺利运行。Autosar COM 模块是一个广泛应用于汽车行业的关键技术,它使不同的电子控制单元能够有效地通信和协作。

一直在水些技术小文 663

加载pytorch格式的dcgan已训练网络并测试

建立的dcgan网络通过之后可以得到生成网络netG.pkl文件和鉴别网络netD.pkl文件,加载这些网络输入参数即可得到结果。这里显示了生成网络的加载及测试。同时也调用了网络结构显示的库,以pdf的形式显示所加载的网络的具体结构。 ''' Created on 2020年10月27日 @author: afeng ''' import torch import torchvision.utils as vutils import numpy as np from matplotlib impo

love code, love life. 654

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

层次3 DCGAN动漫图像生成

层次3 DCGAN动漫图像生成作者介绍GAN简介GAN的DCGAN简介DCGAN网络结构DCGAN损失函数DCGAN的超参数 作者介绍 张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:2430290933@qq.com GAN简介 论文参考: Ian Goodfellow 2014年《Generative Adversarial Nets》论文. DCGAN论文: GAN的 GAN网络全称generative adversar

ZHW-鲜橙大AI课题组的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

weixin_43360025的博客 2195

爬虫+脸部识别+DCGAN脸部自动生成

写真美女套图:爬虫+美女脸部识别+DCGAN脸部自动生成所有代码请到我的github上下载,请star一下,谢谢大家了。https://github.com/sileixinhua/BeautifulGirls第一部分:爬虫 抓美女套图(Python+BeautifulSoup+requests)前言本文主要是以爬虫爬取下来的图片为数据,做一个只针对美女脸部识别,和一个DCGAN合成美女脸的模型。第

橘子派 7710

Keras:DCGAN实践试坑记

  前言吐槽:     上周微机终于考完了,可以愉快地学习GAN一GAN了。根据GAN的综述文章所说的来看,最适合入手的肯定还是DCGAN(别问我为啥不试一试原版GAN,看着就不好调……)     说实话,这几天是真的调试得我欲仙欲死,BN层有巨坑,学习率有巨坑,甚至网络结构也有坑……各种尝试、模式崩塌、峰回路转,直到昨天才基本吃明白。我这几天真的是进一步的明白了一个好显卡的重要性。感谢老爹...

学生升学生生学 2645

DCGAN网络及代码复现

样本极少时,利用DCGAN生成样本数据

weixin_57130167的博客 734

Pytorch框架实现DCGAN(比较容易理解)

Pytorch框架实现DCGAN(比较容易理解)

Keep_Trying_Go的博客 4583

深度学习训练营之DCGAN网络学习

DCGAN网络的核心思想就是博弈,生成器和判别器之间互相PK,最后在一个平衡点结束训练

qq_62904883的博客 1191

深度学习算法 之DCGAN(写得不系统,后期再总结,大家可简单阅览一下)

目录 1、基本介绍 2、模型 3、优缺点/其他 参考 1、基本介绍 DCGAN是生成对抗网络GAN中一种常见的模型结构。其中的生成器和判别器都是神经网络模型。 GAN是一种生成式对抗网络,即通过对抗的方式,去学习数据分布的生成式模型。所谓的对抗,指的是生成网络和判...

weixin_30888413的博客 1322

Paper reading:DCGAN

1.无监督学习 2.GAN训练不稳定,经常会产生没有意义的图片 3.无标签数据的表示学习 3.1无监督表示的典型方法是在数据上聚类(比如K-means)或者auto-encoders 3.2.深度信念网络可以学习层次表示 4.生成自然图像 4.1 无参数模型应用:图像补丁、纹理合成、高分辨、涂漆 4.2 有参数模型: 5.CNN模型的重要改动: 5.1分辨器和生成器中,在下采样时用卷积步长取代最大池化 5.2 在卷积特征层上逐渐消除全连接层 5.3全局平均池化GAP:增加了模型的稳

yihool_的博客 2541

DCGAN 简介与代码实战

DCGAN 简介与代码实战

修行之路 568

【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

近年来,卷积网络(CNNs)的监督学习在计算机视觉应用中得到了广泛的应用。相比之下,CNNs的无监督学习受到的关注较少。在这项工作中,我们希望弥补CNNs在监督学习和无监督学习之间的差距。我们引入了一类称为深度卷积生成对抗网络(DCGANs)的CNNs,它们具有某些架构约束,并证明它们是无监督学习的有力候选者。在各种图像数据集上的训练中,我们展示了有说服力的证据,证明我们的深度卷积对抗对从对象部分到场景在生成器和鉴别器中都学到了表示的层次结构。

远 2711

生成对抗网络实战入门到精通——DCGAN算法以及训练增强手法

DCGANDCGAN原理改进网络架构ImprovedDCGAN训练增强手法特征匹配批次判别常见问题原理实现历史平均单侧标签平滑(one-sided label smoothing)虚拟批次正态化(virtual batch normalization) DCGAN 原理 把上述的 G和D 换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN 对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度 改进 取消所有pooling 层。G网络中使用微步幅度卷积(fractionally s

swpucwf的博客 3068
上一篇: 如何在 Matplotlib 中更改绘图背景
下一篇: 用苹果股价详解量化分析的4种基本操作
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值