pix2pix-tensorflow搭建过程

对抗神经网络

1. 环境搭建

参考:https://www.cnblogs.com/pprp/p/9463974.html

官方详细介绍:https://affinelayer.com/pix2pix/

这篇博客中详细介绍了如何搭建tensorflow环境

2. 环境说明

  • 基于tensorflow1.4.1
  • 建议采用 Tensorflow-gpu + cuDNN

3. 开始搭建

  1. # clone this repo
  2. git clone https://github.com/affinelayer/pix2pix-tensorflow.git
  3. cd pix2pix-tensorflow
  4. # download the CMP Facades dataset (generated from http://cmp.felk.cvut.cz/~tylecr1/facade/) 下载数据集
  5. python tools/download-dataset.py facades
  6. # 训练数据
  7. python pix2pix.py \
  8. --mode train \ # 设置mode为训练模式
  9. --output_dir facades_train \ # 输出地址
  10. --max_epochs 200 \ # 最大神经元熟练
  11. --input_dir facades/train \ # 输入训练集所在地址
  12. --which_direction BtoA # 方向
  13. # 测试模型
  14. python pix2pix.py \
  15. --mode test \ #设置测试模式
  16. --output_dir facades_test \ # 输出地址
  17. --input_dir facades/val \ # 输入地址
  18. --checkpoint facades_train # 检查点保存

4. 训练结果说明

测试结果:

  1. facades_train
  2. ├── checkpoint
  3. ├── events.out.tfevents.1534087226.learner-pc
  4. ├── events.out.tfevents.1534126535.learner-pc
  5. ├── graph.pbtxt
  6. ├── model-80000.data-00000-of-00001
  7. ├── model-80000.index
  8. ├── model-80000.meta
  9. └── options.json

其中facades_train记录的是检查点checkpoint

  1. facades_test
  2. ├── events.out.tfevents.1534229330.learner-pc
  3. ├── graph.pbtxt
  4. ├── images
  5.    ├── 1-inputs.png ....
  6.    └── 1-targets.png ....
  7. ├── index.html
  8. └── options.json

其中facades_test记录的是训练的结果,可以打开index.html进行查看具体的内容

5. 数据集

5.1 图片格式说明

你需要制作图片A,B,然后合成一张图片,作为一个训练图片。

其他数据集请见https://github.com/pprp/pix2pix-tensorflow

5.2 创建自己的数据集

示意图:

  1. # Resize source images, 如上图,进行resize
  2. python tools/process.py \
  3. --input_dir photos/original \
  4. --operation resize \
  5. --output_dir photos/resized
  6. # Create images with blank centers # 如上图,创建空白
  7. python tools/process.py \
  8. --input_dir photos/resized \
  9. --operation blank \
  10. --output_dir photos/blank
  11. # Combine resized images with blanked images # 结合两张图片
  12. python tools/process.py \
  13. --input_dir photos/resized \
  14. --b_dir photos/blank \
  15. --operation combine \
  16. --output_dir photos/combined
  17. # Split into train/val set # 将图片进行分配
  18. python tools/split.py \
  19. --dir photos/combined

5.3 从先用图片创建图像对

如果您有两个目录,a并且b具有相应的图像(相同的名称,相同的尺寸,不同的数据),您可以将它们与process.py

  1. python tools/process.py \
  2. --input_dir a \
  3. --b_dir b \
  4. --operation combine \
  5. --output_dir c

这使得图像成为pix2pix.py期望的并排组合图像。

5.4 如何进行着色

对于着色,理想情况下,您的图像应具有相同的宽高比。您可以使用resize命令调整大小并裁剪它们:

  1. python tools/process.py \
  2. --input_dir photos/original \
  3. --operation resize \
  4. --output_dir photos/resized

不需要其他处理,着色模式(参见下面的训练部分)使用单个图像而不是图像对。

6. 训练

6.1 图片对

由于图片是成对的,你可以决定图片的方向是AtoB or BtoA

以maps数据集为例:

  1. python pix2pix.py \
  2. --mode train \
  3. --output_dir maps_train \
  4. --max_epochs 200 \
  5. --input_dir maps/train \
  6. --which_direction BtoA

6.2 上色

pix2pix.py 包括使用单个图像而不是成对处理着色的特殊代码,使用如下所示:

  1. python pix2pix.py \ --mode
  2. train \
  3. --output_dir photos_train \
  4. --max_epochs 200 \
  5. --input_dir photos / train \
  6. --lab_colorization

在该模式中,图像A是黑白图像(仅亮度),图像B包含该图像的颜色通道(没有亮度信息)。

提示

您可以使用tensorboard查看损失和计算图:

  1. tensorboard --logdir = facades_train

如果您希望在网络培训时编写正在进行的图片,请使用--display_freq 50。这将facades_train/index.html使用当前的训练输入和输出更新每50个步骤。

7. 测试

测试完成--mode test。您应该指定要使用的检查点--checkpoint,这应该指向output_dir您之前创建的--mode train

以maps数据集为例:

  1. python pix2pix.py \
  2. --mode test \
  3. --output_dir maps_test \
  4. --input_dir maps/val \
  5. checkpoint maps_train

测试模式将从提供的检查点加载一些配置选项,因此您无需指定which_direction实例。

测试运行将输出一个HTML文件facades_test/index.html,显示输入/输出/目标图像集

8. Code Validation

Validation of the code was performed on a Linux machine with a ~1.3 TFLOPS Nvidia GTX 750 Ti GPU and an Azure NC6 instance with a K80 GPU.

  1. git clone https://github.com/affinelayer/pix2pix-tensorflow.git
  2. cd pix2pix-tensorflow
  3. python tools/download-dataset.py facades
  4. sudo nvidia-docker run \
  5. --volume $PWD:/prj \
  6. --workdir /prj \
  7. --env PYTHONUNBUFFERED=x \
  8. affinelayer/pix2pix-tensorflow \
  9. python pix2pix.py \
  10. --mode train \
  11. --output_dir facades_train \
  12. --max_epochs 200 \
  13. --input_dir facades/train \
  14. --which_direction BtoA
  15. sudo nvidia-docker run \
  16. --volume $PWD:/prj \
  17. --workdir /prj \
  18. --env PYTHONUNBUFFERED=x \
  19. affinelayer/pix2pix-tensorflow \
  20. python pix2pix.py \
  21. --mode test \
  22. --output_dir facades_test \
  23. --input_dir facades/val \
  24. --checkpoint facades_train

nvidia-docker可以参看之前的文章进行安装

9. 参考文献

主要是官方给出的说明:references

pix2pix-tensorflow搭建及其使用的更多相关文章

  1. (转)一文学会用 Tensorflow 搭建神经网络

    一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...

  2. [DL学习笔记]从人工神经网络到卷积神经网络_3_使用tensorflow搭建CNN来分类not_MNIST数据(有一些问题)

    3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道 ...

  3. 用Tensorflow搭建神经网络的一般步骤

    用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...

  4. 一文学会用 Tensorflow 搭建神经网络

    http://www.jianshu.com/p/e112012a4b2d 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码 ...

  5. 使用Tensorflow搭建回归预测模型之一:环境安装

    方法1:快速包安装 一.安装Anaconda 1.官网地址:https://www.anaconda.com/distribution/,选择其中一个版本下载即可,最好安装3.7版本,因为2.7版本2 ...

  6. 使用Tensorflow搭建回归预测模型之二:数据准备与预处理

    前言: 在前一篇中,已经搭建好了Tensorflow环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...

  7. 用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识

    用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识 循环神经网络RNN相比传统的神经网络在处理序列化数据时更有优势,因为RNN能够将加入上(下)文信息进行考虑.一个简单的RNN如 ...

  8. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    我一直觉得TensorFlow的深度神经网络代码非常困难且繁琐,对TensorFlow搭建模型也十分困惑,所以我近期阅读了大量的神经网络代码,终于找到了搭建神经网络的规律,各位要是觉得我的文章对你有帮 ...

  9. 使用tensorflow搭建自己的验证码识别系统

    目录 准备验证码数据 保存为tfrecords文件 验证码训练 学习tensorflow有一段时间了,想做点东西来练一下手.为了更有意思点,下面将搭建一个简单的验证码识别系统. 准备验证码数据 下面将 ...

  10. Tensorflow搭建卷积神经网络识别手写英语字母

    更新记录: 2018年2月5日 初始文章版本 近几天需要进行英语手写体识别,查阅了很多资料,但是大多数资料都是针对MNIST数据集的,并且主要识别手写数字.为了满足实际的英文手写识别需求,需要从训练集 ...

随机推荐

  1. Java初学者笔记二:关于类的常见知识点汇总

    一.Java的类: Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍: 1.Java的类定义时候的修饰符 2.Java的类的继承与派生 二.Java ...

  2. 由JS函数返回值引发的一场”血案"

    ---恢复内容开始--- 啊...  本来昨天晚上想写来着,结果陪老婆看电视剧就忘了... 呢滴神啊,原谅我吧. 背景:昨天在项目中做一个小功能的时候,出现了个小问题,而且一开始找了半天也没找到原因. ...

  3. 动态设置progressBar的进度

    progressDrawable = this.getResources().getDrawable(R.drawable.image); progressDrawable.setBounds(mSe ...

  4. 将web项目打成war包部署在tomcat步骤

    将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...

  5. Jenkins构建时提示maven版本问题

    在使用Jenkins进行项目构建的时候出现下面问题 [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were enc ...

  6. redhat 6安装详解

    备注:redhat 6 系列OS安装步骤一致. 此处安装redhat 6.5 64位版本,即rhel-server-6.5-x86_64-dvd.iso 一.安装RHEL 6.5 用光盘成功引导系统, ...

  7. [Python模块学习]用qrcode模块生成二维码

    转自:https://blog.csdn.net/jy692405180/article/details/65937077

  8. socketserver源码解析和协程版socketserver

    来,贴上一段代码让你仰慕一下欧socketserver的魅力,看欧怎么完美实现多并发的魅力 client import socket ip_port = ('127.0.0.1',8009) sk = ...

  9. 【Python】如何取到input中的value值?

    练习:取到下方链接下所有海贼王的下载链接. # coding=utf-8 from selenium import webdriver from time import sleep import ke ...

  10. java-mybaits-00602-查询缓存-mybatis整合ehcache

    ehcache是一个分布式缓存框架.EhCache 是一个纯Java的进程内缓存框架,是一种广泛使用的开源Java分布式缓存,具有快速.精干等特点,是Hibernate中默认的CacheProvide ...