天天看點

[Pytorch系列-72]:生成對抗網絡GAN - 圖像生成開源項目pytorch-CycleGAN-and-pix2pix - 使用預訓練模型訓練CycleGAN模型

第1章 概述

1.1 代碼架構與總體思路

​​​​

1.2 本章基本思路

(1)Pycharm進行調試,替代指令行或Jupter

(2)選擇所需要硬碟空間小的資料進行測試

(3)熟悉pytorch-CycleGAN-and-pix2pix項目的使用

(4)熟悉CycleGAN模型訓練

1.3 訓練方式

  • 從頭開始訓練
  • 從預預訓練模型開始訓練(官網提供的預訓練模型隻包括G網絡,不包括D網絡)
  • 從上次訓練結果開始訓練

第2章 測試步驟

第1步:下載下傳或克隆pytorch-CycleGAN-and-pix2pix所有代碼

如果已經完成,可以跳過此步驟。

(1)Linux 指令行方式:!git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

(2)Windows浏覽器下載下傳:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

備注:

  • 可以把代碼下載下傳或拷貝到jupter的工作目錄中,以便後續可以通過jupter運作代碼。

第2步:切換目前目錄

(1)運作方式

  • Windows 指令行方式:cd xxx
  • jupter方式:
import os
os.chdir('pytorch-CycleGAN-and-pix2pix/')
      
  • Pycharm: 把工程檔案copy到Pycharm工作目錄中即可

第3步:安裝依賴檔案(可視化工具)

如果已經完成,可以跳過此步驟。

  • Windows 指令行方式

pip install -r requirements.txt

  • Jupter方式
!pip install -r requirements.txt
      

torch>=0.4.1

torchvision>=0.2.1

dominate>=2.3.1

visdom>=0.1.8.3

第4步:下載下傳CycleGAN資料集

(1)下載下傳方式

  • Linux 指令行方式

bash ./datasets/download_pix2pix_dataset.sh facades

  • Jupter方式
!bash ./datasets/download_pix2pix_dataset.sh facades
      
  • Windows浏覽器方式

 根據./datasets/download_cyclegan_dataset.sh的内容,擷取資料集URL, 通過URL手工下載下傳:

https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/

[Pytorch系列-72]:生成對抗網絡GAN - 圖像生成開源項目pytorch-CycleGAN-and-pix2pix - 使用預訓練模型訓練CycleGAN模型

  備注:

  • 這裡選擇horse2zebra:馬到斑馬的轉換。

(2)資料集的存放路徑

  • 存放路徑:pytorch-CycleGAN-and-pix2pix\datasets

備注:必須同名,不能改名

 (3)支援的小型資料集

  • summer2winter_yosemite:夏天轉換成冬天
  • horse2zebra:馬到斑馬的轉換
  • apple2orange:蘋果到橙子的轉換
  • facades:建築物的轉換
  • mini:min資料的馬到斑馬的轉換

第5步:下載下傳預訓練模型

(1)下載下傳方式

  • Linux指令行方式
bash ./scripts/download_cyclegan_model horse2zebra
      
  • jupter方式
!bash ./scripts/download_cyclegan_model horse2zebra
      
  • Windows方式

 根據download_cyclegan_model.sh腳步的内容,擷取連結:

http://efrosgans.eecs.berkeley.edu/cyclegan/pretrained_models/

(2)存放路徑

./checkpoints/{xxx}/latest_net_G.pth

xxx為模型名稱。

備注:

  • 需要把模型的名稱,改為latest_net_G.pth,并存放在{xxx}目錄中,這與使用預訓練模型進行測試是不一樣的。
  • 官方的預訓練模型,隻有G網絡的參數,沒有D網絡的參數,是以基本上需要重新訓練。
  • cyclegan模型分為生成模型與還原模型,展現在不同的方向上。

第6步:啟動可視化工具visdom

(1)啟動visdom server

conda info -e

conda activate pytorch-gpu-os

python -m visdom.server

(2)啟動visdom Client

http://localhost:8097

第7步:模型訓練

(1)CPU方式(僅用于學習代碼)運作

--dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan --gpu_ids -1 --niter_decay 1 --niter 1  --display_freq 1 --update_html_freq 1 --print_freq 10 --save_epoch_freq 5 --save_latest_freq 100
      
  • --gpu_ids -1:表示使用CPU進行訓練。
  • -print_freq 1:每疊代多少次,在終端上列印一次提示資訊, 預設100.
  • -display_freq 1:每疊代多少次,在visdom用戶端可視化一次圖像,預設400
  • --update_html_freq 1:每疊代多少次,更新一次html輸出檔案,預設1000.
  • --save_epoch_freq 5:    每疊代多少次,存儲一次模型參數
  • --save_latest_freq  100:每疊代多少次,存儲一次模型參數
  • --niter 1:疊代的epoch次數, 預設100
  • --niter_decay 1:疊代的epoch次數,對學習率進行一次衰減,預設100,總的epoc=niter + niter_decay + 1

備注:

  • 該項目,采用GPU訓練時,需要>8G的GPU記憶體,如果GPU條件不滿足,在學習代碼流程時,可以使用CPU進行訓練
  • 之是以修改這些預設參數,是因為CPU的訓練太慢,不利于學習的效率。

(2)GPU方式(适用于正式訓練模型)

--dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan
      

備注:

在GPU的情況下,使用預設的參數。

(3)重頭訓練與基于先前的訓練結果繼續訓練

--continue_train :如果設定,則基于先前的訓練結果繼續訓練,如果不設定,則從頭開始訓練。

第8步:效果展示

(1)控制台列印顯示

initialize network with normal

initialize network with normal

initialize network with normal

model [CycleGANModel] was created

---------- Networks initialized -------------

[Network G_A] Total number of parameters : 11.378 M

[Network G_B] Total number of parameters : 11.378 M

[Network D_A] Total number of parameters : 2.765 M

[Network D_B] Total number of parameters : 2.765 M

-----------------------------------------------

Setting up a new session...

create web directory ./checkpoints\horse2zebra\web...

(epoch: 1, iters: 10, time: 7.274, data: 2.156) D_A: 0.963 G_A: 1.139 cycle_A: 5.456 idt_A: 1.779 D_B: 1.407 G_B: 1.843 cycle_B: 3.542 idt_B: 2.495 

(epoch: 1, iters: 20, time: 7.448, data: 0.000) D_A: 1.839 G_A: 2.499 cycle_A: 6.618 idt_A: 1.988 D_B: 0.768 G_B: 0.592 cycle_B: 3.989 idt_B: 3.224 

......

(2)visdom圖形化顯示

  • loss
[Pytorch系列-72]:生成對抗網絡GAN - 圖像生成開源項目pytorch-CycleGAN-and-pix2pix - 使用預訓練模型訓練CycleGAN模型
  • 訓練結果
[Pytorch系列-72]:生成對抗網絡GAN - 圖像生成開源項目pytorch-CycleGAN-and-pix2pix - 使用預訓練模型訓練CycleGAN模型

第9步:輸出檔案

(1)圖檔檔案:

目錄:

  • pytorch-CycleGAN-and-pix2pix\checkpoints\horse2zebra\web\images
[Pytorch系列-72]:生成對抗網絡GAN - 圖像生成開源項目pytorch-CycleGAN-and-pix2pix - 使用預訓練模型訓練CycleGAN模型

(2)模型檔案:

目錄:

  • pytorch-CycleGAN-and-pix2pix\checkpoints\horse2zebra\
  • latest_net_D_A.pth
  • latest_net_D_B.pth
  • latest_net_G_A.pth
  • latest_net_G_B.pth

繼續閱讀