Video2X로 DVD 영상을 HD 화질로 업스케일링하기

가지고 있던 DVD 속의 영상들을 MakeMKV를 사용해 파일로 바꾸던 도중 문득 현대의 인공지능 기술력이라면 DVD급 화질(480p)의 영상을 HD(720p)나 FHD(1080p)로 고품질 변환(업스케일링; upscaling)하는 것이 가능하지 않을까 궁금해졌다. 검색을 해보니 역시 이것이 불가능한 일이 아님을 알게 되었다. 예컨대 Topaz Labs에서 제공하는 상용 소프트웨어인 Video Enhance AI를 사용하면 SD급 화질의 영상을 HD는 물론 4k나 8k까지 업스케일링이 가능하다(당연한 말이지만 SD를 초고화질 4k 또는 그 이상의 화질로 변환할 경우 어쩔 수 없는 품질 저하가 발생하게 된다). 하지만 이 소프트웨어의 가격은 200달러로, 나에겐 택도 없이 비싼 값이다(업스케일링을 집에서 시도할 정도로 강력한 그래픽카드를 갖고 있는 사람들이라면 200달러 정도는 저렴하게 느껴지겠지만 말이다).

내가 사랑하는 자유 및 오픈소스 소프트웨어 측에선 해결책이 없을까? 물론 있었다. 영상의 해상도를 증강시키는 알고리즘인 waifu2x, Anime4k, SRMD, RealSR, Real-CUGAN, ESRGAN 등은 이미 오픈소스 소프트웨어로 구현이 되어 있고, 이것을 일반인들도 쉽게 사용할 수 있게 해주는 프론트엔드(또는 래퍼) 소프트웨어도 다수 존재한다. 그 중 가장 많이 사용되는 것은 Video2X와 cupscale 같은데, 난 전자를 골라 설치해보았다.

https://github.com/k4yt3x/video2x

A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley 2, 2018. - GitHub - k4yt3x/video2x: A lossless video/GIF/image upscaler achieved with...

github.com

내 목표는 Video2X를 사용해 DVD에 담긴 480p(해상도 720 x 480)의 영상을 720p(해상도 1280 x 960)으로 업스케일링하는 것이다. 테스트를 위한 영상으로는 다큐멘터리 영화 아이맥스: 갈라파고스 제도(https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=575733)의 DVD에서 추출한 3분 남짓의 메이킹 필름이다. 영화 본편 대신 메이킹 필름을 고른 이유에는 두 가지가 있다. 첫번째는 40분에 달하는 본편을 업스케일링하려면 시간이 과도하게 오래 걸릴 것 같았기 때문이고, 두번째는 메이킹 필름의 화질이 본편보다 확연히 떨어지기 때문이다. 저품질 카메라로 촬영되어 용량을 절약하기 위해 과도하게 압축된 이 영상을 인공지능이 어떻게 개선할지 궁금했었다.

먼저 Video2X에서 고품질 변환을 위해 사용할 알고리즘을 골라야 한다. 이 소프트웨어에서 구현된 알고리즘은 waifu2x, Anime4K, Real-CUGAN, SRMD 및 RealSR이다. 그 중 처음 세 개는 애니메이션을 위해 훈련된 알고리즘으로, 그 분야에서는 매우 뚜렷한 업스케일링 효과를 보이지만 내가 사용하는 영상과 같은 실사 이미지에서는 좋은 결과가 나오지 않는다고 들었다. 실사 영상을 처리하는 알고리즘 중 RealSR은 속도가 매우 느리지만 고품질의 결과를 제공하고, 반대로 SRMD는 속도가 비교적 빠르지만 RealSR에 비해 업스케일링 품질이 낮다. 내가 고른 것은 RealSR이다.

잠시 내가 사용하는 컴퓨터의 사양을 적어보자. 변환에 사용한 데스크탑은 CPU로 코어가 6개 달린 인텔의 i5-10400F와 16GB의 RAM을 장착했고, 그래픽카드로는 NVIDIA의 RTX 3060 Ti (VRAM 8GB)를 사용하는, 비교적 최신 부품이 달린 컴퓨터다. 그 어떤 고사양 AAA 게임도 가볍게 구동하는(물론 사이버펑크 2077은 예외다) 내 컴퓨터기에 3분짜리 480p 영상을 720p로 변환하는 것 정도야 얼마 안 걸리겠거니 했지만, 실제 작업을 돌려보니 내가 업스케일링 작업에 필요한 자원을 매우 크게 과소평가 했음을 깨닫게 되었다. Video2X에서 제시한 예상 작업 시간이 약 10시간이었기 때문이다. 아무래도 이 프로그램을 내 DVD 모음집을 HD 화질로 업그레이드하는 실용적인 용도로 사용하기는 무리인듯 싶었다. 아쉬운 마음과 함께 작업을 중지하고 짧은 시간이지만 컴퓨터가 업스케일링에 성공한 프레임을 원본의 것과 일대일 비교해보았다.

비교 전 한가지 짚고 넘어가자면, 내가 설정을 잘못 만졌는지 보정 완료된 이미지는 원했던 HD급이 아닌 2880 x 1920의 초고해상도(15인치 맥북 프로에 장착된 레티나 디스플레이의 것과 비슷하다)로 출력 되었다. 가로세로 해상도가 원본에 비해 약 4배나 증가된 것이다. 아마도 업스케일링 팩터를 잘못 설정한 듯 한데, 이렇게 된 거 결과물이나 비교해보자. 과도한 뻥튀기 작업이 이루어진 만큼 결과에 큰 기대는 없었다. 하지만 메이킹 필름의 조약한 화질 및 과도한 업스케일링 팩터 설정 등 온갖 악조건에도 불구하고 RealSR 알고리즘의 품질은 나쁘지 않았다. 먼저, 다큐멘터리에서 빠질 수 없는 '토킹 헤즈' 구도의 프레임을 살펴보자.

메이킹필름의 10010번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

메이킹필름의 10006번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

10006번쨰 프레임의 일부분을 확대한 모습. (좌) 보정 전 (우) 보정 후

옷과 피부 그리고 배경 등에 담긴 디테일(특히 옷의 주름)이 확실히 더 선명해졌다. 박사님의 눈을 확대한 사진에서는 눈썹 및 눈동자의 세부요소가 더 선명하게 보이며(다만 눈 부분에서는 원본 영상에 존재하던 가로 줄무늬가 더 강조되어 버렸다), 피부 부분에서 네모난 픽셀이 드러나는 '깍두기 현상'도 명확히 개선되었다. 만약 원본 영상이 더욱 나은 화질로 수록되었다면 업스케일링 결과에서도 큰 개선을 기대해볼만 하다.

이번에는 바다를 찍은 사진을 살펴보자. 휴대용 캠코더로 촬영된 것인지 원본의 화질은 매우 나빴다.

메이킹필름의 1005번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

메이킹필름의 1010번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

바위 부분을 확대한 사진. (좌) 보정 전. (우) 보정 후.

도마뱀(?)을 확대한 사진. (좌) 보정 전. (우) 보정 후.

물결과 뽀얀 거품 그리고 모래사장을 확대한 모습. (좌) 보정 전. (우) 보정 후.

확대 이미지를 비교해보면 영상 전체를 지배했던 RGB 색상의 노이즈 입자들과 '깍두기 현상'이 많이 개선되었음을 알 수 있지만, 이것이 완성된 영상을 보는 사람의 입장에서 품질의 확연한 개선이 있었다고 느낄 정도는 아니다. 역시 조약한 품질의 원본 영상이 가지는 한계라고 할 수 있겠다. 쓰레기가 들어가면 쓰레기가 나오는 법이다(Garbage In, Garbage Out).

이번에는 아마도 고프로 등 액션카메라로 촬영된 듯한 수중 영상을 비교해보자.

메이킹필름의 10134번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

메이킹필름의 10062번째 프레임. (왼쪽) 원본, (오른쪽) RealSR 보정 후.

잠수정의 일부를 확대한 모습. (좌) 보정 전. (우) 보정 후.

손의 일부를 확대한 모습. (좌) 보정 전. (우) 보정 후.

아까와 마찬가지로 깍두기 현상은 대부분 사라졌다. 잠수정의 일부를 확대해 본 사진에서는 하단 1/3 부분에 위치한 물체의 묘사가 더 나아졌고, 손의 일부를 확대해 본 모습에서는 손톱과 손가락의 모습이 보정 후 개선되었지만, 원본에 존재하는 가로 줄무늬 잡음이 더욱 강조된 탓에 업스케일링의 결과는 균일하지 않았다.

이상의 결과를 정리하면 Video2X에서 구현된 RealSR 알고리즘은 실사 SD 영상을 HD 해상도로 업스케일링하는데 분명 긍정적인 성과를 보이지만, 개선의 정도는 원본 영상의 품질에 의해 크게 좌우되는 것 같다. 특히, 원본에 가로 줄무늬 등 노이즈가 있을 경우 그런 '디테일'이 증폭되기도 하니 주의를 요한다. 마지막으로, SD를 FHD 이상으로 증강시키는 듯 과도한 업스케일링은 원본의 노이즈를 과도하게 반영하는 문제를 일으킨다.

컴퓨터 성능이 내 목표를 받춰주지 못해 3분 영상 전부를 업스케일링 하는데 실패했지만, 그래도 (적어도 일부분에서는) 더 나아진 품질의 사진을 획득한 것에 충분히 만족한다. 만약 더 나은 성능의 컴퓨팅 서버를 대여할 일이 생긴다면 다시 한 번 시도해 볼 생각이다. 그땐 업스케일링 할 영상도 품질이 훨씬 좋은 것으로 골라야겠다.