해상도 개선은 직접 모델을 학습시키지 않고 용도에 적합한 pretrained 모델을 활용
기존 esrGAN 모델을 개선한 real-esrGAN 모델 사용
관련 논문
원본 코드 출처
RealESRGAN_x4plus_anime_6B.pth
)을 download# 실행에 필요한 모듈 설치 및 환경 설정
!pip install basicsr
!pip install facexlib
!pip install gfpgan
!pip install -r requirements.txt
!python setup.py develop
# 해상도를 개선할 이미지 업로드하는 부분(구글 colab 상에서 진행)
import os
from google.colab import files
import shutil
upload_folder = 'upload' # 업로드할 이미지가 저장될 경로
result_folder = 'results' # 해상도 개선 이미지가 저장될 경로
if os.path.isdir(upload_folder):
shutil.rmtree(upload_folder)
if os.path.isdir(result_folder):
shutil.rmtree(result_folder)
os.mkdir(upload_folder)
os.mkdir(result_folder) # 각 폴더가 없으면 생성
# 이미지 업로드
uploaded = files.upload()
for filename in uploaded.keys():
dst_path = os.path.join(upload_folder, filename)
print(f'move {filename} to {dst_path}')
shutil.move(filename, dst_path)
# 추론 수행(inference_realesrgan.py 직접 실행)
# inference_realesrgan.py는 깃허브 내에서 참고
!python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i upload/result.jpg
# 결과 확인
import cv2
import matplotlib.pyplot as plt
def display(img1, img2):
fig = plt.figure(figsize=(25, 10))
ax1 = fig.add_subplot(1, 2, 1)
plt.title('Input image', fontsize=16)
ax1.axis('off')
ax2 = fig.add_subplot(1, 2, 2)
plt.title('Real-ESRGAN output', fontsize=16)
ax2.axis('off')
ax1.imshow(img1)
ax2.imshow(img2)
def imread(img_path):
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
return img
img_input = imread('./upload/result.jpg')
img_output = imread('./results/result_out.jpg')
display(img_input, img_output)