초해상도가 무엇이고 어떻게 활용할까요?
첩보영화 같은 것을 보다보면 CCTV에 찍힌 범인의 얼굴이나 자동차 번호판을 식별하는 장면들이 나옵니다. 너무 작아서 수십개의 화소로만 이뤄진 것 같은 확대 영상에서 사람이나 번호판 숫자의 윤곽이 점점 더 뚜렷해져가는 그 장면들을 보면서 어릴 적엔 '에이... 좀 뻥이 심한 것 같네...' 라는 생각을 했었죠. 하지만, 지금은 '나도 장난감처럼 저런 걸 만들어볼까' 하는 지경에 이르렀습니다. 그만큼 인공지능 기술이 이 분야에서 많은 발전을 거뒀다는 얘기입니다.
그래서 오늘은 초해상도(Super Resolution)에 대해, 언제나 그랬던 것처럼 가볍게만 알아보고 가겠습니다. ^^
|
|
|
해상도란? 해상도란 이미지/영상 등을 표현하기 위해 사용되는 픽셀(pixel)의 정도를 나타내는 용어이며 화질을 나타내는데 사용됩니다. 당연히 이미지나 영상이 어디에 표현되어야 하는지에 따라 다르겠죠? 출력디자인 쪽에서는 DPI (dots per inch)를 디스플레이와 같은 화상에서는 PPI(pixels per inch)라는 단위를 사용합니다.
디스플레이인 경우로 가정하면, FHD (1920x1280)의 경우, 대략 2백만개가 약간 넘는 pixel 수를 가지게 됩니다. 모니터의 비율과 크기에 따라 해상도는 달라진다는 얘기가 되겠죠. 즉, 대각선 길이가 15인치, 16:9 비율의 모니터가 FHD 해상도를 가진다면 대략 가로 방향 PPI와 세로 방향 PPI를 계산해 낼 수 있겠죠. (계산은 생략^^)
그렇다면 초해상도란?
영어로는 'Super Resolution' 혹은 이를 줄여서 SR이라고 합니다. 해상도란 단어 앞에 '초'를 붙였으니 아주 높은 해상도를 떠올리실텐데, 실제 의미는 저해상도(Low Resolution, LR)의 영상을 고해상도(High Resolution, HR) 영상으로 변환하는 작업을 의미합니다. 주로 영상 쪽에서 사용되기 때문에 SR 앞에는 'Image' 라는 단어가 생략되어 있다고 보시면 됩니다.
초해상도에는 어떤 기술이 사용되나요? 초해상도에 가장 먼저 딥러닝을 적용한 것은 CNN(Convolutional Neural Network)을 적용한 SRCNN에서였습니다. 그 전까지는 Nearest Neighbor, Bilinear, Bicubic 등의 다양한 영상 보간 알고리즘을 이용하고 있었죠.
|
|
|
출처) SRCNN 논문 (https://arxiv.org/pdf/1501.00092.pdf)
딥러닝을 이용해서 초해상도를 수행하는 방식은 크게 2가지로 나뉩니다. 저해상도 이미지로 고해상도 이미지를 예측하는 Supervised Learning과 GAN (Generative Adversarial Network)을 이용해서 아예 고해상도 이미지를 생성하는 방식으로 말이죠. 성능을 떠나 모델의 크기, 가성비 등을 고려하면 각각의 방식이 서로 장단점이 있다고 할 수 있겠습니다. 다만, 최근 트렌드는 생성 모델을 이용하는 쪽이 더 많아지고 있는 것 같습니다. 또한 해상도만 향상 시키는 것이 아니라 화면 내 노이즈 제거나 누락된 부분을 보강하기 위해 inpainting을 함께 적용한다거나 하는 모델들도 소개되고 있습니다. |
|
|
Super Resolution은 어떤 분야에 활용될 수 있나요? CCTV 카메라 영상의 경우에도 최근에는 거의 대부분 HD, FHD 급으로 해상도가 높아졌지만 수년전만 해도 320x240 수준의 해상도를 가진 열악한 곳도 있었습니다. 범죄 장면이 CCTV에 찍히긴 했지만 너무 낮은 해상도 때문에 번호판이나 범인의 얼굴을 식별을 하지 못하는 경우가 많았다는 얘기죠. 이 때문에 찍힌 영상을 알고리즘을 이용해서 해상도를 높이는 작업들이 필요 했었습니다. 카메라의 해상도가 높아지더라도 원거리에서 찍힌 작은 사물을 판별할 때는 현재도 여전히 이런 과정이 필요할 것입니다.
SR 기술은 과거에 만들어진 영상 기록물들을 고해상도로 변환하는 작업에 활용할 수 있습니다. 단적인 예로 영상기록원 등에 보관되어 있는 오래된 저해상도 영상을 고해상도로 변환할 때 활용될 수도 있습니다. 예전에 방영된 드라마나 영화를 리마스터링해서 다시 방송하는 경우가 종종 있는데 이 때에도 이런 기술이 적용되고 있을 가능성이 높습니다. 이외에도 CCTV 카메라, 드론 카메라에 찍힌 작은 물체를 식별하기 위해 변환하는 용도, 혹은 의료 헬스케어에서 저해상도로 촬영한 MRI, CT 영상을 고해상도로 변환하여 촬영에 소요되는 시간을 절감하는 용도 뭐 이렇게 다양하게 활용할 수 있죠. 에어스메디칼이라는 의료AI 업체는 초해상도 기술을 이용해서 MRI 촬영에 소요되는 시간을 획기적으로 절감할 수 있었다고 합니다.
또한 최근 나오는 TV들에는 SR을 수행하는 칩이 내장되어 있다고 합니다. 저해상도 영상 신호를 받아 TV 상에서 upscaling을 수행해서 시청자의 눈에 보일 때는 고해상도 혹은 높은 선명도의 고품질 영상으로 보일 수 있도록 하고 있다는 얘기죠. 물론 아직은 딥러닝이 아닌 영상처리 알고리즘 기반으로 동작하고 있을 것 같긴 합니다만 기술이 발전하는 속도를 생각하면 최신의 딥러닝 알고리즘이 적용되어, 시청자가 원하는 해상도로 방송을 실시간으로 변환해서 볼 수 있는 날도 머지 않을거라 생각합니다.
초해상도에 대해 좀 더 알고 싶은데 관련한 영상 같은 것은 없을까요? 역시나 유튜브에는 많은 영상 자료가 있네요. 제가 찾아본 것 몇개만 올려둡니다.
|
|
|
SoyNet을 이용한 초해상도 모델 실행최적화 |
|
|
SoyNet의 Model Market 상에는 초해상도 모델로 EDSRGAN과 IDN, GLEAN 이 등록되어 있습니다. 이 가운데 GLEAN 모델은 CVPR 2021에서 발표된 최근 모델 가운데 하나이며 아래의 링크에서 상세한 내용을 확인할 수 있습니다.
SoyNet과 PyTorch에서의 실행 속도와 GPU 메모리 사용량을 비교한 것입니다.
- 추론속도 : SoyNet이 PyTorch 대비 217% 의 처리속도
- GPU 메모리 사용량 : SoyNet이 PyTorch의 약 86% 가량 사용
- 성능 (Accuracy) : 유효숫자 4개 수준까지 동일
SoyNet에서 최적화한 GLEAN 모델은 이곳에 등록되어 있으며 gradio를 이용하여 테스트할 수 있는 코드는 여기에서 확인할 수 있습니다.
다운받아 동작시켜 보면 아래와 같은 결과물을 얻을 수 있습니다. 원본 이미지는 32x32 사이즈이며 아래 데모에서는 더 크게 확대되어 표시되었습니다. |
|
|
오늘의 뉴스레터는 여기까지 구독자님, 아침 저녁 온도차가 큰 전형적인 환절기입니다. 건강 잘 챙기시고 또 다른 소식으로 만나뵐게요!
|
|
|
구독해 주시면 좋은 소식, 정보로 보답하겠습니다. |
|
|
주식회사 소이넷 sales@soynet.io 경기 성남시 분당구 성남대로331번길 8 (킨스타워) 1503호
대표전화 : 031-8039-5377
|
|
|
|
|