본문 바로가기

컴퓨터/머신러닝 (Machine Learning)

Video Restoration Transformer (VRT) 사용하기 - 1

Super Resolution에 (Image Restoration) 대해 알아보던 중

아래의 모델을 찾게되어 사용법을(학습/추론) 공부해 보았다.

이번 글에서는 모델 구동 환경/데이터 준비를 (REDS dataset) 다루겠다.

 

GitHub - JingyunLiang/VRT: VRT: A Video Restoration Transformer (official repository)

 

GitHub - JingyunLiang/VRT: VRT: A Video Restoration Transformer (official repository)

VRT: A Video Restoration Transformer (official repository) - GitHub - JingyunLiang/VRT: VRT: A Video Restoration Transformer (official repository)

github.com

 

1. 가상환경 세팅 및 패키지 설치

 

 

깃헙 설명에 따르면 파이썬 3.8 버전, 토치 1.9.1 버전 이상이 필요하므로

파이썬 3.8버전 가상환경을 세팅한 후 필요 패키지들을 설치한다.

conda create -n py38_vrt python=3.8 입력

 

 

글 작성일 기준 pytorch stable 버전은 1.12.1 인데

해당 버전을 설치할 경우 VRT 모델을 돌릴때 에러가 발생하므로 1.11 버전을 설치하자

(관련글 assert not step_t.is_cuda, "If capturable=False, state_steps should not be CUDA tensors. · Issue #80809 · pytorch/pytorch · GitHub )

 

 

이전 버전 찾기로 넘어가서

 

 

세팅된 CUDA 버전에 맞는 설치 command를 복사하여 설치

pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113 입력

 

 

나머지 패키지 설치를 위해 먼저 git을 받는다.

git clone https://github.com/JingyunLiang/VRT.git 입력

# 위 git은 추론 코드와 내용만 담고 있다.

#학습 코드는 GitHub - cszn/KAIR: Image Restoration Toolbox (PyTorch). Training and testing codes for DPIR, USRNet, DnCNN, FFDNet, SRMD, DPSR, BSRGAN, SwinIR 여기에 있으므로

#git clone https://github.com/cszn/KAIR.git 입력도 함께 해준다.

 

 

VRT 폴더 내에 requirements.txt 파일을 편집기로 (vim, nano) 열어서 (nano requirements.txt 입력)

미리 설치한 pytorch와 torchvision을 지우고 저장한다.

 

 

pip install -r requirements.txt 를 입력하여 필요 패키지를 설치

 

 

학습을 위해 받은 KAIR git 폴더에서도 똑같이 진행한다.

 

 

2. REDS dataset 준비

아래의 설명글이 dataset 준비에 대해서 서술하고 있다.

BasicSR/DatasetPreparation.md at master · XPixelGroup/BasicSR · GitHub

 

GitHub - XPixelGroup/BasicSR: Open Source Image and Video Restoration Toolbox for Super-resolution, Denoise, Deblurring, etc. Cu

Open Source Image and Video Restoration Toolbox for Super-resolution, Denoise, Deblurring, etc. Currently, it includes EDSR, RCAN, SRResNet, SRGAN, ESRGAN, EDVR, BasicVSR, SwinIR, ECBSR, etc. Also ...

github.com

 

사진에서 보이는 official website로 넘어가면 아래로 연결이 되는데

Publications Datasets CV | Seungjun Nah

 

Publications Datasets CV

Research Scientist NVIDIA

seungjunnah.github.io

 

데이터셋에 대한 설명과 여러가지 다운로드 방법을 알려준다.

그 중 download_REDS.py 코드를 돌려서 데이터를 받아보았다.

 

 

download_REDS.py 파일을 받은 후 확인해 보면

 

 

많은 파라미터들 중 super resolution 학습을 위한

train_sharp, val_sharp / train_sharp_bicubic, val_sharp_bicubic 파일을(4개) snu 서버를 통해 받아보자

download_REDS.py 파일이 위치한 곳에서

python3 download_REDS.py --server snu --train_sharp 입력

#필자의 경우 위 코드를 입력하면 처음 한번은 connection 어쩌고 에러가 뜨는데

다시 코드를 입력하면 돌아간다.

#위의 이유로 4개의 파일을 각각 따로따로 받아준다. (한꺼번에 할 경우, 하나 끝나면 오류가 다시 뜬다)

 

 

다 받으면 아래처럼 되고, 전체 크기는 약 39기가 정도 된다. (train_sharp가 32기가 정도 한다.)

 

 

다 받은 후 압축해제를 해준다.

필자는 4개 파일 한번에 다하려고 아래의 파이썬 코드를 돌렸다.

import zipfile
import os

files = os.listdir('REDS')
for file in files:
    with zipfile.ZipFile('REDS/' + file, 'r') as zip_ref:
        zip_ref.extractall()

위 과정을 거치면 train 폴더와 val 폴더가 생성되고

각각 train_sharp, train_sharp_bicubic, val_sharp, val_sharp_bicubic 폴더를 담고 있을 것이다.

위에서 받은 KAIR git 폴더들 중 trainsets 폴더에 REDS 폴더를 만든 다음,

위 4개의 폴더들을 KAIR/trainsets/REDS 안에 넣어준다.

 

 

KAIR 폴더에 위치한 상태에서 python3 scripts/data_preparation/regroup_reds_dataset.py 를 입력

 

 

이후 REDS 폴더 내 train_sharp와 train_sharp_bicubic 폴더를 보면 validation 폴더들이 옮겨져서

폴더의 수가 늘어난 것을 알 수 있다.

폴더이름을 train_sharp_with_val, train_sharp_bicubic_with_val 로 바꿔주자

#image들이 담긴 폴더의 수와 모델의 동작을 위한 (data/mata_info) meta 파일의 내용이 같아야 하므로

하라는대로 따라했다.

 

 

다음으로는 처리속도가 빠르다는 lmdb로 변환을 하는 작업이 있는데,

변환하면 모델 돌릴때 에러가 발생하므로 변환하지 않는다.

 

다음 편에 계속