Image Super Resolution
- Super Resolution (초고해상도) : 주로 모델로 생성된 이미지를 의미
- High Resolution (고해상도) : 주로 Output 이미지를 의미
- Low Resolution (저해상도) : 주로 Input 이미지를 의미
Image Super Resolution의 정의
저해상도 이미지를 고해상도로 변환시키는 문제
미디어, 의료, 보안 등 다양한 산업 분야에서 중요한 문제로 대두되고 있다.
Image Super Resolution 문제의 어려움
Image Super Resolution은 유일한 정답이 존재하지 않는 ill-posed problem이 존재한다.
저해상도 이미지를 고해상도로 복원할 때 정답이 단 1개만 존재하지 않는다.
Computer Vision 영역에서 좋은 성능을 보이고 있는 다양한 딥러닝 모델을 적용해 Image Super Resolution 문제를 해결하려는 연구가 다수 진행되고 있다.
Image Super Resolution 분류
- 저해상도 이미지로 고해상도 이미지를 예측하는 Supervised Learning 방식
- Generative Adversarial Network(GAN)을 활용해 고해상도 이미지를 생성하는 방식
Image Super Resolution 특징
- 저해상도 이미지와 고해상도 이미지의 크기가 다른 문제를 어떻게 다룰 것인가?
- Image Super Resolution 문제에 어떻게 딥러닝 모델을 적용할 것인가?
- 고해상도 이미지 변환이 잘 되었다는 것을 어떻게 평가할 것인가?
이미지 분류 문제에서 일반적인 딥러닝 모델
일반적인 이미지 분류 문제에서 Convolutional Layer와 Fully Connected Layer를 활용해 딥러닝 모델을 구축하게 된다.
이미지가 들어왔을 때 Convolution 연산과 마지막에 Fully Connected Layer를 활용해서,
이 이미지가 어떤 이미지를 분류하는 문제라고 생각해볼 때, 맨 마지막에 클래스의 확률이 나올 것이다.
예시에서는 팬더라고 예측하고 있다.
Image Super Resolution 문제에서 딥러닝 모델
Image Super Resolution 문제를 해결하기 위해서는 추가적인 방법이 필요하다.
SR에서는 output 이 이미지이고 이미지 크기에도 차이가 있다.
저해상도 이미지 크기를 어떻게 고해상도 이미지 크기로 맞춰 학습할 것인가의 문제가 있다.
저해상도 이미지와 고해상도 이미지 크기 차이
두개의 간극을 어떻게 맞출것인가가 SR의 문제이다.
먼저 저해상도인 Input 이미지를 고화질 이미지에 크기를 맞춰야 한다.
크기를 맞춘 뒤, 빈 영역에 대한 값을 어떻게 채울 것인가에 대한 고민도 필요하다.
빨간 부분을 어떻게 처리할 것인가가 핵심 문제이다.
Upsampling 방법
- Interpolation-based upsampling : 인접 픽셀 값을 활용해서 빈 영역을 채우는 interpolation 방법이다.
- Learning-based upsampling : Upsampling이 가능한 Layer를 활용해서 Upsampling parameter를 학습하는 방법이다.
Interpolation-based upsampling
Nearest-neighbor Interpolation
Interpolation 방법 중에서 가장 간단한 방법이다.
빈 픽셀은 가장 가까운 픽셀 값으로 채우면 된다.
가장 심플한 방법이다.
Bilinear Interpolation
인접한 4개 픽셀에 대한 거리를 가중치로 두어 빈 영역을 채우는 방법이다.
빈 영역에 대해 거리 가중치를 둔 평균 값을 계산하는 것과 동일하다.
NNI 보단 더 성능이 좋다.
Bicubic Interpolation
인접한 16개 픽셀의 거리에 따른 가중치를 곱해서 계산하는 방법이다.
먼저 세로줄 픽셀 값으로 붉은색 영역의 1차원 cubic interpolation을 진행한다.
세로의 값을 먼저 채우고,
이후 노란색 영역 픽셀 값을 1차원 cubic interpolation으로 계산한다.
가로의 값을 채운다.
Interpolation 이미지 비교
원본 이미지의 특정 부분을 확대하면서 다양한 interpolation 방법을 적용한다.
Bicubic interpolation 방법일 때 가장 선명하게 확대된 것을 확인할 수 있다.
Learning-based upsampling
Transpose Convolution
(1) Transpose Convolution은 이미지 크기를 확대하기 위해 사용하는 Convolution 기법이다.
저해상도 이미지를 먼저 고해상도 이미지의 크기에 맞춰서 확장한다.
(2) 확장한 영역(빈 영역)에는 모두 0값으로 채운다.
(3) Transpose Convolution 연산 이후 원하는 Output Data 크기로 만들기 위해 필요한 크기만큼 zero padding을 진행한다.
즉, 만들고자 하는 사이즈에 맞춰서 Padding을 진행하게 된다.
(4) 그리고 원하는 Output 크기에 맞는 Convolution Filter 크기를 설정한다.
(5) 그리고 Convolution 연산을 수행한다.
(6) Convolution filter도 학습을 진행하게 된다.
Sub-pixel Convolution Layer
Sub-pixel convolutional layer는 convolution 연산으로 여러개의 feature map을 추출하고, 같은 픽셀 위치에 있는 값을 모아 upsampling을 진행한다.
여러 개 convolution 연산을 조합해 성능 향상을 기대할 수 있고, 효율적인 연산도 가능하다.
저해상도 이미지와 고해상도 이미지 크기가 다른 문제는 어떻게 다룰 것인가?
→ Interpolation, Transpose Convolution, Sub-pixel Convolution 등으로 Upsampling을 진행한다.
다섯가지 네트워크가 있다.
기존에 사용했던 딥러닝 테크닉이 이용된다.
들어온 인풋의 피쳐를 추출하고 이것들의 곱연산을 통해서 피쳐와 픽셀의 관계를 잘 학습하자는 모듈이다.
이 두가지의 큰 특징은 같다.
인풋의 이미지를 어떻게 잘 추출할 것인가에 좀더 집중한다.
원본이미지와 예측이미지가 동일하다면, 똑같이 복원됐다면
MSE값은 0이되고 이에따라 PSNR은 예측할 수 없게 된다.
따라서 PSNR의 maximum 값을 알 수 없다는 한계가 존재한다.
다만 기존 연구들을 보았을 때 PSNR의 값이 40이 넘어갔을 때에는 잘 복원 되었다고 판단 되고 있다.
PSNR의 값이 같아도 화질이 달라 보일 수 있다.
PSNR로는 완벽하게 평가할 수 없다는 한계가 있다.
세가지를 통해 구조적인 정보가 얼마나 유사한지 평가하는 방법이다.
'💡 AI > 토이 프로젝트' 카테고리의 다른 글
📈 LSTM을 이용한 TSLA 주식 예측 (0) | 2022.02.01 |
---|---|
🧙 해리포터 투명망토 만들기 (0) | 2022.01.24 |
🖕 뻐큐 모자이크 알고리즘 만들기 (1) | 2022.01.18 |
🍊 내 얼굴로 어노잉 오렌지 만들기 (0) | 2022.01.11 |
YOLOv5 커스텀 학습 튜토리얼 (0) | 2021.10.18 |