pix2pix-tensorflow搭建及其使用

pix2pix-tensorflow搭建过程

对抗神经网络

1. 环境搭建

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

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

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

2. 环境说明

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

3. 开始搭建

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

4. 训练结果说明

测试结果:

facades_train
├── checkpoint
├── events.out.tfevents.1534087226.learner-pc
├── events.out.tfevents.1534126535.learner-pc
├── graph.pbtxt
├── model-80000.data-00000-of-00001
├── model-80000.index
├── model-80000.meta
└── options.json

其中facades_train记录的是检查点checkpoint

facades_test
├── events.out.tfevents.1534229330.learner-pc
├── graph.pbtxt
├── images
│   ├── 1-inputs.png ....
│   └── 1-targets.png ....
├── index.html
└── options.json

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

5. 数据集

5.1 图片格式说明

img

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

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

5.2 创建自己的数据集

示意图:

img

# Resize source images, 如上图,进行resize
python tools/process.py \
  --input_dir photos/original \
  --operation resize \
  --output_dir photos/resized
# Create images with blank centers # 如上图,创建空白
python tools/process.py \
  --input_dir photos/resized \
  --operation blank \
  --output_dir photos/blank
# Combine resized images with blanked images # 结合两张图片
python tools/process.py \
  --input_dir photos/resized \
  --b_dir photos/blank \
  --operation combine \
  --output_dir photos/combined
# Split into train/val set # 将图片进行分配
python tools/split.py \
  --dir photos/combined

5.3 从先用图片创建图像对

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

python tools/process.py \
  --input_dir a \
  --b_dir b \
  --operation combine \
  --output_dir c

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

5.4 如何进行着色

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

python tools/process.py \ 
  --input_dir photos/original \  
  --operation resize \ 
  --output_dir photos/resized

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

6. 训练

6.1 图片对

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

以maps数据集为例:

python pix2pix.py \
    --mode train \
    --output_dir maps_train \
    --max_epochs 200 \
    --input_dir maps/train \
    --which_direction BtoA

6.2 上色

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

python pix2pix.py \ --mode 
  train \ 
  --output_dir photos_train \ 
  --max_epochs 200 \ 
  --input_dir photos / train \ 
  --lab_colorization

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

提示

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

tensorboard --logdir = facades_train

img img img

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

7. 测试

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

以maps数据集为例:

python pix2pix.py \
    --mode test \
    --output_dir maps_test \
    --input_dir maps/val \ 
    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.

git clone https://github.com/affinelayer/pix2pix-tensorflow.git
cd pix2pix-tensorflow
python tools/download-dataset.py facades
sudo nvidia-docker run \
  --volume $PWD:/prj \
  --workdir /prj \
  --env PYTHONUNBUFFERED=x \
  affinelayer/pix2pix-tensorflow \
    python pix2pix.py \
      --mode train \
      --output_dir facades_train \
      --max_epochs 200 \
      --input_dir facades/train \
      --which_direction BtoA
sudo nvidia-docker run \
  --volume $PWD:/prj \
  --workdir /prj \
  --env PYTHONUNBUFFERED=x \
  affinelayer/pix2pix-tensorflow \
    python pix2pix.py \
      --mode test \
      --output_dir facades_test \
      --input_dir facades/val \
      --checkpoint facades_train

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

9. 参考文献

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

posted @ 2018-08-14 15:53  pprp  阅读(7909)  评论(0编辑  收藏  举报