• 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

  • 相关阅读:
    javaweb中如何给自己的网站更改ico图标
    基于Zookeeper的分布式锁
    Linux 基础——权限管理命令chmod
    Java--实现单点登录
    Session和Cookie的区别与联系
    selectedIndex返回被选中的option的index.
    onchange事件可以使用于: <input>, <select>, 和 <textarea>。
    js判断字符串长度
    在容器最前面添加DOM元素 parent.insertBefore(new, parent.children[0])
    在容器末尾添加DOM元素 parent.appendChild(newChild)
  • 原文地址:https://www.cnblogs.com/pprp/p/9475091.html
Copyright © 2020-2023  润新知