介紹
ESRGAN是一個較新的的低分辨率轉高分辨率的GAN模型,在SRGAN的基礎上做了增強怯伊。
其論文在ESRGAN論文
其代碼在ESRGAN倉庫掠械,該倉庫只提供了簡單的demo測試代碼惯豆。完整的訓練和測試代碼在BasicSR倉庫中。
如果要進一步學習,給出2篇論文綜述作為參考:
綜述1
綜述2
初次運行ESRGAN
- 安裝環(huán)境
conda install numpy pip install opencv-python==3.4.5.20 conda install python-lmdb pip install tensorboardX # 進入 https://pytorch.org/get-started/locally/ 找到安裝pytorch合適的指令。我這里原來是Linux conda python3.6 CUDA10 conda install pytorch torchvision cudatoolkit=10.0 -c pytorch # 然而由于conda鏡像沒了,需要用pip了 pip3 install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp37-cp37m-linux_x86_64.whl pip3 install https://download.pytorch.org/whl/cu100/torchvision-0.3.0-cp37-cp37m-linux_x86_64.whl
- 拉代碼
git clone https://github.com/xinntao/ESRGAN.git
下載模型到models中
https://pan.baidu.com/s/1-Lh6ma-wXzfH8NqeBtPaFQ
運行下面的代碼贮尉,結果在result中。
python test.py models/RRDB_ESRGAN_x4.pth
python test.py models/RRDB_PSNR_x4.pth
初次使用BasicSR測試ESRGAN(SRGAN)模型
- 拉代碼
git clone https://github.com/xinntao/BasicSR.git
- 進入codes文件夾
cd codes
- 修改 options/test/test_ESRGAN.json
- datasets dataroot_HR 將后面路徑改為自己的訓練數(shù)據(jù)文件夾朴沿,文件夾內存放的是png文件绘盟;或者改為lmdb文件。
- path root 改為自己的BasicSR項目路徑
- 將剛剛在ESRGAN中用到的model放到pretrain_model_G的目錄下面悯仙。
- 其他暫時不用動,我本機配置如下所示吠卷。
{ "name": "RRDB_ESRGAN_x4" , "suffix": "_ESRGAN" , "model": "srragan" , "scale": 4 , "gpu_ids": [0] , "datasets": { "test_1": { // the 1st test dataset "name": "set5" , "mode": "LRHR" , "dataroot_HR": "/root/addition_store/DIV2K_train_HR" } } , "path": { "root": "/home/student_docker/zlh/BasicSR" , "pretrain_model_G": "../experiments/pretrained_models/RRDB_ESRGAN_x4.pth" } , "network_G": { "which_model_G": "RRDB_net" // RRDB_net | sr_resnet , "norm_type": null , "mode": "CNA" , "nf": 64 , "nb": 23 , "in_nc": 3 , "out_nc": 3 , "gc": 32 , "group": 1 } }
- 運行測試代碼
python test.py -opt options/test/test_ESRGAN.json
- 如果需要跑其他的測試代碼锡垄,見其他測試
測試成功
訓練ESRGAN(SRGAN)模型
準備數(shù)據(jù)(DIV2K)
- 從DIV2K official page或者百度云下載
- 有幾個方法可以讓IO速度變快
- 將HDD改成SSD
- 將圖片數(shù)據(jù)集改成更小的子圖切片(sub-images)。見3和4
- 將原始數(shù)據(jù)改成lmdb格式祭隔。見5和6
- 修改codes/scripts/extract_subimgs_single.py文件的路徑
input_folder = '/root/addition_store/DIV2K_train_HR' # 輸入圖片路徑 save_folder = '/root/addition_store/DIV2K_train_HR_sub' # 輸出圖片路徑
- 運行
python scripts/extract_subimgs_single.py
執(zhí)行切片操作 - 修改codes/scripts/create_lmdb.py
img_folder = '/root/addition_store/DIV2K_train_HR_sub/*' # glob matching pattern lmdb_save_path = '/root/addition_store/DIV2K_train_HR_sub.lmdb' # must end with .lmdb mode = 2
- 運行
python scripts/create_lmdb.py
將數(shù)據(jù)改成lmdb格式
訓練
-
修改options/train/train_ESRGAN.json
"name": "002_RRDB_ESRGAN_x4_DIV2K" "train" "dataroot_HR": "/root/addition_store/DIV2K_train_HR_sub.lmdb" "val" "dataroot_HR": "/root/addition_store/DIV2K_valid_HR" "path" "root": "/home/student_docker/zlh/BasicSR"
-
運行
python train.py -opt options/train/train_ESRGAN.json
運行成功 -
tensorboard可視化
tensorboard --logdir=../tb_logger
進入http://localhost.localdomain:6006可看到訓練過程
tensorboard可視化