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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM