이미지·영상 생성

RTX 5090으로 오래된 영상을 복원하기: SwiftVR 로컬 시작 가이드

SwiftVR은 새 영상을 만드는 모델이 아니라 저화질 영상을 복원하는 모델입니다.

예전에 촬영해 둔 480p 영상을 큰 화면에서 다시 보려 한다면, SwiftVR은 4배 확대와 영상 복원을 시도할 수 있는 로컬 모델입니다. RTX 5090에서 BF161·인과적 청크 방식으로 1080p 약 26 FPS2라는 제작자 결과가 공개됐지만, 이것은 모든 원본 파일의 완료 시간을 보장하지 않습니다. 설치부터 짧은 구간 복원, 저장 파일 확인, 전체 처리시간 기록까지 따라가며 내 영상에 필요한 설정을 판단합니다.

실행 조건과 핵심 내용
  • SwiftVR은 Wan2.2-TI2V-5B 기반의 영상 복원 모델이며, 텍스트로 새 장면을 생성하는 사용법과 다릅니다.
  • 제작자는 RTX 5090에서 BF16, 기본 PyTorch SDPA, 인과적 청크 방식으로 1080p 약 26 FPS를 보고했습니다.
  • 처음에는 짧은 입력에서 복원된 프레임과 MP4 저장을 확인한 뒤, 같은 설정으로 전체 파일의 벽시계 시간을 잽니다.

먼저 복원할 영상과 성공 기준을 정합니다

예를 들어 오래된 480p 여행 영상을 큰 화면에서 다시 보고 싶다고 해보겠습니다. SwiftVR의 예제는 `upscale=4`로 출력 크기를 네 배 확대합니다. 따라서 원본 비율과 픽셀 크기를 먼저 확인해 결과가 실제로 필요한 화면·편집 규격에 맞는지 살펴야 합니다. 목표는 장면을 새로 그리는 일이 아니라 원본에 이미 있던 윤곽과 질감을 복원하는 것입니다. 인물 얼굴의 모양이 유지되는지, 잔디와 건물 경계가 덜 뭉개지는지, 움직이는 장면에서 프레임3 사이가 갑자기 흔들리지 않는지를 미리 적어 둡니다. 그래야 선명해 보인다는 인상 하나로 영상 전체가 좋아졌다고 판단하지 않습니다.

SwiftVR의 모델 카드 제목은 ‘Real-Time One-Step Generative Video Restoration’입니다. 모델은 2026년 6월 공개됐고 Wan2.2-TI2V-5B를 기반으로 합니다. 여기서 ‘생성’이라는 이름이 들어가도 이 글의 사용 흐름은 프롬프트로 새 동영상을 만드는 것이 아니라 저화질 입력을 복원하는 것입니다. 이미 있는 영상이 없거나 장면 내용을 바꾸고 싶다면 다른 생성 모델을 찾아야 합니다.

원본의 프레임률, 해상도, 길이도 기록해 둡니다. 복원 전후를 비교할 때 재생 창이 자동으로 크기를 바꾸거나 플레이어가 프레임을 건너뛰면 눈으로 본 차이가 모델 결과와 섞일 수 있습니다. 같은 구간을 같은 크기로 놓고 멈춘 프레임 몇 장과 움직임을 함께 확인하면 윤곽 보존과 시간적 안정성을 따로 살펴볼 수 있습니다.

도로 장면이 보이는 모니터와 옆에 놓인 데스크톱 PC
복원한 프레임을 볼 때는 더 선명해 보이는지와 함께 원래 도로 장면의 윤곽이 유지되는지도 확인합니다.

RTX 5090의 공개 수치는 어떤 조건에 해당하나요

SwiftVR 제작자는 RTX 5090 한 장에서 1080p 약 26 FPS를 보고했습니다. 조건은 BF16, 기본 PyTorch4 SDPA 경로, 인과적 청크 프로토콜이며 하드웨어별 재학습이나 커널 교체가 필요 없다고 모델 카드에 적었습니다. 이 숫자는 프레임 처리율이지 ‘30초짜리 영상은 정확히 몇 초면 끝난다’는 보장이 아닙니다. 입력 읽기, 영상 디코딩, 청크 버퍼링, 출력 인코딩과 저장이 전체 작업에 더해지기 때문입니다.

모델 카드의 다른 표는 단일 H100에서 2560×1440, 인과적 스트리밍, 24프레임 조건으로 평균 0.766초와 31.32 FPS, 피크 메모리 38.01GB를 기록합니다. 이 값은 5090 결과가 아닙니다. 같은 카드에는 H100에서 4K 약 14 FPS라고도 별도로 적혀 있습니다. 해상도와 GPU5가 모두 다르므로 QHD 또는 4K 작업이 RTX 5090에서도 같은 속도라고 계산할 수 없습니다.

LightX2V는 SwiftVR을 별도 실행기로 지원하며, 저장소는 단일 H100에서 요청당 1.91배 속도 향상과 피크 GPU 메모리 65.71% 감소를 보고합니다. 그 측정의 비교 기준도 H100입니다. RTX 5090 수치에 이 배수를 곱하면 실제 측정하지 않은 결과가 만들어집니다. 우선 공식 SwiftVR 실행 경로를 기준선으로 성공시키고, LightX2V로 옮겼을 때는 같은 RTX 5090·같은 입력·같은 출력 해상도를 따로 측정해야 합니다.

서로 다른 장비·해상도의 공개 조건은 직접 등급표처럼 비교할 수 없습니다.
공개 결과GPU와 설정읽는 범위
약 26 FPS, 1080pRTX 5090, BF16, 기본 SDPA, 인과 청크모델 카드의 소비자 GPU 보고치
31.32 FPS, QHD 24프레임단일 H100, 인과 스트리밍별도 H100 벤치마크
약 14 FPS, 4K단일 H1004K에 대한 H100 보고치
1.91배, 메모리 65.71% 감소LightX2V의 단일 H100 측정5090 성능 추정에 적용하지 않음

서로 다른 장비·해상도의 공개 조건은 직접 등급표처럼 비교할 수 없습니다.

약 26 FPS, 1080p

GPU와 설정
RTX 5090, BF16, 기본 SDPA, 인과 청크
읽는 범위
모델 카드의 소비자 GPU 보고치

31.32 FPS, QHD 24프레임

GPU와 설정
단일 H100, 인과 스트리밍
읽는 범위
별도 H100 벤치마크

약 14 FPS, 4K

GPU와 설정
단일 H100
읽는 범위
4K에 대한 H100 보고치

1.91배, 메모리 65.71% 감소

GPU와 설정
LightX2V의 단일 H100 측정
읽는 범위
5090 성능 추정에 적용하지 않음
자전거를 탄 사람이 지나가는 장면을 연속 필름 프레임으로 보여 주는 이미지
정지 화면 한 장뿐 아니라 움직임이 이어지는 여러 프레임에서 복원 결과를 살펴봅니다.

공식 경로로 설치하고 짧은 입력부터 끝까지 저장합니다

공식 SwiftVR 예제에는 PyTorch 2.10.0·torchvision 0.25.0의 CUDA6 12.4 휠 명령이 있지만, 그 조합을 RTX 5090에 그대로 권하지 않습니다. Blackwell(sm_120) 지원을 맞추려면 공식 PyTorch CUDA 12.8 휠 저장소에서 같은 버전 쌍을 설치하고, 사용 중인 NVIDIA 드라이버가 이를 지원하는지 확인하세요. CUDA 휠은 사용자 공간 런타임7을 포함하므로 로컬 CUDA Toolkit 설치와는 별개입니다. 모델 가중치와 추론 코드는 Apache-2.0으로 공개되어 있습니다.

별도 환경에서 코드를 설치한 뒤 가중치를 `H-oliday/SwiftVR` 모델 ID로 내려받습니다. 체크포인트8 폴더에는 ReAE 가중치, 빈 프롬프트 임베딩, Diffusers 형식의 transformer9 파일이 필요합니다. CUDA 12.8 휠이 실제 설치됐는지는 아래 점검에서 `torch.version.cuda`가 12.8이고 RTX 5090 capability가 (12, 0)인지 확인합니다. `no kernel image is available` 또는 `sm_120 is not compatible`가 나오면 우선 실행 중인 Python이 다른 가상환경10의 torch를 가져오는지, 설치 휠이 Blackwell 아키텍처를 포함하는지 확인하세요. 모델 적재 중 파일을 찾지 못한다면 `--checkpoint` 폴더 바로 아래의 세 체크포인트 항목이 있는지 확인합니다.

RTX 5090용 CUDA 12.8 휠과 설치 확인
git clone https://github.com/H-oliday/SwiftVR.git
cd SwiftVR
conda create -n swiftvr python=3.10 -y
conda activate swiftvr
python -m pip install torch==2.10.0 torchvision==0.25.0 --index-url https://download.pytorch.org/whl/cu128
python -m pip install -e .
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available()); print(torch.cuda.get_device_name(0), torch.cuda.get_device_capability(0)) if torch.cuda.is_available() else None"
huggingface-cli download H-oliday/SwiftVR --local-dir checkpoints/
짧은 영상 복원
python scripts/inference.py \
  --input sample_short.mp4 \
  --output restored_short.mp4 \
  --checkpoint checkpoints/ \
  --upscale 4 \
  --clip-len 24 \
  --dtype bfloat16

복원 프레임과 완료 파일을 각각 확인합니다

짧은 시험 영상이 끝나면 원본과 결과를 같은 플레이어 크기로 열어 앞서 적은 기준을 확인합니다. 인물 윤곽이 원본과 달라지거나 배경의 작은 무늬가 새로 생긴 것처럼 보이면, 더 선명하다는 이유만으로 통과시키지 않습니다. 중요한 영상이라면 원본 프레임, 복원 프레임을 같은 시점에서 나란히 놓고 얼굴·문자·직선처럼 식별하기 쉬운 부분을 비교합니다. 생성형 복원은 세부를 그럴듯하게 보정할 수 있어 원본에 없던 질감이 실제 정보로 복구됐다고 단정해서는 안 됩니다.

`clip_len`은 시간 방향으로 묶어 처리할 프레임 수이며 저장소 예시는 24를 사용합니다. 길이를 바꾸면 메모리와 청크 경계 동작도 달라질 수 있으니 처음부터 여러 옵션을 동시에 바꾸지 않습니다. 먼저 기본 설정에서 영상 파일이 완성되는지 보고, 그 다음 청크 길이 하나만 바꿔 실행합니다. 결과가 `None`처럼 비어 있거나 마지막 부분만 누락된다면 처리 도중 오류가 있었는지, 입력을 끝까지 읽고 마지막 버퍼를 비우는 단계가 수행됐는지 로그와 파일 길이를 살핍니다.

FPS와 파일 완료 시간은 다른 질문에 답합니다. FPS는 처리 중 프레임이 얼마나 빠르게 계산되는지를 보여 주지만, 시작 로딩과 인코딩까지 포함한 총 시간은 말해 주지 않습니다. 30초 입력 파일을 재생하는 데 30초가 든다는 의미도 아닙니다. 원본 파일 길이와 함께 실행 시작·종료 시각, GPU, 출력 해상도, `clip_len`, 정밀도, FPS를 적으면 다음 번에 같은 작업을 재현할 수 있습니다.

해안 풍경 영상의 화질을 좌우로 나누어 보여 주는 비교 이미지
같은 해안 장면의 가장자리와 잔질감을 비교하면 선명도 변화와 새로 생긴 질감을 구분하는 데 도움이 됩니다.

언제 5090 수치를 내 영상의 기준으로 삼을 수 있나요

RTX 5090을 쓰고 1080p 복원을 하려는 경우라면 제작자의 약 26 FPS는 실행 가능성을 가늠할 출발점입니다. 다만 내 파일에서 같은 성능을 얻었다는 뜻은 아니므로, 짧은 구간이 성공한 뒤 전체 파일을 한 번 처리해 완료 시간을 재야 합니다. 프레임률이 같아도 길이, 입력 코덱11, 저장 위치와 실행기의 전처리 방식에 따라 대기 시간은 달라질 수 있습니다.

5090이 아닌 GPU라면 H100 표의 31 FPS나 4K 수치를 그대로 대입하지 마세요. 특히 영상 복원은 출력 해상도가 커질수록 프레임마다 처리할 픽셀이 늘어납니다. 먼저 목표 크기를 정하고, 그 크기로 실제 완료한 사례나 본인 장비의 시험 결과를 기준으로 판단합니다. 모델이 실행은 되지만 시간이 너무 길다면, 구매 전에 짧은 구간으로 처리율과 전체 작업시간을 분리해 보고 해상도나 청크 설정을 낮춰도 목적에 맞는지 확인할 수 있습니다.

반대로 새 장면, 인물 동작, 카메라 이동을 만들어야 한다면 SwiftVR이 해결할 일이 아닙니다. 이 가이드의 결론은 ‘RTX 5090이면 영상 AI가 다 된다’가 아니라, 복원이라는 특정 작업에서 제작자가 1080p 수치를 공개했고 그 조건을 내 파일로 확인할 수 있다는 것입니다. 짧은 테스트에서 세부 보존이 만족스럽고 전체 파일 처리시간도 작업 일정에 맞을 때만 기존 영상을 일괄 복원하는 편이 안전합니다.

실행·모델 원문 자료

설치와 모델 사용 조건은 다음 원문에서 확인할 수 있습니다.

용어 각주

  1. BF16 — 모델의 수를 저장하고 계산하는 16비트 부동소수점 형식입니다. 사용 가능 여부는 하드웨어와 실행 프로그램에 달려 있습니다.

    본문으로 돌아가기
  2. FPS — 초당 프레임 수입니다. 영상의 시간 해상도를 나타내며, 생성 속도나 화질 자체와 같은 뜻은 아닙니다.

    본문으로 돌아가기
  3. 프레임 — 영상의 한 장면을 이루는 단일 이미지입니다. 초당 프레임 수와 프레임 해상도는 서로 다른 속성입니다.

    본문으로 돌아가기
  4. PyTorch — AI 모델을 만들고 실행하는 소프트웨어 프레임워크입니다. 모델과 함께 호환되는 PyTorch 버전 및 하드웨어 지원도 확인해야 합니다.

    본문으로 돌아가기
  5. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  6. CUDA — NVIDIA GPU에서 범용 계산을 실행하기 위한 소프트웨어 플랫폼입니다. CUDA용으로 만든 프로그램은 다른 GPU에서 그대로 동작한다고 보장되지 않습니다.

    본문으로 돌아가기
  7. 런타임 — 프로그램이 실행될 때 필요한 기능을 제공하는 소프트웨어 환경입니다. 로컬 AI에서는 모델을 실행하는 엔진을 가리키기도 하며, GPU 런타임 라이브러리와 완성된 서빙 앱은 서로 다른 구성요소입니다.

    본문으로 돌아가기
  8. 체크포인트 — 학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.

    본문으로 돌아가기
  9. 트랜스포머 — Attention을 중심으로 입력 안의 관계를 계산하는 신경망 구조입니다. 언어 모델을 비롯해 이미지, 음성, 영상 모델에도 사용됩니다.

    본문으로 돌아가기
  10. Python 가상환경 — 프로젝트별로 Python 패키지를 분리해 설치하는 공간입니다. 패키지 버전 충돌을 줄이며 가상 머신과는 다릅니다.

    본문으로 돌아가기
  11. 오디오 코덱 — 디지털 오디오를 압축하거나 표현하고 다시 해석하는 방식 또는 소프트웨어입니다. 코덱에 따라 크기, 호환성, 손실 여부가 달라집니다.

    본문으로 돌아가기