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 圖片格式說明
你需要制作圖片A,B,然后合成一張圖片,作為一個訓練圖片。
其他數據集請見https://github.com/pprp/pix2pix-tensorflow
5.2 創建自己的數據集
示意圖:

# 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
如果您希望在網絡培訓時編寫正在進行的圖片,請使用--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




