안녕하세요. QM크크리입니다. 오늘은 영화 등의 영상을 원래 프레임의 2배, 4배, 또는 그 이상으로 보간하는 무료 프로그램에 대해 알아보는 자리를 마련했습니다. 모션 보간은 개인적으로도 관심을 가졌던 사안으로, 이전에도 이 분야에서 개인 사용자용 프로그램으론 원조 급인 SVP(SmoothVideo Project)에 대해 소개해 드린 바 있습니다.
"모션 보간, 플루이드 모션이 대체 뭐길래? SVP 4 Pro를 통해 한 번 알아보자" 칼럼 바로 가기
해당 칼럼 마지막에서도 언급했던 것처럼 최근에는 각종 AI 연구를 통해 좀 더 고화질의 보간을 추구하는 알고리듬들이 나오고 있습니다. 이런 알고리듬은 주로 인공지능 연구 논문으로 발표되지만, 구현한 소스 코드를 공개하기도 하여 별도의 제삼자가 일반 사용자도 쓰기 쉽게 해주는 프로그램을 만들어 공개하기도 합니다. 이렇게 사용자가 쓰기 쉽게 눈에 보이는 설정 화면을 제공하는 프로그램을 GUI 프론트엔드라고 합니다. 지포스 드라이버 설치를 도와주는 NVCleanstall처럼 말이죠.(칼럼 바로 가기)
이전 칼럼에서 말씀드린 것처럼, TV로 자연경관을 감상하는 상황을 이용한 전통적인 연구에서는 영상이 초당 50~90프레임이면 충분하다고 알려져 있는데요. 뒤집어 말하자면 저런 정적인 연구에서도 90프레임까지는 차이를 느낄 수 있다는 결과도 나왔다는 얘기도 됩니다. 그 외에도 이런저런 이유로 높은 프레임률이 필요한 상황이 있어서 예전부터 120Hz TV와 모니터를 시작으로 고 주사율 제품들이 등장했고, 최근에는 게임용으로 480Hz 모니터 제품을 개발 중이라는 소식도 나왔습니다.
반면, 우리가 즐기는 영화나 드라마는 대부분 상대적으로 낮은 프레임률만 제공합니다. 이렇게 하는 이유는 상업적 효율성이나 익숙함의 문제에 따른 호불호 등 여러 원인이 있습니다만, 중요한 건 높은 프레임률을 선호하는 사람의 입장에서는 선택의 여지가 없다는 점입니다. 그래서 이미 제공된 영상을 가공하여 프레임률을 높이는 '프레임 더블러'등의 기능이 나왔고, SVP도 그러한 기능을 제공하는 취미 프로그램이 발전한 끝에 상업화된 사례입니다.
이러한 모션 보간의 기본 원리는 매우 간단합니다. 영화처럼 우리가 일반적으로 즐기는 영상은 1초에 최소 24개의 장면을 제공하고, 각각의 장면은 대부분 그 직전 장면과 상당한 연관성을 가지고 있습니다. 이는 H.265(HEVC), VP9 등으로 알려진 영상 압축의 원리이기도 합니다. 이를 반대로 응용해서, 연속한 두 프레임 간의 차이와 연관성을 분석하여 보여주지 않은 ‘중간 장면’을 하나씩 추측해서 만든다면 1초에 2배의 프레임을 보여줄 수 있습니다. 바로 이 원리가 모션 보간의 시작입니다.
▲ 연속한 두 프레임 간의 차이와 연관성을 분석하여, 보여주지 않은 ‘중간 장면’을 추측해서 만듭니다. 도해 출처: SmoothVideo Project 홈페이지(바로 가기)
이렇게 끝나면 좋겠습니다만, 불행히도 세상일이 그렇게 간단하지 못하죠. 없는 내용을 추측으로 만들다 보니 원하지 않는 엉뚱한 결과를 보여줄 때가 많습니다. 이를 보간 결함(interpolation artifacts)이라고 합니다.
▲ 장면 출처: Akiteck's Blog(바로 가기)
이러한 보간 결함들은 디지털 이미지를 확대한 품질을 개선하기 위해 이미지 보간(Image Interpolation)을 시작하면서 처음 제기되었습니다. 그리고 모션 보간(Motion Interpolation) 역시 같은 문제를 피할 수 없습니다. 결함들은 원인, 또는 결과적으로 사람 눈에 어떻게 보이냐에 따라 적당한 이름으로 분류됩니다. 일례로 후광 결함(Halo artifact)은 물체의 가장자리 근처에서 잘못 처리한 결과로 보이는 뭔가 잔상 같은 것 때문에 마치 물체 자체에 은은한 헤일로(Halo: 후광)를 추가한 것 같아 보인다고 해서 붙여진 이름입니다.
▲ ResearchGate(바로 가기)에서 찾을 수 있는 보간 결함의 예시들. 디지털 이미지를 4배 확대한 사례이며, 가장 오른쪽의 Edge Halo가 후광 문제입니다.
영상 보간에 필요한 시간과 노력(시스템 성능 요구, 전력 소모 등)도 문제가 됩니다. 영상을 분석하고, 중간 장면을 추측하고, 만들어낸 추가 장면을 적절한 시점에 보여주는 모든 작업이 원본 영상에선 없던 추가적인 작업이기 때문이죠. 이를 해결하기 위해 근래에 사용한 방법의 하나가 NVIDIA Optical Flow이며, 그 위력은 이전 칼럼에서 약간의 GPU 사용 증가를 대가로 CPU 사용률과 전력 소모를 대폭 줄인 결과로 보여드린 바 있습니다.
영상에서 눈에 보이는 '움직임'을 정확히 분석해야 할 때 사용하는 수학적 분석 기법이 '광학 흐름(Optical Flow)'입니다. 이는 초음파 영상 분석 등 의료 분야에서도 사용하고 있는데요, 매일경제가 2017년 보도한 "[Medical Science] 심장 정밀촬영 기여한 '수학'"(기사 바로 가기)은 그 좋은 예시입니다. 이런 광학 흐름 분석을 GPU의 연산 성능을 활용해 빠르고 효율적으로 처리하는 기술이 NVIDIA Optical Flow이며, 이를 이용해 일반 영상의 프레임 수를 늘려 슬로 모션으로 변환하는 NVIDIA Super SloMo도 공개하였습니다.
▲ 영상 출처: NVIDIA 공식 채널(바로 가기)
반면 광학 흐름에서 벗어나 다른 분석 기법을 활용하려는 시도도 있습니다. 2020년 서울대학교에서 AAAI Conference on Artificial Intelligence에 발표한 "Channel Attention Is All You Need for Video Frame Interpolation(약칭 CAIN)"은 그 대표적인 예로 거론되는 연구 결과입니다. 광학 흐름을 분석하는 대신 Channel Attention이라는 분석 기법을 도입해서 빠르면서도 정확한 모션 보간을 가능하게 했다는 주장입니다.
DLSS가 그렇듯이, 이런 연구는 인간의 시신경을 모방한 컨볼루션 신경망CNN 인공지능에 어떤 정보를 주고 어떻게 훈련시킬까의 싸움입니다. 이전 칼럼에서 설명해 드린 것처럼, DLSS에서는 16K 초고해상도로 렌더링한 게임 화면을 원하는 정답(GT, Ground-truth)으로 상정합니다. 저해상도로 렌더링한 화면을 컨볼루션 신경망으로 작동하는 자동 부호화기Autoencoder로 바로잡아 목표한 해상도로 출력하되, 이를 정답과 비교하면서 신경망의 개선을 유도합니다.
"점점 더 강해지는 DLSS? 최신 버전을 내 게임에도 적용해 봅시다" 칼럼 바로 가기
▲ 자료 출처: Channel Attention Is All You Need for Video Frame Interpolation(바로 가기)
모션 보간에서는 원본 영상에서 연속된 3장면을 골라서 씁니다. 1, 2, 3의 세 장면에서 일부러 1, 3만 신경망에 주고 중간인 2를 추측으로 만들어내게 합니다. 원래의 2를 알고 있으니 이를 비교할 정답(GT)으로 사용합니다. 결과를 발표할 때는 1, 3을 겹친 화면(Overlaid inputs)과 기존 알고리듬(여기서는 SepConv-L1, TOFlow)도 같이 보여주고, 논문에 따라서는 자신들이 주장한 알고리듬에서 핵심 정보를 뺀 결과(CAIN w/o CA)도 포함합니다. 자신들이 주장한 핵심 정보를 통해 어떤 개선이 있었고, 기존 알고리듬보다 얼마나 나아졌으며, 얼마나 정답에 가까워졌는지를 직관적으로 알아보기 쉽게 하기 위함입니다.
반대로 광학 흐름(Optical Flow) 분석에 다른 정보를 더해서 결과를 개선해보고자 한 연구도 있습니다. 상하이 교통 대학의 연구원들이 캘리포니아 메르세드 대학 연구원들과 협력하여 발표한 "Depth-Aware Video Frame Interpolation(통칭 DAIN)"은 이런 쪽에 유명한 사례로 보입니다.
▲ 자료 출처: Depth-Aware Video Frame Interpolation(바로 가기)
영상 화면의 각 부분이 시청자가 보는 시점(카메라의 위치)로부터 얼마나 떨어져 있는지를 나타내는 깊이 정보(depth map)을 추가로 분석하여 보간 결함을 줄여보겠다는 방식입니다. 그래서 이름부터 깊이 인식(Depth-Aware)이라는 표현을 사용합니다.
▲ 자료 출처: Depth-Aware Video Frame Interpolation(바로 가기)
그 외에도 RIFE("Real-Time Intermediate Flow Estimation for Video Frame Interpolation", 논문 바로 가기)나 FLAVR("Flow-Agnostic Video Representations for Fast Frame Interpolation", 논문 바로 가기)도 소개해드리고자 합니다만, 이론상 설명은 이미 충분하니 비교 영상을 보고 실제 프로그램을 써보면서 알아보도록 합시다.
▲ 영상 출처: 유튜브 bycloud
▲ 영상 출처: 유튜브 Tarun Kalluri
|