HyperAI초신경

Super SloMo: 신경망을 사용하여 슈퍼 슬로우 모션 만들기

4년 전
대형 공장 뉴스
神经小兮
特色图像

영상이 멈추거나 매끄럽지 못한 문제를 해결하기 위해 영상 보간법이 등장했습니다. NVIDIA가 제안한 Super SloMo 방식은 많은 방식보다 훨씬 앞서 있습니다. 일반 장비로 녹화한 영상에 대해서도 "상상력 있게" 고프레임 속도의 슬로모션 영상을 제작할 수 있습니다. 이 마법의 도구를 사용하면 영상 제작의 한계가 더욱 낮아집니다.

요즘 사람들은 점점 더 높은 비디오 프레임 속도를 추구하고 있습니다. 높은 프레임 속도의 비디오는 더 부드럽고 사람들의 시청 경험을 크게 향상시킬 수 있기 때문입니다.
기존 카메라로 촬영한 영상의 프레임 속도도 25 FPS(초당 프레임)에서 60 FPS, 그리고 240 FPS 이상으로 꾸준히 향상되었습니다.

대부분 영화가 프레임 속도가 24인 시대에, 리안 감독의 '제미니 킬러'는 프레임 속도가 120으로 영화 기술의 혁신을 이루었습니다.

하지만 고프레임 레이트 카메라 장비는 메모리 요구 사항이 엄청나고 가격도 비싸기 때문에 아직 대중화되지는 않았습니다. 전문 장비 없이도 높은 프레임 속도의 비디오를 얻기 위해 비디오 보간 기술이 등장했습니다.

NVIDIA의 AI "두뇌 보충" 방식인 Super SloMo는 프레임 속도가 단지 Super SloMo를 사용하면 30프레임 영상을 60프레임, 240프레임 또는 그 이상으로 보완할 수도 있습니다.

기존 보간 방법의 장단점

Super SloMo를 더 잘 이해하기 위해 먼저 기존의 보다 전통적인 비디오 보간 기술을 살펴보겠습니다.

프레임 샘플링 

프레임 샘플링은 키 프레임을 보상 프레임으로 사용하는 것입니다. 이 기능의 핵심은 각 키 프레임의 표시 시간을 늘리는 것인데, 이는 프레임을 삽입하지 않는 것과 같습니다. 동일한 비디오 품질에서 더 높은 프레임 속도와 더 큰 파일 크기를 얻는다는 점을 제외하면 시각적 인식은 전혀 향상되지 않습니다.

이점:프레임 샘플링은 리소스를 덜 소모하고 빠릅니다.

결점:이로 인해 비디오가 그다지 매끄럽지 않게 보일 수 있습니다.

프레임 믹싱 

이름에서 알 수 있듯이 프레임 블렌딩은 이전 및 다음 주요 프레임의 투명도를 높인 다음 이를 새로운 프레임으로 블렌딩하여 틈을 채우는 작업입니다.

이점:얼마나 걸릴지 계산해 보세요.

결점:효과가 좋지 않습니다. 원래 키 프레임은 단순히 반투명하게 만들어졌기 때문에 움직이는 객체의 윤곽이 이전 프레임과 다음 프레임과 겹칠 때 눈에 띄게 흐릿한 장면이 생성되며, 이는 비디오의 시각적 효과의 부드러움을 약간만 향상시킬 뿐입니다.

동작 보상 

동작 보상(MEMC)의 원리는 두 프레임의 차이를 기반으로 수평 및 수직 방향으로 동작이 있는 블록을 찾고, 영상 블록의 동작 추세를 분석한 다음 중간 프레임을 계산하는 것입니다.

MEMC는 주로 TV, 모니터, 모바일 기기에 사용되어 비디오 프레임 속도를 개선하고 시청자에게 더욱 부드러운 시청 환경을 제공합니다.

이점:모션 지터를 줄이고, 이미지 잔상과 고스팅을 약화시키고, 이미지 선명도를 향상시킵니다.

결점:움직이는 물체의 배경이 복잡한 경우, 물체의 모서리가 움직이는 버그가 나타납니다.

광학 흐름 방식 

광학 흐름 방법은 컴퓨터 비전 연구의 중요한 방향이다. 위쪽과 아래쪽 프레임을 기반으로 픽셀의 이동 궤적을 추론하고 자동으로 새로운 빈 프레임을 생성합니다. 이는 모션 블러 계산 방법과 다소 유사합니다.

이점:화면이 더 매끄러워지고 지연감도 줄었습니다.

결점:계산량이 방대하고 시간이 많이 걸린다. 빛에 민감하여 빛이 크게 바뀌면 이미지 오류 현상이 나타나기 쉽습니다.

Super SloMo: 업계의 고전인 AI 보간 방법

2018년 컴퓨터 최고 컨퍼런스 CVPR에서 NVIDIA는 논문을 발표했습니다. "슈퍼 슬로모: 비디오 보간을 위한 여러 중간 프레임의 고품질 추정"해당 논문에서는 업계의 폭넓은 주목을 받은 Super SloMo가 제안되었습니다.

슈퍼 슬로우 모션: 비디오의 여러 중간 프레임 보간을 위한 고품질 추정

논문 주소: https://arxiv.org/pdf/1712.00080.pdf

슈퍼 슬로모는 전통적인 방법과 다릅니다. 프레임 보간을 구현하기 위해 딥 신경망을 사용합니다. 기본적인 아이디어는 다음과 같습니다.대량의 일반 영상과 슬로우 모션 영상을 학습에 활용한 후, 신경망이 일반 영상을 기반으로 추론하고 고품질의 슈퍼 슬로우 모션 영상을 생성하도록 학습시킨다..

Super SloMo 방식의 프레임워크 다이어그램에는 광학 흐름 계산 모듈(왼쪽)과 특정 시간 흐름 보간 모듈(오른쪽)이 포함됩니다.

Super SloMo 팀이 제안한 방법은,전체 프레임워크는 두 개의 완전한 합성 신경망 U-Net에 의존합니다.

먼저, U-Net을 사용하여 인접한 입력 이미지 간의 양방향 광학 흐름을 계산합니다. 이러한 광학 흐름은 각 시간 단계에서 선형적으로 맞춰져 중간 프레임의 양방향 광학 흐름을 근사화합니다.

동작 경계 아티팩트 문제를 해결하기 위해 또 다른 U-Net을 사용하여 대략적인 광학 흐름을 개선하고 유연한 가시성 맵을 예측합니다. 마지막으로, 두 개의 입력 이미지를 휘어지게 하고 선형적으로 융합하여 중간 프레임을 형성합니다.

또한, Super SloMo의 광학 흐름 계산 네트워크와 보간 네트워크의 매개변수는 보간된 프레임의 특정 시간 단계에 따라 달라지지 않습니다(시간 단계는 네트워크의 입력으로 사용됩니다). 따라서 두 프레임 사이의 모든 시간 단계에서 프레임을 병렬로 보간할 수 있어 많은 단일 프레임 보간 방법의 한계를 극복할 수 있습니다.

원본 SloMo 비디오(위) 프레임 추가 후의 Super SloMo 비디오(아래)

저자는 최적화되지 않은 PyTorch 코드를 사용하여 1280*720 해상도의 중간 프레임 7개를 생성하는 데 단일 NVIDIA GTX 1080Ti와 Tesla V100 GPU에서 각각 0.97초와 0.79초만 걸렸다고 말합니다.

네트워크를 훈련하려면,저자는 YouTube와 핸드헬드 카메라에서 240fps 비디오 여러 개를 수집했습니다. 총 1,100개의 비디오 세그먼트가 수집되었으며, 이는 1080×720 해상도의 300,000개 독립 비디오 프레임으로 구성되었습니다.이러한 영상은 실내에서 실외까지, 정지 카메라에서 동적 카메라까지, 일상 활동에서 프로 스포츠까지 다양한 장면을 담고 있습니다.

그런 다음 이 모델을 다른 데이터 세트에서 검증한 결과, 이 연구가 이러한 데이터 세트에서 기존 방법의 성능을 크게 향상시켰음이 밝혀졌습니다.

튜토리얼을 따라 한 번의 클릭으로 Super SloMo를 달성하세요

이 NVIDIA 논문의 저자는 아직 데이터 세트와 코드를 공개하지 않았지만 대중 중에 전문가가 있습니다. GitHub의 avinashpaliwal이라는 사용자는 Super SloMo의 PyTorch 구현을 오픈 소스로 공개했으며, 그 결과는 논문에서 설명한 것과 거의 같습니다.

프로젝트 세부 사항은 다음과 같습니다.

슈퍼 슬로모션 슈퍼 슬로우 모션 렌즈 보간

모델 학습과 테스트는 PyTorch 0.4.1과 CUDA 9.2에서 수행되므로 이 두 소프트웨어를 설치하는 것이 필수입니다. 또한 NVIDIA 그래픽 카드도 필요합니다.

또한, 비디오를 사용하여 모델을 직접 학습시킬 수 없으므로 비디오에서 프레임을 추출하려면 ffmpeg를 설치해야 합니다. 이러한 모든 준비가 완료되면 학습을 위해 Adobe 240fps 데이터 세트를 다운로드할 수 있습니다.

하지만 이런 것들을 직접 준비할 필요는 없습니다. 조용히 "질문"만 하면 클릭 한 번으로 슈퍼 슬로모션을 구현할 수 있습니다.

우리는 국내 머신러닝 컴퓨팅 파워 컨테이너 서비스 플랫폼(https://openbayes.com)에서 해당 튜토리얼을 찾았습니다. 데이터 세트부터 코드, 컴퓨팅 성능까지 모든 것을 사용할 수 있으므로 초보자도 쉽게 시작할 수 있습니다.

튜토리얼 링크:
https://openbayes.com/console/openbayes/containers/xQIPlDQ0GyD/overview

튜토리얼 사용자 가이드 

먼저 https://openbayes.com/의 "공공 리소스" 메뉴에서 등록하고 로그인하세요. 「공개 튜토리얼」, 이 튜토리얼을 선택하세요——"PyTorch를 이용한 슈퍼 슬로모션 슈퍼 슬로우 모션 카메라 구현"

튜토리얼의 샘플 디스플레이 파일은 Super-SloMo.ipynb입니다. 이 파일을 실행하면 환경이 설치되고 최종 보간된 프레임의 매우 느린 모션 효과가 표시됩니다.
또한, 귀하 자신의 비디오 자료를 사용하고 아래 생성된 코드에서 lightning-dick-clip.mp4를 귀하의 비디오 파일 이름으로 변경할 수도 있습니다.
"스케일" 속성은 생성된 비디오의 속도를 제어하는 데 사용됩니다. 예를 들어, 4로 설정하면 4배 느린 모션이 됩니다.

코드 생성:

!python3 'Super-SloMo/eval.py' \    'lightning-dick-clip.mp4' \    --checkpoint='/openbayes/input/input0/SuperSloMo.ckpt' \    --output='output-tmp.mp4' \    --scale=4print('Done')

비디오 형식 코드 변환:

!ffmpeg -i output-tmp.mp4 -vcodec libx264 -acodec aac output.mp4

이 튜토리얼에서는 인터넷의 비디오 클립을 사용하여 Super SloMo 보간을 수행하였고 다음과 같은 결과를 얻었습니다.

그림무술 동작의 모든 단계를 선명하게 볼 수 있는 4배 슬로우 모션

현재 이 플랫폼은 매주 무료 vGPU 사용 시간을 제공하고 있습니다. 누구나 쉽게 완료할 수 있으니, 지금 당장 시도해 보세요!

내 손으로 놀라운 슈퍼 슬로우 모션을 만들어 보세요


참고문헌:

논문: https://arxiv.org/pdf/1712.00080.pdf

프로젝트 홈페이지: http://jianghz.me/projects/superslomo/

https://zhuanlan.zhihu.com/p/86426432