CycleGAN的代碼組成

train.py 是通用訓(xùn)練腳本。它為許多模型(可選的模型比如:pix2pix, cyclegan, colorization)和不同的數(shù)據(jù)集服務(wù)(可選的數(shù)據(jù)集模式包括:aligned, unaligned, single, colorization)。

test.py 是通用測試腳本。如果用train.py訓(xùn)練好了自己的模型,可以用測試腳本對模型進行測試。腳本會從 checkpoints_dir 中加載保存好的模型,并將結(jié)果保存在 results_dir 處。

data 目錄包括了所有與數(shù)據(jù)加載和預(yù)處理相關(guān)的模塊。如果想要添加名為 dummy 的自定義數(shù)據(jù)集類,則需要創(chuàng)建 dummy_dataset.py 文件,并定義繼承 Base Dataset 的子類(subclass)Dummy Dataset。需要實現(xiàn)四個功能:1)__init__(初始化類,首先要調(diào)用BaseDataset.__init__(self, opt)),2)__len__(返回數(shù)據(jù)集大?。?)__getitem__(獲取數(shù)據(jù)點), 4)modify_commandline_options(添加特定于數(shù)據(jù)集的選項,設(shè)置默認選項)??梢酝ㄟ^指定--dataset_mode去使用數(shù)據(jù)集類(dataset class)。下面詳細解釋每個文件。

????????__init__.py 實現(xiàn)了data包和訓(xùn)練及測試腳本文件的接口,train.py 和 test.py 從 data import create_dataset 和 dataset = create_dataset(opt) 調(diào)用數(shù)據(jù),用給定的選項 opt. 創(chuàng)建數(shù)據(jù)集。

????????base_dataset.py 為數(shù)據(jù)集實現(xiàn)了理論上的基類 (ABC)。它還包括常見的轉(zhuǎn)換函數(shù)(比如? get_transform,__scale_width),這些函數(shù)可以在之后的子類中使用。

????????image_folder.py 實現(xiàn)一個 image folder 類。我們修改了官方 PyTorch 的 image folder 代碼以便這個類可以從當前目錄及其子目錄中加載圖像。

????????template_dataset.py 提供了一個包含詳細文檔的數(shù)據(jù)集模板。如果計劃實現(xiàn)自己的數(shù)據(jù)集可以檢查此文件。

????????aligned_dataset.py 包含一個可以加載圖像對的數(shù)據(jù)集類。它假設(shè)一個單一圖像目錄 /path/to/data/train,這個目錄包括 {A,B} 形式的圖像對。在測試時,需要準備目錄 /path/to/data/test作為測試數(shù)據(jù)。

????????unaligned_dataset.py 包含一個可以加載未對齊/未配對數(shù)據(jù)集的數(shù)據(jù)集類。它假設(shè)兩個目錄分別承載來自域A /path/to/data/trainA 和域B /path/to/data/trainB 的訓(xùn)練圖像??梢杂脭?shù)據(jù)集標志 --dataroot /path/to/data 訓(xùn)練模型。同樣,需要在測試期間準備兩個目錄 /path/to/data/testA 和 /path/to/data/testB。

????????single_dataset.py 包含一個 dataset 類,它可以通過指定路徑 --dataroot /path/to/data 來加載一組單個圖像。它可以用可選的測試模型來生成單邊 CycleGAN 的結(jié)果。

????????colorization_dataset.py 實現(xiàn)了一個 dataset 類,可以加載一組 RGB 的自然圖像,并且在Lab color space 中將 RGB 格式轉(zhuǎn)換為 (L, ab) 對。它是基于 Pix2Pix 的著色模型所要求的 (--model colorization)。

models 目錄包含了與目標函數(shù)、優(yōu)化和網(wǎng)絡(luò)體系結(jié)構(gòu)相關(guān)的模塊。要添加名為 dummy 的自定義數(shù)據(jù)集類,則需要創(chuàng)建 dummy_model.py 文件,并定義一個繼承 Base Model 的子類(subclass)Dummy Model。需要實現(xiàn)以下功能:1)__init__(初始化類,首先要調(diào)用BaseModel.__init__(self, opt)),2)set__input(從數(shù)據(jù)集中解包數(shù)據(jù)并進行預(yù)處理),3)forward(生成中間結(jié)果), 4)optimize_parameters(計算損失、梯度,更新網(wǎng)絡(luò)權(quán)重)。5)也可以添加modify_commandline_options (通過添加特定于模型的選項來設(shè)置默認選項)。可以通過指定標志 --model dummy 來使用模型類。下面詳細解釋每個文件。 ?

????????__init__.py 實現(xiàn)了 model 包和訓(xùn)練及測試腳本文件的接口,train.py 和 test.py用 from models import create_model 和 model = create_model(opt) ,用給定的選項 opt.創(chuàng)建模型。用 model.setup(opt) 初始化模型。

????????base_model.py 為模型實現(xiàn)了理論上的基類 (ABC) 。它還包括常用的輔助功能(比如: setup, test, update_learning_rate, save_networks,load_networks),這些功能之后會在子類中用到。

????????template_model.py 提供帶有詳細文檔的模型模板。如果想要實現(xiàn)自己的模型,可以檢查此文件。

????????pix2pix_model.py 實現(xiàn)了 Pix2Pix 模型,用于學(xué)習成對圖像的從輸入到輸出的映射。模型訓(xùn)練需要 --dataset_mode aligned 數(shù)據(jù)集。默認情況下,它使用 --netG unet256 網(wǎng)絡(luò),--netD basic 判別器(PatchGAN)和 --gan_model vanillagan 損失(標準交叉熵目標)。

????????colorization_model.py 實現(xiàn)了 Pix2PixModel 的子類,用于圖像著色(黑白圖像到彩色圖像)。模型訓(xùn)練需要 -dataset_model colorization 數(shù)據(jù)集。它訓(xùn)練一個 Pix2Pix 模型,在 Lab color space 中從 L 通道映射到 ab 通道。默認情況下,colorization 數(shù)據(jù)集將自動設(shè)置 --input_nc 1 和 --output_nc 2。

????????cycle_gan_model.py 實現(xiàn)了 cycle gan 模型,用于學(xué)習未成對圖像到圖像轉(zhuǎn)換。模型訓(xùn)練需要 --dataset_mode unaligned 數(shù)據(jù)集。默認情況下,它使用 --netG resnet_9blocks 生成器、--netD basic 判別器和最小二乘 Gans 目標( --gan_model lsgan)。

????????networks.py 模塊實現(xiàn)網(wǎng)絡(luò)架構(gòu)(生成器和鑒別器),以及規(guī)范化層、初始化方法、優(yōu)化調(diào)度程序(即學(xué)習率策略)和 GAN 目標函數(shù)(vanilla、lsgan、wgangp)。

????????test_model.py 實現(xiàn)用于生成單邊Cyclegan結(jié)果的模型。這個模型將自動設(shè)置--dataset_mode single,它只從一個集合中加載圖像。(--model cycle_gan可進行雙向測試)

options 目錄包括選項模塊:訓(xùn)練選項、測試選項和基本選項(用于訓(xùn)練和測試)。TrainOptions 和 TestOptions 是 BaseOptions 的兩個子類。它們將重新調(diào)用在 BaseOptions 中定義的選項。

????????__init__.py 使 Python 將 options 目錄視為包含包。

????????base_options.py 包括訓(xùn)練和測試中使用的選項。它還實現(xiàn)一些輔助功能,例如解析、打印和保存選項。它還收集在數(shù)據(jù)集類和模型類中的 modify_commandline_options 函數(shù)中定義的其他選項。

????????train_options.py 僅包括在訓(xùn)練期間使用的選項。

????????test_options.py 僅包括在測試期間使用的選項。

util 目錄包括了各種有用的輔助函數(shù)的集合。

????????__init__.py 使 Python 將 util 目錄視為包含包。

????????get_data.py 提供了一個 Python 腳本用于下載 CycleGAN 和 pix2pix 數(shù)據(jù)集。比如:download_pix2pix_model.sh 或 download_cyclegan_model.sh.

????????html.py 用于將圖像保存到一個單獨的 HTML 文件中。它包括一些函數(shù)比如:add_header(在HTML文件中添加文本頭),add_images (向HTML文件添加一行圖像),save (將HTML保存到磁盤)。它基于 Python 的庫 dominate,這是一個用 DOM API 創(chuàng)建和操作 HTML 文檔的python 庫。

????????image_pool.py 是存儲以前生成圖像的圖像緩沖區(qū)。這個緩沖區(qū)使我們能夠使用之前生成的圖像來更新鑒別器,而不是使用最新的生成器生成的圖像。論文對這一最初的想法進行了討論。緩沖區(qū)的大小由 --pool_size控制。

????????visualizer.py 可以顯示/保存圖像和打印/保存日志信息。它使用 Python 庫 visdom 進行顯示,使用 Python 庫 dominate(包裝在 HTML 中)創(chuàng)建帶有圖像的 HTML 文件。

????????util.py 包含輔助函數(shù),如 tensor2im(將張量數(shù)組轉(zhuǎn)換為 numpy 圖像數(shù)組)、diagnose_network(計算并打印梯度平均絕對值的平均值)、mkdirs(創(chuàng)建多個目錄)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容