728x90

스파르타 코딩클럽의 딥러닝 이미지 처리 수업을 기반으로 공부한 내용을 정리하고 있습니다.

패키지 및 모델 로드하기

설치하기

pip install opencv-contrib-python

 

모델로드하기

1
2
3
4
5
6
import cv2
#모델 로드하기
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel('models/EDSR_x3.pb')
sr.setModel('edsr'3)
 
cs

-> 우리는 EDSR라는 이름의 모델을 로드할 것이다. 이 모델은 이미지의 해상도를 3배로 향상시켜주는 모델이다.

-> "dnn_superres" 초해상도라는 이름의 모델이다. 즉 해상도를 좋게 만들어주는 모델인 것이다. 

 

이미지 로드하고 추론하기

1
2
3
4
5
#이미지 로드하기
img = cv2.imread('imgs/06.jpg')
#이미지 추론하기 ( 해당 함수는 전처리와 후처리를 함꺼번에 해준다)
result = sr.upsample(img)
 
cs

-> 모델이 저장된 sr 변수에서 upsample이라는 함수를 사용하게 된다. 

-> 해상도가 낮은 이미지를 로드해주고 sr.upsample() 함수를 사용하여 추론할 것이다.

이 때 이 함수는 전처리와 후처리 과정을 함수에서 해줘서 간편하게 사용할 수 있다.

 

결과 이미지 비교하기

1
2
3
4
5
6
7
#결과 이미지 비교하기
resized_img = cv2.resize(img, dsize=None, fx=3, fy=3)
 
cv2.imshow('img', img)
cv2.imshow('resized_img', resized_img)
cv2.imshow('result', result)
cv2.waitKey(0)
cs

-> 일단 원본 이미지를 cv2.resize()를 사용하여 가로 3배, 세로 3배의 크기로 늘려준다.

n배로 이미지 크기를 변형하고 싶을 때는 dsize 에 None 을 넣고 fx(너비 배수), fy(높이 배수)를 사용하여 이미지 크기를 변형할 수 있다.

 

-> 우리가 이 과정을 하는 이유는 기본 알고리즘을 사용하여 이미지의 해상도를 3배 늘렸을 때(resized_img)와 화질향상 딥러닝 모델을 사용하여 이미지의 해상도를 3배 늘렸을 때(result) 어떤 차이가 있는지 눈으로 확인하기 위함이다.

 

728x90

+ Recent posts