날 위한 96프레임 영화? 무료 모션 보간 프로그램들을 살펴보자

플루이드 모션? Flowframes, Waifu2x-Extension-GUI도 있습니다.

퀘이사존 QM크크리
73 8245 2021.10.01 18:46


퀘이사존



점점 진화하는 모션 보간, 무료로는 어디까지 써볼 수 있을까?

영화를 2배, 4배 프레임으로 보고 싶다면


    안녕하세요. 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




퀘이사존

    Flowframes는 위에서 소개한 보간 기법들을 사용자가 쓰기 쉽게 눈에 보이는 설정 화면을 제공하는 GUI 프론트엔드입니다. 인공지능 기반의 보간을 하기에는 다소 사양이 부족해도 쓸 수 있도록 영상을 아예 변환하는 방식을 사용합니다. 후원 기반으로 개발하고 있지만, 무료 프로그램이기도 합니다. 최신 버전을 후원자들에게 우선 공개한 후, 시간이 지나면 완전한 무료로 공개하는 방식이죠.


Flowframes 소개 및 내려받기 페이지 바로 가기


    Download Now를 누른 후 'No thanks, just take me to the downloads'를 선택하면 무료 버전을 받을 수 있습니다. 또는 Patreon(바로 가기)에서 매달 4유로(대략 5,500원)를 후원하고 최신 버전을 받아볼 수 있습니다.




퀘이사존▲ 무료 버전은 1.27.2, 후원 버전은 1.33.0이 현재 가장 최신 버전입니다.


    여기서는 무료 버전인 1.27.2을 통해 알아보도록 하겠습니다. 우선 2 MB의 웹 인스톨러와 1.2 GB의 아카이브 중 하나를 내려받아 설치하면 됩니다. 일반적으로는 웹 인스톨러를 권장하나, 웹 인스톨러를 사용한 설치에 문제가 발생하거나, 전체 설치 파일을 따로 보관하고 싶다면 아카이브를 받는 편이 낫습니다. 아카이브는 RTX30 시리즈 기준으로 필요한 파일을 모두 모아서 7zip 압축한 방식이라 반디집 등의 압축 프로그램으로 적당한 장소에 풀어 놓으면 됩니다.


    공식적인 시스템 요구 사양은 비교적 간단합니다.

  • Vulkan 지원 그래픽 카드(6년 미만의 모든 그래픽 카드 사용 가능){Vulkan-capable Graphics Card (anything younger than 6 years should work)}
  • Windows 10/11(윈 7은 작동할 수 있지만, 공식적으로 지원되지 않음){Windows 10/11 (Win 7 might work but is NOT officially supported in any way)}

  • GT 710 또는 Intel HD 3xxx/4xxx와 같은 이전 GPU는 작동하지 않습니다!{Older GPUs like the GT 710 or Intel HD 3xxx/4xxx will NOT work!}



퀘이사존▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다).


    첫 화면에서는 후원 버전을 포함한 모든 버전의 개선 내역(현재 1.26.0부터 표시), 후원자 목록, GPU 감지 내역 및 버전 정보를 보여줍니다. 여기서 왼쪽 아래의 Interpolate!를 눌러 바로 시작할 수도 있습니다만, 모든 설정이 완료된 후에야 작동하니 상단 메뉴에서 두 번째인 Interpolation을 선택해서 설정에 들어갑시다.




퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Flowframes


    설명 편의상 화면상 보이는 순서와 조금 다르게 설명하겠습니다.
  • Input Video: 원본 영상을 선택합니다. 오른쪽의 Browse 버튼을 써도 되고 원하는 영상을 끌어다 놔도 됩니다. 맨 처음 원본을 선택하면 아무 작동도 하지 않는 것처럼 보일 텐데요, 화면 아래 로그에 "This can take up to a few minutes, but only needs to be done once. (Elapsed: 00:00)"과 같은 메시지가 뜨면 정상이니 기다리면 됩니다. "Done compressing python runtime."이 뜨면 다시 사용할 수 있습니다.
  • Output Directory: 변환한 결과를 저장할 장소를 선택합니다. Input Video를 선택할 때 자동으로 설정되지만, 원하는 곳으로 설정을 바꿔도 됩니다. 역시 오른쪽의 Browse 버튼을 써도 되고 원하는 폴더를 끌어다 놔도 됩니다.
  • Interpolation AI: 보간 방법(인공지능 모델 및 구현 방법)을 택합니다. Flowframes는 원래 RIFE AI를 위한 프로그램이나, 현재는 FLAVR, DAIN, XFVI(후원 버전 한정)도 사용할 수 있습니다. 구현 방식으로도 나누어져 있는데, NVIDIA 그래픽카드 사용자는 '(Nvidia Only!)'가 있는 방식을 택하고, 나머지는 NCNN 방식을 택하면 됩니다. NCNN는 안드로이드 휴대폰에서 컨볼루션 신경망CNN 인공지능을 쓰기 위한 구현 방식이라 데스크톱에서는 성능 제약이 있는 편입니다. Flowframes는 일반 사용자가 편히 쓸 수 있는 설정 화면을 제공할 뿐, 자체적인 인공지능 구현을 개발할 역량은 없어서 지포스(CUDA)가 아닌 그래픽카드에서도 사용하기 쉬운 범용성 때문에 NCNN을 사용하는 것으로 보입니다.

    무료 1.27.2 버전, 지포스 사용자 기준 RIFE - CUDA과 FLAVR을 선택할 수 있습니다. RIFE와 FLAVR 자체는 일장일단이 있으니 여유가 되면 비교해보고 취향껏 선택하면 된다 할 수 있습니다. 다만 Flowframes에서 쓰는 FLAVR의 구현은 아직 실험적(Experimental)이란 딱지를 붙여놨고, 메모리 요구가 원체 많은 건지 메모리 관리에 문제가 있는지는 몰라도 FHD 영상을 보간하는데 64 GB 메인 메모리, 24 GB의 VRAM에서도 테스트 영상 둘 중 하나만 정상적으로 변환할 수 있었고, 나머지 하나는 메모리 부족 오류로 중단되었습니다. 그래서 일반적으로는 RIFE - CUDA를 권장합니다.

    라데온 그래픽카드 등을 사용하면 NCNN 구현의 RIFE와 DAIN 중 하나를 선택할 수 있는데, 일반적으로는 RIFE를 권장합니다.


퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Flowframes

  • Set FPS: 일반적인 영화(24프레임) 기준으로, 사용 중인 모니터의 주사율이 96Hz 이상이면 일반적으로 Input FPS에서 x4를 선택하는 편이 가장 무난합니다. 모니터의 주사율이 낮거나 최소한의 변환만을 원할 때 x2를 권장합니다.
  • AI Model: RIFE는 무료 1.27.2 기준 3.1버전이 가장 무난합니다. 후원 버전에서는 3.8 버전도 지원하는데 화질에는 일장 일단이 있으나 변환 속도가 매우 빨라졌다고 합니다. FLAVR는 위에서 x4나 x2를 선택했느냐에 따라 맞춰서 선택해줘야 합니다. DAIN은 단일 설정만 지원하며, XFVI는 후원 버전 전용으로 정확히 확인하기 힘든 관계로 다루지 않겠습니다.
  • Output Mode: 일반적으로는 MKV를 권장합니다. 특정 포맷을 사용할 필요가 있을 때는 해당 포맷을 선택하도록 합니다.


퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Flowframes


    Quick Settings는 영상 처리에 관련된 몇 가지 설정을 모아둔 곳으로, 아래의 Open the Settings를 눌러 전체 설정을 볼 수 있습니다.(오른쪽 위의 톱니바퀴 버튼도 동일) 해당 설정을 정확히 알고 필요할 때 조절하면 유용할 수 있습니다만, 대체로 기본값이 무난하여 자세한 설명은 생략합니다.


    Preview 탭은 영상 변환 중에 결과물을 적당히 미리 보여주는 용도입니다만, 처리 속도에 영향을 주지 않기 위해 낮은 프레임률로 보여주기 때문에 별 도움은 안 됩니다. 마지막으로 About 탭은 제작자 및 사용한 기술에 대한 정보를 아주 간략하게 보여줍니다.




퀘이사존


    Waifu2x-Extension-GUI는 이름에서부터 드러내듯이, 원래는 Waifu2x를 위한 프로그램입니다. 컨볼루션 신경망CNN 인공지능으로 애니메이션 캐릭터를 보간 결함 없이 확대해보자는 연구에서 출발하였기에, 철자도 일부러 아내(Wife)의 일본식 발음에 가깝게 바꾼 Waifu를 씁니다. 원래 Waifu2x는 웹서비스로 제공합니다만, 소스 코드도 공개하기 때문에 이를 이용한 GUI 프론트엔드 프로그램들도 여럿 나온 바 있습니다. 현재는 여러 업데이트를 거쳐 Waifu2x 자체도 사진, 게임 그래픽 등에도 사용할 수 있으며, Waifu2x-Extension-GUI는 CAIN, DAIN, RIFE의 세 가지 영상 보간 또한 지원합니다.


Waifu2x-Extension-GUI의 GitHub 페이지 바로 가기


    'Download Latest Stable Build (Windows x64)'(직링크 바로 가기)를 선택하면 현재 가장 최신 안정 버전을 받을 수 있습니다. Waifu2x-Extension-GUI도 후원 기반으로 개발하고 있습니다만, Flowframes와는 정책이 달라서 최신 베타 버전까지 무료로 공개하는 대신 일부 기능을 제한하는 방식입니다.



 

퀘이사존

▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다).


    Waifu2x-Extension-GUI를 실행하면 가장 먼저 언어 선택 팝업이 뜨는데 English를 골라주고 들어가면, 호환성 테스트(Compatibility test) 관련 안내가 나오고 자동으로 진행합니다. 안 해도 사용에 직접 지장을 주지는 않지만, 현재 상황을 알기 위해서 해주는 편이 좋습니다. 이 호환성 테스트는 전용 탭에서 언제든지 결과를 확인할 수 있으며, 화면 아래의 Start Compatibility test를 눌러 다시 검사할 수 있습니다. 주로 그래픽카드를 바꾸었거나, Waifu2x-Extension-GUI 자체의 프로그램 업데이트로 새로운 엔진을 추가했을 때 다시 검사해주면 좋습니다.


    화면 맨 아래쪽은 프로그램 작동 상황에 대한 보고를 보여주는 Log 페이지로, 초기 설정에선 글자 크기가 작아 읽기 어려울 수 있는데 오른쪽에서 Font size를 적당히 키워주면 됩니다.




퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Waifu2x-Extension-GUI, github

    Waifu2x-Extension-GUI는 이미지 확대 기능이 주 용도인 만큼 관련 설정이 더 많으나, 칼럼 주제에서 벗어나기 때문에 영상 보간 위주로 최대한 간단하게 설명하겠습니다.


    기본 사용법은 File List에 원하는 원본을 끌어다 놓고(왼쪽 아래 퀘이사존 버튼을 사용해서 불러와도 됩니다), 오른쪽 중앙의 Output Folder에서 결과를 출력할 장소를 지정한 후 Start로 시작하면 됩니다.


  • Settings Presets: 제작자가 몇 가지 설정을 모아서 저장해둬 편하게 선택할 수 있게 해뒀습니다. 목록에 있는 이름을 보고 적당히 선택하면 관련 설정이 모두 바뀝니다. 다만 현재 프로그램이 지원하는 다양한 엔진을 다 반영하진 못하는 데다가 설정을 바꿔서 저장할 수도 없어서 사용하더라도 직접 개별 설정을 보고 조절해 주는 편이 더 좋습니다.
  • Video Frame Interpolation: 영상의 모션 보간 기능을 활성화합니다. 이 칼럼의 주제이니 여기서는 반드시 활성화해야 하는 설정입니다.
    • Frame Interpolation only(video): 영상의 크기 확대 기능을 빼고 모션 보간만 하는 설정입니다. 필요에 따라 조절합니다.
  • Do nothing(when finished): 작업 완료 시 컴퓨터를 종료(Shut down)하거나 절전(Sleep), 재부팅(Restart)하게 설정할 수 있습니다. 기본값은 아무것도 하지 않는 설정입니다.
  • Re-process finished files: 이미 처리 완료한 파일을 다시 처리하는 설정입니다. 주로 같은 파일로 이것저것 다양한 설정을 시도해볼 때 사용합니다.
  • Scale ratio: 모션 보간과는 무관한 이미지 확대 배율입니다. 기본값은 2배이며, 왼쪽 위에 있는 Custom resolution(원하는 크기를 직접 입력, 축소도 가능)으로 대체할 수 있습니다.
  • Multiple of FPS(Target FPS): 후원 전용 기능으로 모션 보간으로 프레임을 얼마나 늘릴지를 조절합니다. 현재 무료 버전은 원본의 2배 설정만 사용할 수 있습니다. 다만 2배 보간으로 변환한 영상을 다시 2배 보간하는 식으로 4배로 만들 수는 있습니다.


 


퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Waifu2x-Extension-GUI, github

    Engine settings 페이지는 모션 보간과는 무관한 이미지 확대 관련 설정입니다. Image가 일반적인 이미지를 확대할 때 사용할 엔진을 설정하는 곳이고, Animated Image는 GIF 같은 소위 '움짤', Video는 영상의 크기를 확대할 때의 설정입니다. 그 아래에 보이는 메뉴는 각 엔진의 작동에 관한 설정입니다. 대체로 기본값(엔진은 waifu-ncnn-vulkan)이 무난하나, BETA-SRMD-CUDA(NVIDIA 그래픽카드 사용자 한정)나 RealESRGAN-NCNN-Vulkan도 시도해볼 만합니다. 처음 사용할 때나 그래픽카드를 교체한 후에는 Optimize Settings를 한 번 눌러주면 좋습니다. 엔진에 따라서는 선택하면 메인 화면에 'Image Style(엔진 이름)' 설정이 추가되는데, 2D Anime와 3D Real-life의 선택지를 원본에 맞게 골라줘야 최적의 결과를 얻을 수 있습니다.


    ※ BETA-SRMD-CUDA는 NVIDIA 그래픽카드에서만 쓸 수 있는 대신 화질이 좋으면서도 빠른 편입니다. 다만 구현이 불안정한지 원본에 따라서는 전체 색상을 잘못 처리해 이상한 결과를 보여주기도 합니다. RealESRGAN-NCNN-Vulkan은 화질 별점이 가장 높게 매겨져 있으나 처리 속도가 매우 느립니다. 둘 다 기본 waifu-ncnn-vulkan와 비교 시 3D Real-life에 좀 더 유리한 편입니다.




퀘이사존
▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다). 화면 출처: Waifu2x-Extension-GUI, github

 

  • Frame Interpolation: 영상의 모션 보간 기능을 활성화합니다. 이 칼럼의 주제이니 여기서는 반드시 활성화해야 하는 설정입니다.
  • Frame Interpolation Engine: rife, cain, dain을 고를 수 있으며 일반적으로는 기본값인 rife가 무난합니다.
  • TTA Mode: rife 전용 설정이며, Test-time augmentation이라는 기법을 적용합니다. 결과물의 화질을 약간 올릴 수 있지만, 그보다 처리 시간이 훨씬 더 오래 걸려서 일반적으로는 권장하지 않습니다.
  • UHD Mode: rife 전용 설정이며, 내부 최적화를 고해상도에 맞춰 바꿉니다. 원본 해상도가 3820x2160 이상이면 자동으로 활성화됩니다. Flowframes에선 원본의 세로 해상도가 1600 이상일 때 자동으로 사용하니 이를 고려해서 체크해 줘도 됩니다.
  • After Upscale: 영상 크기 확대와 같이 처리할 때 의미 있는 설정입니다. 활성화하면 크기 확대를 먼저하고 확대된 고해상도 영상으로 모션 보간을 처리합니다. 모션 보간에 필요한 메모리 용량, 특히 VRAM이 늘어나서 일반적으로는 권장하지 않습니다.
  • Model: rife 전용 설정이며, 3.1 버전이 가장 무난합니다.
  • Multithreading: 활성화하면 프로그램에서 자동으로 Auto-Adjust도 활성화하는데, 이 상태로 두는 게 일반적으로 가장 무난합니다.
  • Hardware-acceleareted Enconding: 최종 결과물을 저장할 때 NVIDIA의 NVENC등 그래픽카드에 있는 전용 회로를 사용합니다. 전용 회로를 이용한 인코딩은 일반적으로 화질이 좀 떨어지지만, 처리 속도가 매우 빠릅니다.
  • Hardware-acceleareted Deconding: 원본 영상을 읽어 들일 때 그래픽카드에 있는 전용 회로를 사용합니다. 요즘은 영상 재생에 하드웨어 가속을 통한 효율적인 재생을 전제로 최적화하는 경우가 대부분이라 가능한 한 사용하는 편이 좋습니다. 원본 영상이 드물게 호환되지 않을 때만 비활성화합니다.

    나머지는 기본값 그대로가 가장 무난하거나, 사용하기 복잡한 설정이거나 후원 버전 전용 기능인 관계로 자세한 설명은 생략합니다.



 


퀘이사존퀘이사존




퀘이사존

▲ 클릭하면 커집니다(원본 크기로 보실 수 있습니다).
기가바이트 제공: GIGABYTE AORUS GeForce RTX 3080 Ti XTREME 12G(기사 링크)


    그래픽카드는 RTX 3080 Ti 중에서도 상급 그래픽카드로 인지도 높은 제품인 GIGABYTE사의 AORUS XTREME(통칭 '어익')을 사용하였습니다. 듀얼 바이오스는 OC Mode를 사용하였습니다.




퀘이사존

▲  장면 출처: 닐 블롬캠프 감독의 영화 “엘리시움”(2013)


    영화 테스트에서는 2013년 작 영화 “엘리시움”의 초반부 클립(총 90초 길이)을 사용하였습니다. 이전 SVP 칼럼에서 말씀드린 것처럼, 어떠한 격렬한 액션도, 장면 전환도 없이 그저 주인공이 길을 걸어가는 장면임에도 불구하고 모션 보간의 역효과를 적나라하게 드러내서 인상 깊었던 장면입니다.


"모션 보간, 플루이드 모션이 대체 뭐길래? SVP 4 Pro를 통해 한 번 알아보자" 칼럼 바로 가기


    정지된 화면 갈무리(스크린 캡처) 상으로는 눈치채기 어려울 수도 있습니다만, 딱히 영상의 시각적 결함(visual artifact)에 민감하지 않은 분도 그저 SVP로 실시간 보간된 영상을 감상하는 것만으로도 뭐가 문제인지 쉽게 느낄 수 있을 정도입니다. 카메라 워크로 인해 화면상에선 주인공의 머리가 많이 흔들리긴 합니다만, 그걸 생각하더라도 상당히 튀는 결과(edge case)입니다.





 ▲  영상 출처: NVIDIA 공식 채널(바로 가기)

 

    다른 테스트 영상으로는 NVIDIA의 Slow Motion 공식 홍보 영상을 사용하였습니다. 비싼 AI 시스템으로 오랜 시간 연산을 통해 고품질의 결과물을 제시하는 신기술을 홍보하는 영상인데도 25초경 넘어지는 하키 선수의 왼손을 보면, 보간된 영상인 오른쪽 SUPER SLOMO에선 원본에는 없는 부자연스러운 변화가 한순간 보입니다. 칼럼 처음에 보여드린 비교도 바로 이 장면입니다. 정지된 화면 갈무리(스크린 캡처) 상으로는 단순히 동작을 다르게 표현했다고 볼 수도 있겠습니다만, 영상 재생 속도를 가장 느린 0.25배로 설정하고 보면 명백히 잘못 처리한 결함임을 알 수 있습니다.


    물론 자연과학에서 ‘맥스웰의 악마’의 의미를 알고 계신 분들은 아시겠지만, 원본에 없는 정보를 완벽하게 추측해낸다는 개념 자체가 영구기관과 같은 의미이고, 보간 결함을 줄일 수는 있어도 완전히 없앨 수는 없는 일이니 당연한 결과이기도 합니다. 원본 자체가 완벽하게 보간하기 어려운 특성이 있기에 NVIDIA가 자랑하는 기술조차 한순간 약점을 드러냈다고 할 수 있겠습니다. 하지만..., 아니, 그렇기에 RIFE, FLAVR와 같은 알고리듬들은 같은 원본을 주었을 때 어떤 결과를 보일지가 매우 흥미롭다고 생각하였습니다. 이들은 NVIDIA Slow Motion과 비슷한 결함을 보이거나 더 못한 결과를 낼까요? 아니면 더 나은 결과를 만들 수 있을까요?


 


 # Flowframes - RIFE, FLAVR



퀘이사존


    Flowframes는 자체적으로 보간에 걸린 시간을 따로 보여주고, 최종 저장까지 소요된 시간을 따로 또 보여줍니다. 해당 프로그램에서 지원하는 네 가지 구현을 비교하려 하였으나, DAIN은 예상 소요 시간이 12시간 이상으로 나와서 완료할 수 없었습니다. 테스트 자체는 굳이 하려면 할 방법은 있으나, 실사용에서 90분 전후의 영화 한 편을 변환하는 데 걸릴 시간을 예상해보면 실효성 측면에서 의미 없다고 판단했기 때문입니다.


    90초 클립을 변환한 측정 결과를 보면, NVIDIA 그래픽카드 전용의 CUDA 구현을 쓴 RIFE가 총 6분 25초로 빠르진 않지만 나름 괜찮은 결과를 보입니다. 범용 NCNN 구현의 RIFE는 조금 더 느려서 총 16분 26초가 걸렸습니다. 변환 시 로그를 보면 2배 변환 후 다시 2배 변환을 하는 것으로 보아, 구현 자체는 2배 보간만 지원하는 듯합니다.


    FLAVR는 32 GB 메인 메모리, 12 GB VRAM에서는 메모리 부족으로 오류가 나서 메인 메모리를 64 GB로 바꾸고 그래픽카드를 VRAM 24 GB의 RTX 3090 FE로 바꾼 후에야 총 89분(1시간 29분)이나 소요하고 변환을 완료할 수 있었습니다. 실사용에서 90분 전후의 영화 한 편을 변환하는데 필요할 시스템 사양과 걸릴 시간을 예상해보면 실효성이 떨어지는 편입니다.




퀘이사존


    NVIDIA 영상은 96초로 약간 더 긴 수준이나 변환 시간은 2배 가까이 걸렸습니다. 영화 소개 영상과 달리 스포츠 중계 장면을 슬로 모션으로 변환하여 비교하는 등 실제 내용으로는 훨씬 더 많은 장면이 담겨 있어서 오래 걸린 듯합니다. DAIN은 예상 소요 시간이 22시간 이상으로 나왔고, FLAVR는 메인 메모리를 64 GB로 바꾸고 그래픽카드를 VRAM 24 GB의 RTX 3090 FE로 바꾼 후에도 이 영상에서는 메모리 부족으로 오류가 나서 완료할 수 없었습니다.

    96초 클립을 변환한 측정 결과를 보면, NVIDIA 그래픽카드 전용의 CUDA 구현을 쓴 RIFE가 총 12분 22초로 빠르진 않지만 나름 괜찮은 결과를 보입니다. 범용 NCNN 구현의 RIFE는 조금 더 느려서 총 31분 8초가 걸렸습니다.


 


# Waifu2x-Extension-GUI - RIFE, CAIN



퀘이사존


    앞서 말씀드린 것처럼 Waifu2x-Extension-GUI 무료 버전은 2배 보간만 지원하여서 2배 보간으로 변환 완료한 영상을 다시 2배 보간하여 4배 영상을 만드는 방법으로 테스트하였습니다.


    RIFE는 2배 보간에 7분 32초, 총 21분 6초가 걸렸습니다. CAIN은 빠르다고 알려진 연구 결과와 달리 2배 변환에만 20분 54초가 걸렸을 뿐만 아니라, 결과물의 여러 장면에서 화면 전체가 깜빡이는 문제가 생겨서 4배 보간을 진행하지 않았습니다. DAIN은 여기서도 2배 변환에만 예상 시간이 최소 수 시간 이상으로 나와 테스트를 진행할 수 없었습니다.


 


퀘이사존


    NVIDIA 영상은 마찬가지로 더 오래 걸렸습니다. RIFE는 2배 보간에 13분 30초, 총 38분 39초가 걸렸습니다. CAIN은 빠르다고 알려진 연구 결과와 달리 2배 변환에만 39분 37초가 걸렸을 뿐만 아니라, 결과물의 여러 장면에서 화면 전체가 깜빡이는 문제가 생겨서 4배 보간을 진행하지 않았습니다. DAIN은 여기서도 2배 변환에만 예상 시간이 최소 수 시간 이상으로 나와 테스트를 진행할 수 없었습니다.




# 보간 결함 및 화질 비교



퀘이사존

▲  장면 출처: 닐 블롬캠프 감독의 영화 “엘리시움”(2013)


퀘이사존

 ▲  영상 출처: NVIDIA 공식 채널(바로 가기)


    화질 비교는 최소한 한 번은 정상적인 결과물을 내는 데 성공한 RIFE와 FLAVR에서만 진행하였습니다. 앞서 설명해 드린 문제의 화면을 중점적으로 비교해보니 (SVP의 실시간 보간과는 달리) 눈에 띈다고 할만한 보간 결함은 없어서 RIFE와 FLAVR 둘 다 매우 만족스러운 화질을 보였다고 할 수 있습니다. 다만 RIFE나 FLAVR 만의 약점을 드러낼 만한 장면은 없어서 두 알고리듬 간의 화질 차이는 딱히 찾지 못한 점은 아쉬웠습니다.




 퀘이사존


■ 보간 영상의 품질을 충분히 만족스러운 수준까지 끌어올려 줍니다

    테스트에서 결과물을 내는 데 성공한 RIFE와 FLAVR로 보간한 영상을 보니, SVP의 실시간 보간으로 영상을 감상하던 때에 비해 전반적으로 눈에 띄는 결함이 대폭 줄어들었고 보간 품질도 만족스러운 수준입니다. 변환에 사용한 시간을 생각하면 당연한 결과라고도 할 수도 있으나, 이 정도 결과를 낼 수 있는 알고리듬을 무료로 편하게 설정하고 써볼 수 있는데 의의가 있습니다.


    물론 보간 결함은 줄일 수는 있어도 없앨 수는 없는 문제이기 때문에 RIFE나 FLAVR로 보간한 영상도 자세히 분석하면 오류를 낸 부분을 여럿 찾을 수 있습니다. 특히 복잡한 패턴의 배경을 뒤로 한 채 물체가 따로 움직일 때 잘못 처리하기 쉬운데, NVIDIA 영상에서 하키 선수가 넘어질 때 골대 그물이 왜곡되는 결과로 확인할 수 있습니다. 그러나, 느린 재생 속도 등으로 정밀 분석을 시도하지 않고 실시간으로 감상하는 정도로는 크게 거슬리지 않을 정도로 결함을 잘 억제한 편입니다. 짧은 영상 2개로 간단히 비교한 결과라 다양한 영상에 일반화한 결론을 장담하기에는 다소 조심스러우나, 적극적인 보간 결과를 내면서도 보간 결함을 줄여야 하는 모순적인 목표들 사이에서 균형을 잘 잡았다고 할 수 있습니다.


■ 변환 시간은 여전히 넘어야할 벽입니다

    90여 초의 짧은 클립을 변환하는 데 몇 분~몇 시간(추정)이 소요되어서, 총 90분 전후의 영화 전체를 감상하기 위해 변환할 때 소요될 시간을 생각하면 어떤 결과도 빠르다고 하기 힘든 수준입니다. 특히 CAIN과 FLAVR는 이론상 빠르다고 알려진 것과 달리 무료로 쓸 수 있는 구현체의 한계인지 매우 실망스러운 결과를 보였습니다. 다만 Flowframes에서 지포스 그래픽카드 전용 CUDA 구현의 RIFE를 사용한 결과는 나름 괜찮은 수준입니다.


■ 앞으로의 발전을 기대합니다
    이미 Flowframes의 후원 버전 1.28.0에서는 CUDA 구현의 RIFE에 RIFE 3.8 버전 지원을 추가하여 상당한 속도 개선을 이루었다고 합니다. Flowframes 정책상 시간이 좀 더 지나면 무료 버전으로 풀리겠죠. 이처럼 보간 알고리듬과 무료 프로그램의 개선이 계속된다면, 다음 세대 그래픽카드가 나올 때쯤이면 하드웨어 성능 향상과의 시너지 효과를 통해 고품질 영상 보간을 무료로 즐길 수 있는 접근성도 훨씬 더 좋아질 것이라 기대해봅니다.


 


퀘이사존 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.​

모션보간 영상보간 영화보간 영상프레임뻥튀기 영화48프레임 영화96프레임 와이푸x2

댓글: 73

신고하기

신고대상


신고사유

투표 참여자 보기