使用cycle進行數據集的風格轉換,也即數據集的domain transferring ,使用的代碼地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
訓練過程
按照README進行代碼的下載,環境搭建,數據集準備,沒有什麼大問題,這裏略過 接下來以gta到cityscapes爲例進行說明:
訓練腳本:
python train.py --dataroot 準備的數據集的跟目錄 --name sim2cs --load_size 1024 --crop_size 400 --preprocess scale_width_and_crop --lambda_identity 1 --n_epochs 40 --n_epochs_decay 40
參數說明:
--name 代表訓練的名稱 這裏使用的是 sim2cs
--preprocess 預處理方式
由於其他原因中斷,繼續訓練的腳本,在原來的腳本後面加 參數 --continue_train --epoch_count 47,其中 epoch_count爲繼續訓練開始的epoch數 訓練結束後,會在checkpoints文件夾生成 sim2cs的一系列的checkpoint以及latest的模型。
測試過程
測試過程可以使用--model 爲 cycle_gan或者是 test ,這裏使用的是test,更方便數據集的生成。 需要注意的是: --model 爲test的時候加載的latest_net_G.pth,而不是在訓練的過程中的latest_net_G_A.pth或者是latest_net_G_B.pth,因此,需要將latest_net_G_A/B.pth重命名爲latest_net_G.pth進行A-->B或者是B-->A的圖像生成。
這裏爲了方便,我在checkpoints文件夾下面分別建立了sim10k2cs和cs2sim10k來分別存儲各自的latest_net_G.pth,分別重命名自 latest_net_G_A.pth和latest_net_G_B.pth。
至此,sim2cs的test腳本,從gta生成的cityscapes的腳本如下:
python test.py --dataroot 準備數據集的root/testA --model test --name sim10k2cs --process none --dataset_mode single --no_drop
從cs2sim,從cityscapes生成gta的腳本如下:
python test.py --dataroot 準備數據集的root/testB --model test --name cs2sim10k --process none --dataset_mode single --no_drop
因爲需要生成與原圖片一樣大小的圖片,這裏--preprocess的參數爲none,表示輸入圖像不進行resize等處理。