pix2pix-tensorflow搭建及其使用

pix2pix-tensorflow搭建過程

對抗神經網絡python

1. 環境搭建

參考:http://www.javashuo.com/article/p-opzashmi-dy.htmlgit

官方詳細介紹:https://affinelayer.com/pix2pix/github

這篇博客中詳細介紹瞭如何搭建tensorflow環境docker

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. 訓練結果說明

測試結果:shell

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記錄的是檢查點checkpointjson

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-tensorflowthis

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

相關文章
相關標籤/搜索