JoyAI-Video-Edit: 자연어 지시로 실시간 영상 스트림을 편집하는 자기회귀 디퓨전 모델

JoyAI-Video-Edit 소개

영상 편집 모델은 대부분 영상 전체를 미리 받아 두고 시작합니다. 길이가 정해져 있어야 하고, 뒤쪽 프레임을 참고해 앞쪽을 다듬는 방식이 흔하며, 그래서 결과를 보려면 처리가 다 끝날 때까지 기다려야 합니다. 라이브 카메라 화면처럼 프레임이 계속 도착하고 끝이 정해지지 않은 입력에는 이 전제가 통하지 않습니다. 편집을 걸어 놓고 결과를 나중에 확인하는 것과, 지금 카메라에 잡히는 장면이 지시대로 바뀌는 것을 보는 것은 다른 종류의 작업입니다.

JD가 공개한 JoyAI-Video-Edit는 이 간극을 좁히려는 실시간 영상 편집 시스템입니다. 라이브 스트림이든 업로드한 영상이든, 자연어로 된 편집 지시를 함께 주면 프레임이 도착하는 대로 인과적으로 편집합니다. 영상 전체를 기다리지 않고, 길이를 미리 정할 필요도 없으며, 미래 프레임을 다시 들여다보지도 않습니다. 저자들이 공개한 배포 벤치마크에서 전체 파이프라인은 720 \times 1280 해상도에서 초당 30.19 프레임을 처리했습니다.

시스템은 MLLM 기반 조건 인코더, 인과적 비디오 VAE, 그리고 160억 파라미터 규모의 멀티모달 디퓨전 트랜스포머(MM-DiT)로 구성됩니다. 여기에 청크 단위 자기회귀 적응, 소스 고정 분포 매칭 증류(SA-DMD), 장기 구간 자기회귀 증류(LHAD)라는 세 가지 학습 기법을 얹어 학습과 추론 사이의 불일치, 두 단계 생성에서의 원본 충실도 손실, 시간이 갈수록 쌓이는 시각적 어긋남을 각각 다룹니다. 배포 단계에서는 경계가 정해진 KV 캐시와 FP8 양자화, 최적화된 VAE 경로로 720p 처리량을 확보했습니다. 코드와 기술 보고서, 체크포인트, 온라인 데모는 2026년 8월 5일에, 실시간 편집 라이브 데모는 8월 6일에 공개됐습니다.

JoyAI-Video-Edit가 기존 영상 편집 모델과 다른 점

저자들이 공개한 대표 그림 한 장에 이 프로젝트의 위치가 정리되어 있습니다. 왼쪽은 실시간 편집이 어떤 것인지 보여주고, 오른쪽은 OpenVE-Bench에서 다른 편집 모델들과 비교한 결과입니다.

산점도의 가로축은 DiT 처리량, 세로축은 종합 편집 품질입니다. 그림을 보면 두 무리가 서로 반대편 구석에 몰려 있습니다. Bernini-R(27B), Kling-3.0 Omni, VInO(8B) 같은 오프라인 방식은 품질 축에서 위쪽에 있지만 처리량은 0에 가깝게 붙어 있습니다. 반대로 SANA-Streaming(2B)이나 StreamDiffusionV2(1.3B) 같은 스트리밍 방식은 처리량이 높지만 품질 축에서 아래쪽에 있습니다. JoyAI-Video-Edit(16B)는 처리량 37.21 FPS 지점에 품질 3.60 으로 찍혀, 스트리밍 무리 중에서는 품질이 가장 높은 자리에 놓입니다.

같은 그림 아래쪽의 사람 평가 결과는 격차가 더 큽니다. JoyAI-Video-Edit를 1.00 으로 둔 상대 척도에서 Xmax-X2.0이 0.14, SANA-Streaming이 0.09, StreamDiffusionV2가 0.08, LiveEdit이 0.06 으로 표시되어 있습니다. 논문의 초록은 이를 "substantially outperforms existing streaming editors and remains competitive with strong offline systems" 라고 요약합니다. 논문 본문에는 이와 별개로 쌍대 비교 방식의 사람 선호도 조사가 실려 있는데, 오프라인 시스템과의 비교에서는 결과가 갈립니다. 자세한 수치는 아래 실험 결과 절에서 다룹니다.

정리하면 이 프로젝트가 주장하는 차별점은 "가장 좋은 편집 품질"이 아니라 실시간이라는 제약 안에서 쓸 만한 품질 입니다. 오프라인 시스템 수준의 품질을 원한다면 여전히 오프라인 시스템이 유리하고, 지금 이 순간 화면이 바뀌어야 하는 용도라면 선택지가 크게 좁아지는데 그 좁은 자리를 노린 모델입니다.

JoyAI-Video-Edit는 누구에게 유용한가

지금 시점에서 개인 작업 환경에 놓기는 어렵습니다. 논문이 밝힌 30 FPS 수치는 NVIDIA B200 한 장 위에서 측정한 것이고, 저장소의 할 일 목록에도 GeForce RTX 5090 같은 소비자용 GPU 최적화가 아직 예정 항목으로 올라와 있습니다. 학습 프레임워크와 데이터 생성 파이프라인도 아직 공개 전이라, 이 모델을 자신의 데이터로 다시 학습시키려는 목적에는 지금 맞지 않습니다.

반면 라이브 방송이나 화상 통화처럼 지연이 곧 품질인 영상 파이프라인을 설계하는 팀, 스트리밍 편집의 현재 도달점을 실측으로 확인하려는 연구자, 그리고 자기회귀 디퓨전에서 누적 드리프트를 어떻게 억제하는지 구현 수준에서 보고 싶은 사람에게는 지금 상태로도 참고할 만합니다. 배포 코드와 체크포인트가 공개되어 있어 논문의 수치를 직접 확인해 볼 수 있고, 웹 데모로는 GPU 없이도 동작을 먼저 볼 수 있습니다.

실시간 스트리밍 편집이 어려운 이유

지시 기반 영상 편집은 후반 작업용 도구에서 상시 가용한 시각 기능으로 옮겨 가는 중입니다. 디퓨전 기반 편집기들은 객체 조작, 외형 변경, 배경 교체, 스타일화까지 다양한 변형을 지원하게 됐고, 압축된 잠재 표현과 선택적 토큰 처리 덕분에 고해상도 영상 합성 비용도 내려갔습니다. 그 결과 라이브 방송, 영상 통화, 인터랙티브 엔터테인먼트처럼 소스 영상이 도착하는 동안 편집된 프레임이 나와야 하는 응용이 시야에 들어왔습니다. 문제는 이 조건이 기존 편집기가 전제하지 않던 네 가지를 한꺼번에 요구한다는 점입니다. 출력이 인과적이어야 하고, 응답 지연이 낮아야 하며, 연산과 메모리에 상한이 있어야 하고, 길이를 알 수 없는 입력에 대해 편집 품질이 안정적이어야 합니다.

첫 번째 기존 접근은 오프라인 편집기입니다. 클립 전체를 양방향 또는 전역 시간 상호작용으로 처리하고, 반복적인 디노이징이 끝난 뒤에야 결과를 내놓습니다. 전체 시간 문맥은 짧은 클립의 일관성에는 도움이 되지만 미래 프레임에 의존하므로 인과적 출력 자체가 불가능합니다. 게다가 시간 토큰과 어텐션 상태, 활성화 메모리가 입력 길이에 따라 함께 늘어나고, 양방향 계산은 캐시된 상태를 재사용할 여지를 좁힙니다.

두 번째 접근은 오프라인 편집기를 연속된 클립에 각각 적용하는 것입니다. 손쉬운 우회로처럼 보이지만 겹치는 문맥을 반복해서 처리하게 되고, 클립 경계에서 눈에 띄는 불연속이 생깁니다. 스트리밍 편집기라면 경계가 정해진 시간 상태를 재사용하면서, 스트림이 길어져도 증분 비용이 거의 일정하게 유지되어야 합니다.

세 번째 접근은 오프라인 편집기를 그대로 인과화하는 것인데, 이것만으로는 문제가 풀리지 않습니다. 자기회귀 모델은 학습할 때 깨끗한 정답 히스토리를 조건으로 받지만 추론할 때는 자기 자신의 불완전한 예측을 소비합니다. 이 학습과 추론의 불일치 때문에 복원 오차, 색 편차, 외형 변화가 생성된 히스토리를 타고 전파되면서 장기 드리프트로 누적됩니다.

영상 편집은 여기에 고유한 난점을 하나 더 얹습니다. 시간적 일관성만 지키면 되는 생성과 달리, 편집은 모든 출력 청크가 현재 소스 청크와 정렬 되어 있어야 하고, 편집 대상이 아닌 정체성과 기하 구조, 움직임, 배경을 그대로 보존해야 하며, 요청된 변형은 일관되게 적용되어야 합니다. 생성된 히스토리는 연속성을 만들어 주지만 오차를 함께 실어 나르고, 소스 조건은 충실도를 지켜 주지만 균형을 잘못 잡으면 편집 일관성을 약화시킵니다. 실시간 처리량을 위해 생성 단계를 줄이는 것 또한, 반복적이고 CFG로 유도되는 학습 타깃과 배포 시의 단일 분기 모델 사이에 또 하나의 간극을 만듭니다.

JoyAI-Video-Edit의 발상은 이 세 문제를 각각 별도의 기법으로 나눠 푸는 대신 하나의 학습 프레임워크 안에서 이어 붙인 데 있습니다. 인과 적응으로 히스토리 분포를 맞추고, 소스에 고정된 증류로 원본 충실도를 몇 단계 안에 밀어 넣고, 긴 구간 최적화로 후반부에만 나타나는 누적 오차를 직접 감독합니다.

JoyAI-Video-Edit의 구조와 학습 방법

세 부품으로 이루어진 아키텍처

모델은 멀티모달 대형 언어 모델(MLLM), 인과적 비디오 VAE, 멀티모달 디퓨전 트랜스포머(MM-DiT)의 세 부품으로 이루어집니다. 입력 조건에 따라 지시 기반 영상 대 영상 편집(V2V)과 참조 이미지를 함께 주는 이미지 및 영상 대 영상 편집(IV2V)을 모두 지원합니다.

MLLM 은 소스 영상의 첫 프레임과 그에 대응하는 편집 지시를 함께 받아 조건 토큰을 뽑습니다. 첫 프레임이 소스 영상의 외형과 의미 맥락을 제공하고 지시문이 의도한 변형을 지정하므로, 결과로 나오는 조건 토큰은 소스를 인지한 시각 정보와 편집 의도를 동시에 담습니다. 이 토큰은 디노이징 전 과정에서 MM-DiT에 의미 수준의 안내를 계속 공급합니다.

인과적 VAE 는 소스 영상을 잠재 시퀀스로 인코딩하고 선택적 참조 이미지도 같은 잠재 공간으로 사상합니다. 시공간 압축비는 8 \times 24 \times 24 로, 시간 방향 압축 계수가 8 이고 공간 방향이 24 \times 24 입니다. 따라서 잠재 프레임 하나가 비디오 프레임 8장을 나타내며, 이 값이 뒤에서 설명할 청크 크기와 배포 파이프라인의 단위를 그대로 결정합니다.

MM-DiT 는 조건 스트림과 비전 스트림을 나란히 두는 이중 스트림 구조입니다. 각 블록에서 두 스트림은 Norm, Scale & Shift, Linear & Norm, M-RoPE 적용을 거쳐 AR 마스크가 적용된 셀프 어텐션에서 만나고, 게이트를 통과해 잔차로 더해집니다. 위치 인코딩은 3D 시공간 RoPE와 1D 소스 RoPE를 융합해 회전 각도를 구성하는 방식이라, 소스 토큰과 생성 토큰이 같은 시퀀스 안에서 서로 다른 역할로 구분됩니다.

그림 오른쪽의 어텐션 마스크가 이 모델의 설계를 압축해서 보여 줍니다. 시퀀스에 들어가는 토큰 그룹은 노이즈 토큰 N_t, 전역 토큰 H_0, 히스토리 토큰 H_{t-1}, MLLM 조건 토큰 C_t, 참조 VAE 토큰 R, 소스 영상 VAE 토큰 S_t 입니다. 어느 그룹이 어느 그룹을 볼 수 있는지가 이 마스크 하나에 규정되어 있고, 뒤에 나오는 청크 단위 적응은 결국 이 마스크를 어떻게 그리느냐의 문제입니다.

양방향 편집기를 먼저 만드는 4단계 커리큘럼

인과 모델을 처음부터 학습시키는 대신, 저자들은 품질이 확보된 양방향 편집기를 먼저 만들고 그것을 인과 모델로 변환하는 순서를 택했습니다. 기반 학습은 네 구간으로 나뉩니다.

구간 방식 과제 해상도 fps 샘플 수
1. 텍스트 대 이미지 사전학습 Pretrain T2I 256×256 - 43억
1. 텍스트 대 이미지 사전학습 Pretrain T2I 512×512 - 7.93억
2. 텍스트 대 영상 학습 Pretrain T2V/T2I 256p 12/24 3.70억
2. 텍스트 대 영상 학습 Pretrain T2V/T2I 360p 24 1.08억
2. 텍스트 대 영상 학습 SFT T2V/T2I 480p 24 3,000만
2. 텍스트 대 영상 학습 CT T2V/T2I 480p 24 650만
3. 이미지 편집 학습 SFT I2I/T2V/T2I 720p - 320만
4. 양방향 영상 편집 학습 SFT V2V/IV2V/I2I/T2V/T2I 720p 24 530만
4. 양방향 영상 편집 학습 CT V2V/IV2V/I2I/T2V/T2I 720p 24 110만

위 표를 통해 세 가지를 읽을 수 있습니다. 첫째, 학습량이 구간마다 자릿수 단위로 줄어듭니다. T2I 사전학습의 43억 샘플에서 최종 영상 편집 지속 학습의 110만 샘플까지, 뒤로 갈수록 데이터는 적어지고 품질 기준은 높아집니다. 둘째, 해상도와 프레임률이 함께 올라갑니다. 256p에 12/24fps로 시작해 360p, 480p를 거쳐 720p에 도달하는데, 이렇게 점진적으로 올리는 이유는 T2I 사전학습에서 얻은 공간 사전 지식을 갑자기 흔들지 않으면서 모션 역학과 장기 시간 구성을 습득하기 위해서입니다. 셋째, 앞 단계의 과제가 사라지지 않고 계속 섞여 들어갑니다. T2V 학습에서도 T2I 목적함수를 유지하고, 영상 편집 학습에서도 I2I와 T2V, T2I를 함께 최적화합니다. 새 능력을 얻으면서 이미 얻은 능력이 퇴화하는 것을 막으려는 배치입니다. 학습률은 사전학습 구간에서 1 \times 10^{-4} 로 시작해 해상도가 올라가는 구간에서 5 \times 10^{-5} 로 낮췄고, 이미지 편집 학습에서만 다시 1 \times 10^{-4} 를 썼습니다.

데이터 필터링에도 한 가지 흥미로운 반전이 있습니다. 미적 점수로 거르면 정적인 영상이 유리해지기 때문에, 저자들은 모션 기반 필터를 따로 걸어 의미 있고 안정적인 동적 요소를 가진 샘플을 남겼습니다. 좋은 영상을 고르는 기준이 그대로 "움직이지 않는 영상"으로 흘러가는 것을 막은 셈입니다.

양방향 편집기의 학습 목표는 플로우 매칭입니다. 소스 영상 x^s, 조건 토큰 c 로 표현된 편집 지시, 선택적 참조 이미지, 편집 정답 x^t 가 주어지면 인과적 VAE가 소스 잠재 z^s, 참조 잠재 z^r, 타깃 잠재 z_0 를 만듭니다. 샘플링된 노이즈 레벨 \sigma \in [0,1] 과 가우시안 노이즈 \epsilon 에 대해 노이즈가 섞인 타깃과 그 플로우 타깃은 다음과 같이 구성됩니다.

z_{\sigma}=(1-\sigma)z_{0}+\sigma\epsilon, \qquad v^{\star}=\epsilon-z_{0}

양방향 편집기 v_{\theta_{\mathrm{bi}}} 는 이 플로우 타깃을 회귀하도록 학습됩니다.

\mathcal{L}_{\mathrm{V2V}}=\operatorname{E}\left[\left\|v_{\theta_{\mathrm{bi}}}(z_{\sigma},\sigma;c,z^{s},z^{r})-v^{\star}\right\|_{2}^{2}\right]

이 단계에서 양방향 타깃 어텐션은 모델에 편집이 끝난 클립 전체를 보여 주므로, 소스 보존과 시간적으로 일관된 편집이 스트리밍 제약이 도입되기 전에 먼저 자리를 잡습니다. 논문의 표현대로 품질 지향 초기화이며, 다음 단계인 인과 자기회귀 적응의 출발점이 됩니다.

학습 파이프라인 전체를 한 줄로 그리면 위 그림이 됩니다. 양방향 모델이 Teacher Forcing 단계를 초기화하고, Resampling Forcing이 그 뒤를 잇고, 여기서 만들어진 자기회귀 교사가 SA-DMD와 LHAD를 적용한 SA-DMD 양쪽에 교사로 투입됩니다. 아래 세 절이 이 그림의 각 상자에 해당합니다.

청크 단위 자기회귀 적응

첫 단계는 양방향 모델을 청크 단위로 잠재 시퀀스를 만들어 내는 인과 모델로 바꾸는 것입니다. 각 영상 편집 쌍은 시간축을 따라 정렬된 소스 청크와 타깃 청크로 쪼개지며, 구현에서는 청크 하나가 잠재 프레임 한 장, 즉 비디오 프레임 8장입니다.

어텐션은 두 층위로 나뉩니다. 청크 내부에서는 양방향, 청크 사이에서는 인과 입니다. 그래서 각 타깃 청크는 현재와 그 이전 청크의 정보만 활용할 수 있고, 모델은 미래 프레임을 보지 않은 채 스트림을 온라인으로 디코딩합니다. 여기까지만 하면 스트림이 길어질수록 어텐션 문맥도 길어지므로, 저자들은 청크 간 어텐션을 슬라이딩 윈도우로 제한합니다. 활성 청크는 정해진 개수의 최근 히스토리 청크와 첫 번째 청크 를 봅니다. 첫 청크는 전역 싱크(global sink)로 남겨 두는데, 윈도우가 문맥 길이를 영상 길이와 무관하게 상수로 묶는 동안 싱크는 장기 생성 내내 흔들리지 않는 기준점 역할을 합니다.

학습 시에는 노이즈가 섞인 활성 청크와 소스 토큰 S_t, 조건 토큰 C_t, 선택적 참조 토큰 R, 깨끗한 히스토리 토큰 H_{<t} 를 하나의 시퀀스로 묶고, 각 그룹의 가시성을 규정하는 어텐션 마스크를 적용합니다. 활성 청크는 자신의 소스 토큰과 조건 토큰에 양방향으로, 윈도우 안의 히스토리와 전역 싱크에는 인과적으로 접근합니다. 미래 청크는 마스킹되고 참조 토큰 R 만 전역으로 열려 있습니다. Diffusion Forcing을 따라 각 타깃 청크에는 독립적인 노이즈 레벨이 할당되고, 마스킹된 플로우 매칭 목적함수로 학습합니다.

그런데 깨끗한 히스토리에 대한 티처 포싱(teacher forcing)은 최적화가 안정적인 대신, 자기 자신의 불완전하고 조금씩 어긋나는 예측을 소비하는 스트리밍 추론과는 조건이 다릅니다. 그래서 마지막에 Resampling Forcing을 적용합니다. 깨끗한 히스토리를 온-정책(on-policy) 추정치 로 바꾸는 것인데, 각 히스토리 청크를 단일 스텝 디노이징 롤아웃으로 다시 생성한 뒤 그래디언트 계산에서 분리합니다. 결과적으로 학습이 추론에서 마주칠 히스토리 분포에 가까운 조건에서 이뤄지며, 학습과 시험 사이의 분포 불일치가 그만큼 완화됩니다.

소스 고정 분포 매칭 증류(SA-DMD)

실시간 처리량을 얻으려면 반복 디노이징을 몇 단계로 줄여야 합니다. 저자들은 분포 매칭 증류(Distribution Matching Distillation, DMD)를 자기회귀 프레임워크 안에서 적용해 두 단계 생성기로 증류했습니다. 시스템은 인과 생성기 G_{\theta}, 학습 가능한 가짜 점수 모델 F_{\psi}, 고정된 실제 점수 모델 R_{\phi} 로 구성되며, 셋 모두 공유 백본 LoRA 구성 아래에서 이전 단계 가중치로 초기화됩니다. 표준 DMD 목적함수는 실제 점수와 가짜 점수의 차이를 안내 신호로 삼아, 모드 탐색형 역방향 KL 발산으로 학생을 교사 쪽으로 끌어당깁니다.

문제는 롤아웃이 길어질 때 나타납니다. 생성기가 자신의 불완전한 히스토리에 점점 더 의존하게 되고, 그 오차가 누적되어 소스 드리프트와 환각으로 굳어집니다. SA-DMD는 여기서 교사를 시간적으로 정렬된 소스 청크에 고정 합니다. 구체적으로는 실제 점수에 classifier-free guidance(CFG)를 적용하되, 텍스트 조건 축과 소스 충실도 축을 서로 독립적인 두 방향으로 둡니다.

v_{\phi}^{g}=v_{\phi}^{\mathrm{cond}}+w_{\mathrm{txt}}\big(v_{\phi}^{\mathrm{cond}}-v_{\phi}^{-\mathrm{txt}}\big)+w_{\mathrm{src}}\big(v_{\phi}^{\mathrm{cond}}-v_{\phi}^{-\mathrm{src}}\big)

여기서 v_{\phi}^{-\mathrm{src}} 는 정렬된 소스 잠재 S^{k} 를 빼고 낸 예측이고, v_{\phi}^{-\mathrm{txt}} 는 텍스트 조건을 뺀 예측입니다. 이렇게 하면 안내된 교사는 소스 쪽이 선명해진 사후 분포가 되고, w_{\mathrm{src}} 가 히스토리 연속성과 소스 충실도 사이의 균형을 조절하는 하이퍼파라미터로 기능합니다. 이후는 DMD 정식화를 따릅니다. 롤아웃을 노이즈 레벨 \sigma 로 교란한 뒤 안내된 실제 속도와 가짜 속도를 각각 깨끗한 데이터 예측으로 변환하고, 두 예측의 정규화된 차이를 최소화하도록 생성기를 갱신해 생성 분포를 소스에 고정된 타깃 쪽으로 끌어옵니다. 가짜 점수 모델은 생성기 샘플을 분리한 상태에서 플로우 매칭 회귀로 동시에 학습됩니다.

이 설계에서 가장 실용적인 부분은 소스 고정을 학습 타깃에만 한정 했다는 점입니다. 소스 충실도 제어가 생성기 내부로 증류되어 들어가므로, 배포된 모델은 조건 분기 하나만 통과시키고도 높은 충실도를 냅니다. 추론 시점에 CFG를 위해 두 번 이상 순전파할 필요가 없다는 뜻이고, 실시간 처리량이 이 지점에서 결정됩니다.

장기 구간 자기회귀 증류(LHAD)

짧은 롤아웃으로 학습하면 자기 생성 히스토리에 크게 의존하는 장기 추론 특유의 복합 오차를 포착하지 못합니다. 그렇다고 긴 롤아웃의 계산 그래프를 통째로 들고 있으면 메모리 부족(OOM)이 납니다. LHAD는 이 둘 사이를 구간 분할 최적화로 통과합니다. m 개 청크 롤아웃을 짧은 연속 클립들로 나눈 뒤, 클립마다 SA-DMD 역전파를 수행하고 다음 클립을 생성하기 전에 그래프를 비웁니다. 그래디언트는 클립들에 걸쳐 누적했다가 단일 옵티마이저 스텝으로 반영하므로, 메모리 사용량은 묶여 있으면서도 전체 구간의 그래디언트가 반영됩니다.

여기서 실무적인 문제가 하나 더 생깁니다. 타깃 롤아웃이 확보된 소스 영상 길이를 넘어서는 경우입니다. 단순히 영상을 반복해서 이어 붙이면 이음매마다 급격한 의미 전환이 생깁니다. 저자들은 정방향과 역방향 시퀀스를 번갈아 쓰는 동적 미러 루핑(dynamic mirror looping) 으로 조건을 연장했습니다. 복제된 텐서를 실제로 만들지 않으면서 시간적 연속성을 유지하는 방식입니다. 여기에 경계가 정해진 윈도우 인과 어텐션이 더해져, 배포 시에도 KV 캐시 사용량과 청크당 연산량이 제한된 채로 더 긴 시퀀스까지 확장됩니다.

편집 쌍 데이터를 만드는 두 가지 파이프라인

방법론만큼 중요한 것이 학습 데이터입니다. 고품질 영상 편집 쌍은 규모 있게 수집하기가 특히 어렵기 때문에, 저자들은 이미 성숙한 이미지 편집 감독 신호를 영상으로 옮기는 전략을 택했습니다. JoyAI-Image의 I2I 및 R2I 데이터가 출발점입니다.

첫 번째 파이프라인은 키프레임 유도 편집 전파 입니다. 소스 영상에서 대표 키프레임 한 장을 고르고 지시에 따라 그 프레임을 편집한 뒤, 편집된 키프레임과 소스 영상을 함께 이미지 및 영상 대 영상 모델에 넣습니다. 그러면 모델이 원래의 움직임과 편집되지 않은 내용을 보존하면서 편집을 영상 전체로 퍼뜨립니다.

두 번째 파이프라인은 잠재 공유 I2V 생성 입니다. 원본 이미지와 그 편집본에서 각각 영상을 생성하되, 두 분기가 초기 디노이징 잠재를 공유해 움직임과 구도를 일치시키고, 후기 디노이징 단계에서만 서로 다른 이미지를 조건으로 받아 원하는 편집 차이를 만듭니다. 같은 장면을 두 번 찍되 한쪽만 다르게 만드는 방식이라, 편집 전후를 정확히 대응시킨 쌍을 얻을 수 있습니다.

생성된 쌍은 시각 품질, 편집 정확성, 내용 보존, 시간 일관성 기준으로 다시 걸러집니다. 마지막으로 MLLM이 소스 영상과 편집된 영상을 비교해 편집 지시문을 다듬습니다. 결과 데이터는 국소 편집과 전역 편집, 그리고 대상 추가와 교체와 제거를 모두 포함하며, 국소 편집은 주로 인물과 배경과 특정 영역을, 전역 편집은 스타일과 색조와 움직임 변형을 다룹니다.

30 FPS를 만드는 실시간 배포 파이프라인

배포 시에는 들어오는 영상 스트림이 8프레임짜리 연속 청크 C_t 로 나뉩니다. 추론 오버헤드를 줄이기 위해 파이프라인 전체에 FP8 양자화, 연산자 융합, 계산 그래프 컴파일을 적용했습니다. 각 청크는 인과적 VAE로 인코딩되고, 현재 조건과 캐시된 히스토리를 이용해 소수 스텝 DiT가 편집하며, 미래 프레임을 기다리지 않고 곧바로 디코딩됩니다. 생성이 끝나면 깨끗한 키 밸류(KV) 상태가 다음 청크를 위해 캐시되고, 의사 인코더(pseudo encoder)가 VAE의 (1+8) 프레임 구성에서 단일 문맥 프레임을 공급합니다. 캐시는 첫 청크를 전역 싱크로 두고 최근 청크들의 슬라이딩 윈도우를 유지하므로, 끝이 정해지지 않은 스트림에서도 메모리와 청크당 연산량에 상한이 생깁니다.

NVIDIA B200 한 장에서 측정한 단계별 실행 시간은 다음과 같습니다.

단계 청크당 소요 시간
VAE 인코딩 22 ms
DiT 디노이징 185 ms
VAE 디코딩 19 ms
KV 캐시 저장 31 ms
의사 인코딩 9 ms
전체 주기 266 ms

앞의 세 단계를 합한 226 ms가 요청에서 응답까지의 지연이고, 여기에 KV 캐시 저장과 의사 인코딩을 더한 266 ms가 한 청크를 처리하는 전체 주기입니다. 청크 하나가 프레임 8장이므로 266 ms 주기는 30.1 FPS에 해당합니다. 축소 정밀도 실행, 컴파일과 오토튜닝을 거친 VAE 경로, 시작 시 워밍업, 메모리 재사용이 런타임 오버헤드를 추가로 줄입니다. 표에서 눈에 띄는 것은 DiT 디노이징이 전체의 70\% 를 차지한다는 점인데, 두 단계 생성으로 줄이지 않았다면 이 항목만으로 실시간 예산을 넘어섰을 것입니다. SA-DMD가 왜 이 시스템의 중심인지가 여기서 드러납니다.

실험 결과

평가는 스트리밍 편집기와 오프라인 편집기 양쪽을 상대로 진행됐습니다. 스트리밍 쪽 비교 대상은 StreamDiffusionV2, SANA-Streaming, LiveEdit, 그리고 비공개 모델인 XMax-X2.0입니다. 오프라인 쪽은 오픈소스인 VACE, OpenVE-Edit, UniVideo, OmniWeaving, Kiwi-Edit, VInO, Bernini-R와 상용 시스템인 PixVerse V6, Runway Aleph, Kling-3.0 Omni, Kling-O1을 포함합니다.

짧은 영상 편집: OpenVE-Bench

먼저 오픈소스 벤치마크인 OpenVE-Bench로 짧은 영상 편집을 평가했습니다. 이 벤치마크의 다섯 범주 V2V 프로토콜을 따라 Gemini 멀티모달 심판이 전역 스타일, 국소 변경, 배경 변경, 국소 제거, 국소 추가 항목마다 편집된 영상에 1점에서 5점 사이의 점수를 매깁니다.

방식 파라미터 종합 전역 스타일 국소 변경 배경 변경 국소 제거 국소 추가
Kling-3.0 Omni (상용) 비공개 3.64 4.03 4.15 3.20 3.46 3.36
Kling-O1 (상용) 비공개 3.62 3.38 4.44 3.23 3.32 3.74
Runway-Aleph (상용) 비공개 3.45 2.62 4.18 4.16 2.78 3.49
Bernini-R (오프라인) 27B 3.72 4.16 4.47 3.25 3.88 2.89
VInO (오프라인) 8B 3.32 4.34 2.54 3.73 3.22 2.77
Kiwi-Edit (오프라인) 5B 3.02 3.64 2.64 3.83 2.63 2.36
VACE (오프라인) 14B 1.57 1.49 1.55 2.07 1.46 1.26
SANA-Streaming (스트리밍) 2B 2.62 3.48 2.29 3.20 2.27 1.88
LiveEdit (스트리밍) 1.3B 2.00 2.18 2.73 2.05 1.55 1.51
Xmax-X2.0 (스트리밍) 비공개 1.87 2.47 2.09 1.63 1.73 1.41
StreamDiffusionV2 (스트리밍) 1.3B 1.23 1.48 1.35 1.01 1.27 1.05
JoyAI-Video-Edit (스트리밍) 16B 3.60 3.62 4.47 2.90 4.06 2.97

JoyAI-Video-Edit는 종합 3.60 을 기록해 SANA-Streaming을 0.98 점, LiveEdit을 1.60 점, XMax-X2.0을 1.73 점, StreamDiffusionV2를 2.37 점 차로 앞섭니다. 스트리밍 방식 중에서는 다섯 범주 가운데 네 개에서 1위이며, 국소 변경과 국소 제거에서 특히 큰 폭으로 벌립니다. 인과 추론이라는 제약을 안고도 Kiwi-Edit(3.02), Bernini-R(3.72), Kling-3.0 Omni(3.64), Kling-O1(3.62) 같은 강한 오프라인 편집기와 비교 가능한 수준에 올라섰고, 국소 변경 4.47 은 전체 최고 점수와 동률, 국소 제거 4.06 은 비교 대상 전체를 통틀어 가장 높은 값입니다.

다만 배경 변경 2.90 은 SANA-Streaming의 3.20 보다 낮아 스트리밍 중에서도 1위가 아닙니다. 전체를 놓고 보면 Runway-Aleph의 4.16 과는 상당한 거리가 있습니다. 이 항목의 상대적 약세는 뒤에 나올 긴 영상 벤치마크와 절제 실험에서도 같은 패턴으로 반복됩니다.

1분 영상 편집: LongV2VBench

기존 영상 편집 벤치마크는 대부분 10초 미만 클립으로 구성되어 있어, 지속적인 입력 스트림에서의 오차 누적과 시간적 열화, 처리 효율을 평가하기에는 부족합니다. 저자들은 이 공백을 메우기 위해 LongV2VBench를 새로 만들었습니다. 1분 길이 영상을 대상으로 배경 변경, 전역 스타일 편집, 국소 추가, 국소 수정, 국소 제거의 다섯 범주에 걸쳐 229개 과제를 담은 벤치마크입니다.

방식 종합 배경 변경 전역 스타일 국소 추가 국소 변경 국소 제거
StreamDiffusionV2 1.21 1.08 1.71 1.18 1.11 1.03
SANA-Streaming 1.64 1.19 2.02 1.50 1.72 1.85
LiveEdit 1.23 1.10 1.34 1.33 1.34 1.04
XMax-X2.0 1.71 1.36 2.07 1.64 2.08 1.40
JoyAI-Video-Edit 3.30 2.49 3.85 3.10 4.09 2.99

여기서는 다섯 범주 전부에서 1위이며, 종합 3.30 으로 가장 강한 베이스라인인 XMax-X2.0을 1.59 점 차로 앞섭니다. 다른 스트리밍 편집기들이 1분 영상에서 1.21 에서 1.71 사이로 주저앉는 반면, JoyAI-Video-Edit는 짧은 영상 벤치마크의 3.60 과 크게 다르지 않은 3.30 을 유지합니다. 두 벤치마크가 서로 다른 데이터라 점수를 직접 빼서 비교할 수는 없지만, 하락 폭의 차이는 뚜렷합니다.

처리량도 함께 측정됐습니다. JoyAI-Video-Edit는 30.19 FPS로 XMax-X2.0의 20.90 FPS보다 44.4\% 빠릅니다. 다만 XMax-X2.0은 832 \times 1440 에서, JoyAI-Video-Edit는 720 \times 1280 에서 측정된 값이라 상대 쪽이 화소 수 기준으로 30\% 가량 큰 화면을 처리하고 있습니다. 이 격차를 그대로 효율 우위로 환산하려면 해상도 차이를 감안해야 합니다.

사람 선호도 평가

익명화된 출력을 쌍으로 놓고 사람 평가자가 JoyAI-Video-Edit, 상대 방식, 무승부 중 하나를 고르는 방식으로 진행됐습니다. 평가 대상은 모두 10초 미만의 단일 샷 영상입니다.

스트리밍 편집기와의 비교에서는 LiveEdit 상대 90\%, StreamDiffusionV2 상대 87\%, SANA-Streaming 상대 87\%, XMax-X2.0 상대 81\% 의 선호를 얻었습니다. 상대 쪽 득표는 2\% 에서 6\% 사이에 그치고 나머지는 무승부입니다.

오프라인 시스템과의 비교는 결과가 갈립니다. Bernini-R 상대로는 48\%44\% 로 근소하게 앞섰지만, Seedance 2.0에는 35\%56\%, Kling-3.0 Omni에는 34\%56\% 로 밀렸습니다. 초록의 "remains competitive with strong offline systems" 라는 표현은 정확히 이 지점을 가리킵니다. 오프라인 최상위권과 대등해졌다는 뜻이 아니라, 실시간 제약을 지고도 같은 링에 올랐다는 뜻으로 읽는 편이 맞습니다.

배포 효율 비교

81프레임 입력에 배치 크기 1로 측정한 결과입니다. 지연 시간은 81프레임 전체에 대해 재고, FPS는 81을 해당 지연으로 나눈 값입니다.

방식 해상도 전체 지연(초) 전체 FPS DiT FPS VAE FPS
StreamDiffusionV2 480×832 4.48 18.07 40.64 37.06
LiveEdit 480×832 5.24 15.45 27.16 37.26
SANA-Streaming 704×1280 5.58 14.51 54.36 27.12
JoyAI-Video-Edit 720×1280 2.68 30.19 37.21 200.00

전체 파이프라인 지연 2.68 초로 가장 짧고, 종단 간 처리량 30.19 FPS로 가장 높습니다. StreamDiffusionV2의 1.67 배, LiveEdit의 1.95 배, SANA-Streaming의 2.08 배에 해당합니다.

이 표에서 가장 흥미로운 대목은 SANA-Streaming과의 비교입니다. 단독 DiT만 놓고 보면 SANA-Streaming이 54.36 FPS로 JoyAI-Video-Edit의 37.21 FPS보다 빠릅니다. 그런데 전체 파이프라인에서는 순서가 뒤집힙니다. VAE 처리량이 200.00 FPS 대 27.12 FPS로 벌어지면서 오토인코딩 병목이 사라진 것이 결정적입니다. 부품 하나를 빠르게 만드는 것과 시스템 전체를 빠르게 만드는 것이 다른 문제라는 점을 보여 주는 표입니다. 저자들은 SANA-Streaming의 경우 공개된 오픈소스 배포판을 기준으로 측정했으며 원논문이 보고한 구현보다 느리다고 명시해 두었습니다.

각 기법의 기여도 분석

SA-DMD와 LHAD가 각각 얼마나 기여했는지를 LongV2VBench에서 분리해 측정했습니다.

SA-DMD LHAD 종합 배경 변경 전역 스타일 국소 추가 국소 변경 국소 제거
2.81 2.45 3.61 1.97 3.43 2.58
3.23 2.49 4.24 2.74 4.00 2.67
3.06 2.60 3.56 2.49 3.94 2.70
3.30 2.49 3.85 3.10 4.09 2.99

단일 기법으로는 SA-DMD의 상승 폭이 가장 큽니다. 전역 스타일을 3.61 에서 4.24 로, 국소 변경을 3.43 에서 4.00 으로 끌어올렸습니다. 교사를 정렬된 소스 청크에 고정하는 것이 외형 충실도를 갉아먹는 소스 드리프트를 실제로 억제한다는 근거입니다. LHAD는 종합 3.06 으로 보완적인 상승을 만드는데, 특히 배경 변경과 국소 제거에서 이득이 나타납니다. 긴 롤아웃의 후반부, 오차가 이미 누적된 상태를 안정화한 결과로 해석됩니다.

두 기법을 모두 켰을 때 종합 3.30 으로 최고이며 국소 편집 세 과제를 모두 가져갑니다. 다만 모든 축에서 단조롭게 좋아지지는 않습니다. 전역 스타일은 SA-DMD 단독(4.24)이 두 기법을 함께 쓴 경우(3.85)보다 높고, 배경 변경은 LHAD 단독(2.60)이 가장 높습니다. 두 목적함수가 완전히 같은 방향을 가리키지는 않으며, 종합 점수를 올리는 조합이 개별 항목의 최적 조합과 일치하지 않는다는 뜻입니다.

JoyAI-Video-Edit의 한계

논문에는 별도의 한계 절이 없지만, 공개된 수치와 코드 상태에서 읽어낼 수 있는 제약이 몇 가지 있습니다.

품질 면에서는 오프라인 최상위권과의 격차가 남아 있습니다. 사람 선호도 평가에서 Kling-3.0 Omni와 Seedance 2.0에 모두 34\%56\%, 35\%56\% 로 밀렸습니다. 배경 변경은 두 벤치마크와 절제 실험 전반에서 일관되게 약한 항목이고, OpenVE-Bench에서는 파라미터가 훨씬 작은 SANA-Streaming(2B)에도 이 항목만큼은 뒤집니다.

평가 방식에도 감안할 점이 있습니다. 자동 평가는 Gemini 멀티모달 심판의 점수이고, 긴 영상 평가에 쓰인 LongV2VBench는 저자들이 직접 만든 벤치마크입니다. 사람 평가 역시 저자들이 수행했으며, 제3자 재현 결과는 아직 없습니다. 또한 w_{\mathrm{src}} 처럼 히스토리 연속성과 소스 충실도의 균형을 정하는 핵심 하이퍼파라미터의 구체적인 값은 논문에 제시되지 않아, 다른 데이터로 이 방법을 재현하려면 탐색이 필요합니다.

실용 면에서는 앞서 언급한 대로 30 FPS가 B200 한 장을 전제로 한 수치이고, 학습 프레임워크와 데이터 생성 파이프라인이 아직 공개되지 않아 재학습 경로가 막혀 있습니다.

JoyAI-Video-Edit의 편집 예시

저자들이 저장소에 올린 예시는 전역 외형 변경, 국소 객체 편집, 대상 추가와 제거와 교체, 배경 교체, 스타일 전이, 참조 이미지 기반 편집까지 걸쳐 있습니다. 아래는 그중 두 가지로, 각각 왼쪽이 원본 프레임이고 오른쪽이 편집 결과입니다.

위쪽 예시에 쓰인 지시는 "Transform the people, hairstyles, and interior into a British castle aristocratic style" 이고, 아래쪽은 "Make all dogs white, add colorful hats, and turn the sunglasses hot pink" 입니다. 첫 번째는 인물과 배경을 한꺼번에 바꾸는 전역 편집이고, 두 번째는 화면 안의 특정 대상만 골라 색과 소품을 바꾸는 국소 편집입니다. 저장소의 사례 표에서 각 프레임에 대응하는 영상 클립을 확인할 수 있습니다.

JoyAI-Video-Edit 설치 및 실행

환경은 conda로 만들고 의존성은 requirements 파일 하나로 정리되어 있습니다.

conda create -n joyai-video-edit python=3.10 -y
conda activate joyai-video-edit
python -m pip install -r requirements.txt

가중치는 Hugging Face에서 받아 지정된 위치에 둡니다. MiMo-VL과 ONNX 검출기 파일은 별도의 외부 런타임 의존성이라 DEPLOYMENT.md를 함께 봐야 합니다.

deploy/deps/checkpoints/JoyAI-Video-Edit/
|-- dit/
|   `-- joyai_video_edit_dit_0804.pth
`-- vae/
    |-- config.json
    `-- diffusion_pytorch_model.safetensors

서버를 띄우면 브라우저에서 바로 접속할 수 있습니다.

cd deploy
bash run_server.sh
# http://localhost:8080

체크포인트 경로, CUDA 장치 배치, 호스트와 포트를 바꾸려면 deploy/run_server.sh를 편집합니다. 기본 스크립트는 TorchInductor와 Triton, CUDA 캐시 디렉토리를 고정 경로로 잡아 두어 컴파일 산출물이 재시작 사이에 재사용됩니다. 원격 장비에서 돌린다면 서버를 0.0.0.0 에 바인딩하거나 SSH 포트 포워딩을 씁니다.

JoyAI-Video-Edit의 앞으로 계획

저장소의 할 일 목록에는 세 가지가 올라와 있습니다. 첫째는 GeForce RTX 5090 같은 소비자용 GPU를 위한 배포 최적화이고, 둘째는 참조 이미지 기반 영상 편집(RV2V) 능력을 중심으로 한 더 강한 모델 버전이며, 셋째는 학습 프레임워크와 데이터 생성 파이프라인 전체의 공개입니다. 지금 공개된 것은 배포 코드와 추론용 체크포인트까지입니다.

JoyAI-Video-Edit의 라이선스

JoyAI-Video-Edit는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:framed_picture: JoyAI-Video-Edit 실시간 편집 데모

:scroll: JoyAI-Video-Edit 논문

:github: JoyAI-Video-Edit 프로젝트 GitHub 저장소

:hugs: JoyAI-Video-Edit 모델 다운로드

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 도구를 직접 설치해 사용해보셨다면, :pytorch:파이토치 한국 사용자 모임:south_korea: 회원들을 위해 경험이나 팁을 댓글로 남겨주세요! :folded_hands: