RIFE 모델을 이용한 Video Frame Interpolation

KIMHYUNSU·2024년 12월 1일
post-thumbnail

Real-Time Intermediate Flow Estimation for Video Frame Interpolation

https://arxiv.org/abs/2011.06294
위 논문을 읽은 후, 아래 깃허브의 모델을 이용하는 실습을 진행해보았다

https://github.com/hzwer/ECCV2022-RIFE


코랩에서 진행했다.

1. RIFE 모델 클론

!git clone https://github.com/hzwer/arXiv2020-RIFE

!mkdir /content/arXiv2020-RIFE/train_log
%cd /content/arXiv2020-RIFE/train_log
!gdown --id 1APIzVeI-4ZZCEuIRE1m6WYfSCaOsi_7_
!7z e RIFE_trained_model_v3.6.zip

먼저 깃 클론을 진행
모델 체크포인트를 저장할 train_log 디렉터리를 생성
gdown 명령어를 통해 Google Drive에서 훈련된 RIFE v3.6 모델 파일을 다운로드
압축해제


추가 파일 다운로드

%cd /content/arXiv2020-RIFE/
!gdown --id 1i3xlKb7ax7Y70khcTcuePi6E7crO_dFc
!pip3 install -r requirements.txt

requirements 에 작성된 패키지 설치


비디오 중간 프레임 생성

!python3 inference_video.py --exp=2 --video=/content/arXiv2020-RIFE/demo.mp4 --montage

RIFE 모델을 사용해 비디오 중간 프레임을 생성하는 스크립트를 실행
--exp=2: 프레임 간에 생성할 중간 프레임의 수 설정
exp=1로 지정하면 60fps변환, exp=2로지정하면 약 100fps
--video=demo.mp4: 입력 비디오 파일 이름.
예시로 demo.mp4 사용함
--montage: 출력 비디오에서 원본 프레임과 생성된 프레임을 나란히 비교하여 볼 수 있도록 출력합니다.


근데 inference_video.py 에서 model.pytorch_msssim 에서 ssim_matlab를 제대로 불러오지 못하는 문제가 있어서

  • sys.path.append(os.path.abspath('./model/pytorch_msssim'))
  • sys.path.insert(0, os.path.abspath('./model/pytorch_msssim'))
    이런식으로 적절하게 경로를 직접 명시하는 식으로 코드를 추가해줬다.

결과 확인

import cv2

# 비디오 파일 열기

video_path = "/content/arXiv2020-RIFE/demo.mp4"  # 분석할 비디오 파일 경로
cap = cv2.VideoCapture(video_path)

frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  # 총 프레임 수
fps = cap.get(cv2.CAP_PROP_FPS)  # 초당 프레임 수

print(f"총 프레임 수: {frame_count}")
print(f"FPS: {fps}")

변환 전 총 Frame 갯수: 1342
변환 전 Fps는 25.0

변환 후 총 Frame 갯수: 5365
변환 후 Fps는 100.0

프레임 수가 늘어난 것을 확인할 수 있다.

--montage 설정으로 두 영상을 비교한 것을 볼 수 있다.


⬇️ 참고했습니다
https://discuss.pytorch.kr/t/interpany-clearer-vfi-video-frame-interpolation/2880

0개의 댓글