해상도 개선은 직접 모델을 학습시키지 않고 용도에 적합한 pretrained 모델을 활용

1️⃣ 사용 모델

2️⃣ 코드

# 실행에 필요한 모듈 설치 및 환경 설정
!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)

3️⃣ 결과

Untitled

Untitled