Super Resolution(SR) - 의미, 예시, 문제점

미남잉·2021년 9월 13일
1
post-thumbnail

Super Resolution

Super Resolution이란 저해상도 영상을 고해상도 영상으로 변환하는 작업을 의미합니다.

Image Super Resolution(이하 SR)은 저해상도(Low Resolution) 이미지를 고해상도 이미지(High Resolution) 이미지로 변환 시키는 문제를 의미합니다.

이미지 SR은 이미지 하나 또는 여러 이미지 사용에 따라

  • Single Image Super Resolution(SISR)
  • Multi Image Super Resolution(MISR)

로 나뉘기도 합니다.

Super Resolution의 예시

‘하얀거탑’ UHD 리마스터링 제작기 보러가기

하얀거탑은 UHD 화지로 리마스터링 되었습니다.

드라마 <하얀거탑>의 UHD 리마스터링은 명작의 화질 개선과 영상의 재해석이라는 점에서 분명히 가치가 있었습니다.

SR 학습의 어려움

1. 하나의 저해상도 이미지에 여러 개의 고해상도 이미지가 나올 수 있습니다.

출처: 해당 논문

1개의 저해상도 이미지에 대응하는 3개의 고해상도 이미지를 나타냈습니다.

3개의 고해상도 이미지는 눈으로 보았을 때 별 차이가 없어 보이지만, 확대하면 픽셀의 값이 세부적으로 각각 다르다는 것을 알 수 있습니다.

하나의 저해상도 이미지를 고해상도 이미지로 만드는데 다양한 경우의 수가 있다는 것이 SR의 특징입니다. 그래서 정의할 수 없는 문제를 의미하며, 이 문제를 Regular Inverse Problem 또는 ill-posed (inverse) problem이라 부릅니다.

이러한 어려움을 극복하기 위해 사용하고 있는 학습 방법은 고해상도 타겟 이미지를 Ground Truth(GT)로 정의하고, 이를 Low Resolution image로 만들기 위해 blurring, down sampling, noise 주입 등을 거쳐 저해상도 이미지를 만듭니다.

그 뒤 다양한 방법을 통해 저해상도 이미지를 GT로 복원시키도록 모델을 학습시키는 구조입니다.

저해상도 이미지를 만들 때 사용한 distortion, down sampling 기법이 무엇이었는지에 따라 Super Resolution 성능이 달라지기도 합니다.

2. SR 문제의 복잡도

위의 그림은 2x2 크기의 이미지를 이용해 3x3, 4x4, 5x5 크기의 이미지로 SR을 하는 과정을 간략하게 보여주었습니다.

녹색 박스는 2x2 이미지 픽셀을 입력으로 3x3 크기의 이미지를 만들기 위해 새롭게 생성해야 하는 정보는 최소 5개의 회색 박스(픽셀)이며 이미지 크기가 커질 수록 생성해야 할 정보가 더 많아집니다.

이것은 원래의 이미지가 가진 해상도보다 더 높은 해상도로 SR 할 수록 심해지는 문제입니다.

위의 이미지의 첫 번째, 네 번째는 저해상도 및 고해상도 이미지를 나타내며

두 번째와 세 번째 이미지가 딥러닝 모델을 이용해 SR하여 생성한 결과 이미지입니다.

그냥 눈으로만 봤을 때 어떤게 더 고해상도 이미지 같아 보이시나요?

제 눈에도 결과 2가 더 선명하고 세밀한 정보를 표현하고 있는 것 같은데, 실제로는 결과 1이 더 고해상도 이미지입니다.

이는 괄호 안에 있는 숫자로도 결과를 비교해 볼 수 있습니다. 두 이미지의 정량적 평가 결과는 결과 1이 결과 2보다 더 높다는 것을 확인할 수 있습니다.

이처럼 SR을 수행하는데 어려운 점은 위 그림과 같이 결과를 평가할 때 사용하는 정량적 평가와 눈으로 확인하는 정성적 평가가 일치하지 않을 수도 있다는 점입니다.

정량적인 평가 수치를 만드는 방법과 결과 2는 왜 사람 눈에 보기에 더 좋은 결과를 낼 수 있었는지에 대한 모델 등은 다음에 소개하겠습니다!

profile
Tistory로 이사갔어요

4개의 댓글

comment-user-thumbnail
2022년 5월 9일

안녕하세요 upscaling에 대해서 알아보다가 들어왔습니다.
저는 컴공과에 다니고 있고, Computer Vision으로 진로를 정했습니다.
글을 이것저것 보니까 비전공자임에도 불구하고 저보다 더 열심히 그리고 잘하시는 것 같습니다.
혹시 뭐 여쭤봐도 괜찮을까요?
어떤 방법으로 공부하시는지 궁금합니다.
저는 학부 공부와 병행해서 딥러닝을 공부하고 있는데, 생각보다 어려움이 많아서요..ㅜ
사실 딥러닝을 공부하는 것 자체는 큰 어려움이 없는데, 그냥 수학적 이론이나 코드 짜는 방법을 알면 그게 끝인지, 아니면 추가적으로 여러 논문이나 연구를 해야하는지, 프로젝트를 해야하는지
할 건 너무 무궁무진한데, 너무 많다보니 뭘 해야할지 모르겠습니다ㅜㅜ
정확히는 방향성을 못잡겠네요..

혹시 어떻게 공부를 하셨는지, 그리고 공부를 했다면 어디에 적용을 해봤는지 여쭤봐도 될까요?
감사합니다.

1개의 답글