DCGAN增强图片数据集

1.Dependencies

2.DCGAN

步骤:

  • 将图片数集放在/Anime_GAN/DCGAN/faces

  • 进行如下的命令:

  $ cd Anime_GAN/DCGAN/
$ python main.py --help # 查看默认参数信息,根据需求可进行修改

执行完上述命令会产生相应的一张图片(存储位 置:/Anime_GAN/DCGAN/saved/img/xx.png)

  • 调用SegmentePictures.py进行图片的切割

$ cd DCGAN/saved
$ python SegmentePictures.py   
# encoding:utf-8
from PIL import Image
import sys
import math
import argparse def fill_image(image):
"""
将图片填充为正方形
:param image:
:return:
"""
width, height = image.size
#选取长和宽中较大值作为新图片的
new_image_length = width if width > height else height
#生成新图片[白底]
new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
#将之前的图粘贴在新图上,居中
if width > height:#原图宽大于高,则填充图片的竖直维度
#(x,y)二元组表示粘贴上图相对下图的起始位置
new_image.paste(image, (0, int((new_image_length - height) / 2)))
else:
new_image.paste(image,(int((new_image_length - width) / 2),0)) return new_image def cut_image(image,cut_num):
"""
切图
:param image:
:return:
"""
flag_value = int(math.sqrt(cut_num))
width, height = image.size
item_width = int(width / flag_value)
box_list = []
for i in range(0,flag_value):
for j in range(0,flag_value):
box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
box_list.append(box)
image_list = [image.crop(box) for box in box_list] return image_list def save_images(image_list):
"""
保存
:param image_list:
:return:
"""
index = 1
for image in image_list:
image.save('./img_add/'+str(index) + '.png', 'PNG')
index += 1 def main():
parse = argparse.ArgumentParser() parse.add_argument("--lr", type=float, default=0.0001,
help="learning rate of generate and discriminator")
parse.add_argument("--beta1", type=float, default=0.5,
help="adam optimizer parameter")
parse.add_argument("--batch_size", type=int, default=81,
help="number of dataset in every train or test iteration")
parse.add_argument("--epochs", type=int, default=0,
help="number of training epochs")
parse.add_argument("--loaders", type=int, default=4,
help="number of parallel data loading processing")
parse.add_argument("--size_per_dataset", type=int, default=30000,
help="number of training data") args = parse.parse_args() file_path = "./img/"+args.epochs+".png" # 图片路径
image = Image.open(file_path)
image = fill_image(image)
image_list = cut_image(image,batch_size)
save_images(image_list) if __name__ == '__main__':
main()

需要注意的是:下面的命令中batch_size的数一定要一致

$ python main.py --batch_size=xx 

$ python SegmentePictures.py --batch_size=xx 

3.遇到的问题

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 370 and 667 in dimension 2 at /pytorch/aten/src/TH/generic/THTensor.cpp:711

  • 错误分析:使用DataLoader加载图像,这些图像中的一些具有3个通道(彩色图像),而其他图像可能具有单个通道(BW图像),由于dim1的尺寸不同,因此无法将它们连接成批次。 尝试将img = img.convert(‘RGB’)添加到数据集中的getitem中。

  • 将图片的通道进行统一

    from PIL import Image
    import matplotlib.pyplot as plt
    import os


    def GetAllFiles(dir):
    files_ = []
    list = os.listdir(dir)
    for i in range(0, len(list)):
    path = os.path.join(dir, list[i])
    if os.path.isdir(path):
    files_.extend(GetAllFiles(path))
    if os.path.isfile(path):
    files_.append(path)
    return files_

    def ConvertRGB():
    """
    将图片转换为RGB格式
    :return:
    """
    files_ = GetAllFiles(file_path)
    for id,item in enumerate(files_):
    img=Image.open(item)
    gray=img.convert('RGB')
    plt.imshow(gray)
    plt.axis('off')
    save_path = "./save_img"+"\\"+str(id)+".jpg"
    plt.savefig(save_path)
    # plt.show()

    if __name__ == "__main__":
    file_path = "your path"
    ConvertRGB()

参考链接:https://github.com/FangYang970206/Anime_GAN/blob/master/README.md

DCGAN增强图片数据集的更多相关文章

  1. TensorFlow2.0(10):加载自定义图片数据集到Dataset

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  2. 超简单!pytorch入门教程(四):准备图片数据集

    在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源: 一.CIFAR-10 CIFAR-10图片样本截图 CIFAR-10是多伦多大学提供的图片数据库,图片分辨率压缩至32 ...

  3. os.walk|图片数据集

    该函数的功能:遍历指定文件夹下的所有[路径][文件夹][文件名] ''' os.walk(top[, topdown=True[, onerror=None[, followlinks=False]] ...

  4. AlexNet详细解读

    AlexNet详细解读 目前在自学计算机视觉与深度学习方向的论文,今天给大家带来的是很经典的一篇文章 :<ImageNet Classification with Deep Convolutio ...

  5. python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)

    ############################################################################################# ###### ...

  6. DCGAN 代码简单解读

    之前在DCGAN文章简单解读里说明了DCGAN的原理.本次来实现一个DCGAN,并在数据集上实际测试它的效果.本次的代码来自github开源代码DCGAN-tensorflow,感谢carpedm20 ...

  7. 学习笔记GAN002:DCGAN

    Ian J. Goodfellow 论文:https://arxiv.org/abs/1406.2661 两个网络:G(Generator),生成网络,接收随机噪声Z,通过噪声生成样本,G(z).D( ...

  8. [Deep-Learning-with-Python]GAN图片生成

    GAN 由Goodfellow等人于2014年引入的生成对抗网络(GAN)是用于学习图像潜在空间的VAE的替代方案.它们通过强制生成的图像在统计上几乎与真实图像几乎无法区分,从而能够生成相当逼真的合成 ...

  9. 在C#下使用TensorFlow.NET训练自己的数据集

    在C#下使用TensorFlow.NET训练自己的数据集 今天,我结合代码来详细介绍如何使用 SciSharp STACK 的 TensorFlow.NET 来训练CNN模型,该模型主要实现 图像的分 ...

随机推荐

  1. 1.WEB安全概述

    一.WEB常见的安全性问题简介 XSS(Cross-Site Scripting):跨站脚本攻击漏洞 CSRF(Cross-site request forgery):跨站请求伪造 文件上传漏洞 SQ ...

  2. SpringBoot + redis + @Cacheable注解实现缓存清除缓存

    一.Application启动类添加注解 @EnableCaching 二.注入配置 @Bean public CacheManager cacheManager(RedisTemplate redi ...

  3. Spark程序编译报错error: object apache is not a member of package org

    Spark程序编译报错: [INFO] Compiling 2 source files to E:\Develop\IDEAWorkspace\spark\target\classes at 156 ...

  4. Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项

    一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版 ...

  5. 【项目】小试牛刀-polo360静态网页项目(附psd文件资源)

    笔者尝试下开发简单的静态网页,下面分享过程及源码.这是polo360的下载链接:https://pan.baidu.com/s/1WqGxKMYY_DHfrSJ9lLL-WA 提取码:v2qi  (一 ...

  6. Codeforces1303C. Perfect Keyboard

    本题可以转换成图论来做,每两个相邻点连一条边,然后统计每一个点的degree,如果>=2说明有一个点要相邻三个点,不满足题意,然后找出每个degree<2的点,这些点可以作为一段的起点,然 ...

  7. redis 之 redis主从复制

    Redis集群中的数据库复制是通过主从同步来实现的 主节点(Master)把数据分发给从节点(Slave) 主从同步的好处在于高可用,Redis节点有冗余设计 主从复制的原理:1. 从服务器向主服务器 ...

  8. 你需要知道的 JavaScript 类(class)的这些知识

    作者: Dmitri Pavlutin译者:前端小智来源:dmitripavlutin 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经 ...

  9. Scrapy 中的模拟登陆

    目前,大部分网站都具有用户登陆功能,其中某些网站只有在用户登陆后才能获得有价值的信息,在爬取这类网站时,Scrapy 爬虫程序先模拟登陆,再爬取内容 1.登陆实质 其核心是想服务器发送含有登陆表单数据 ...

  10. C#往TextBox的方法AppendText加入的内容里插入换行符----转载

    C# TextBox换行[huan hang]时你往往会想到直接付给一个含有换行[huan hang]符"\n"的字符[zi fu]串[zi fu chuan]给Text属性[sh ...