VAE는 어떻게 동작하나 — 긴 AI 댄스 영상이 '디지털 풍화'로 무너지는 이유
기술 분석 보고서
발행일: 2026년 9월 14일
디지털 풍화 현상
AI 영상 모델로 20초짜리 댄스 영상을 만들면, 앞부분은 멀쩡한데 뒤로 갈수록 창밖 하늘이 수채화처럼 얼룩지고 블록이 진 듯 격자화 되는 현상을 만납니다. 인물의 머리색이 조금씩 바래기도 합니다. 저희는 이것을 디지털 풍화 라고 부릅니다.
색 보정으로 밝기와 색을 아무리 맞춰도 이 격자는 사라지지 않았습니다. 원인이 색이 아니라 이미지를 압축했다 푸는 과정 자체 에 있기 때문입니다. 그 과정의 주인공이 VAE(Variational Autoencoder, 변분 오토인코더) 입니다.
이 글은 VAE의 기본 원리부터, 영상 생성 모델 LTX-2.5 안에서 VAE가 어떤 모양으로 들어가 있는지, 그리고 영상을 여러 조각으로 이어 붙일 때 왜 풍화가 쌓이는지까지 차례로 설명합니다.
1. 출발점: 오토인코더 — "줄였다가 다시 펴기"
오토인코더는 두 개의 신경망을 이어 붙인 구조입니다.
인코더(Encoder) : 큰 입력(이미지)을 작은 숫자 묶음으로 줄입니다. 이 작은 묶음을 잠재 표현(latent) 이라고 합니다.
디코더(Decoder) : 잠재 표현을 받아 원래 크기의 이미지로 되돌립니다.
이미지 x
→
[인코더]
→
잠재 z (작다)
→
[디코더]
→
복원 이미지 x̂
학습 목표는 단순합니다. 복원 이미지 x̂ 가 원본 x 와 최대한 같아지게 인코더와 디코더를 함께 훈련합니다.
핵심은 가운데의 병목(bottleneck) 입니다. 잠재 z 가 원본보다 훨씬 작기 때문에, 인코더는 "무엇을 남기고 무엇을 버릴지"를 스스로 배웁니다. 윤곽·색의 큰 흐름·구도처럼 복원에 꼭 필요한 정보 는 남기고, 미세한 질감처럼 다시 그려 넣을 수 있는 정보 는 버립니다.
그래서 오토인코더는 본질적으로 손실 압축기 입니다. JPEG처럼, 한 번 줄였다 펴면 원본과 똑같이 돌아오지 않습니다.
2. 그럼 "변분(Variational)"은 무엇이 다른가
일반 오토인코더는 이미지 하나를 잠재 공간의 점 하나 로 보냅니다. 문제는 그 점들 사이의 공간이 엉망이라는 것입니다. 두 점 사이 어딘가를 디코딩하면 이상한 그림이 나오기 쉽고, 새 그림을 "뽑아낼" 수 있는 매끄러운 공간이 되지 않습니다.
VAE(Kingma & Welling, 2013, Auto-Encoding Variational Bayes )는 이것을 확률로 풉니다.
인코더는 점 하나 대신 분포의 모양 을 출력합니다 — 평균(μ)과 분산(σ²).
학습할 때는 그 분포에서 표본을 뽑아 디코더에 넣습니다. 미분이 가능하도록 z = μ + σ·ε (ε는 표준 정규 노이즈) 형태로 뽑는데, 이를 재매개변수화 기법 이라 부릅니다.
손실 함수는 두 항의 합입니다.
복원 손실 : x̂ 가 x 와 얼마나 다른가
KL 발산 : 인코더가 낸 분포가 표준 정규분포에서 얼마나 멀어졌는가(너무 멀어지지 않게 당긴다)
KL 항 덕분에 잠재 공간이 연속적이고 촘촘하게 정리 됩니다. 비슷한 그림은 가까운 곳에 모이고, 그 사이를 지나가도 그럴듯한 그림이 나옵니다.
한 줄 요약: 오토인코더는 "정확히 되돌리기"를, VAE는 "정확히 되돌리면서 잠재 공간을 쓸 만하게 정리하기"를 배운다.
3. 왜 이미지·영상 생성 모델은 VAE를 앞뒤에 끼우는가
요즘 이미지·영상 생성 모델(Stable Diffusion, FLUX, LTX 등)은 대부분 잠재 확산(Latent Diffusion) 구조입니다(Rombach et al., 2022, High-Resolution Image Synthesis with Latent Diffusion Models ).
[학습] 실제 이미지 → VAE 인코더 → 잠재 → (확산 모델이 이 잠재를 배운다)
[생성] 노이즈 → 확산 모델이 잠재를 조금씩 만든다 → VAE 디코더 → 이미지
확산 모델이 화소가 아니라 작은 잠재 위에서 일하는 이유는 비용 때문입니다. 1080p 영상의 화소를 직접 다루면 계산량이 감당이 안 됩니다. VAE가 수백 배 줄여 준 공간에서 일하면, 확산 모델은 "구도·동작·색의 흐름"이라는 본질 에 계산을 쓰고, 미세한 질감 복원은 VAE 디코더에게 맡깁니다.
대가도 분명합니다. 최종 화질의 상한을 VAE가 정합니다. 디코더가 못 그리는 것은 확산 모델이 아무리 잘해도 화면에 나오지 않습니다.
4. LTX-2.5의 비디오 VAE는 어떻게 생겼나
저희가 쓰는 LTX-2.5(Lightricks)의 비디오 VAE는 LTX-Video 계열 설계를 따르며, 코드( ltx_core )에서 확인한 수치는 다음과 같습니다.
항목
값
의미
공간 압축
가로 32배 · 세로 32배
32×32 화소 한 칸이 잠재 한 칸
시간 압축
8배
프레임 8장이 잠재 한 칸
잠재 채널
128
칸마다 128개의 숫자
첫 프레임
단독 1칸
잠재 프레임 수 = 1 + (프레임 수 − 1) / 8
화소 하나당 잠재 값의 비율을 계산하면 (32 × 32 × 8 × 3) / 128 = 192 , 즉 약 1:192 압축 입니다.
실제 크기로 보면 더 실감이 납니다. 저희 렌더 단위인 768×1408 해상도 · 57프레임 한 조각은
화소: 3 × 57 × 1408 × 768 ≈ 1억 8,500만 개의 값
잠재: 128 × 8 × 44 × 24 ≈ 101만 개의 값
이 됩니다. 1억 8천만 개를 100만 개로 줄였다가 다시 폅니다.
구조상 특징도 몇 가지 있습니다.
패치화(patchify) : 인코더는 먼저 4×4 화소를 한 덩어리로 묶고, 그 뒤 합성곱 블록에서 공간을 여러 번 절반으로 줄여 최종 32배에 이릅니다. 디코더는 이를 거꾸로(depth-to-space 업샘플) 되돌립니다.
인과적(causal) 시간축 : 첫 프레임은 단독으로 한 칸을 차지하고, 그 뒤는 8장씩 묶입니다. 그래서 "첫 프레임 = 조건 이미지"라는 사용법이 자연스럽습니다.
평균만 사용 : 인코더는 평균과 분산을 함께 내지만, 추론 경로는 평균(μ)만 꺼내 쓰고 채널별 통계로 정규화합니다. 같은 입력이면 같은 잠재가 나오는 결정적 인코딩입니다.
디노이징 디코더 : LTX 계열 디코더는 선택적으로 약한 노이즈와 시간 단계(timestep) 조건을 받아, 확산의 마지막 정리 단계를 디코더가 겸할 수 있게 설계되어 있습니다.
5. 32배라는 숫자가 손가락과 하늘에 주는 의미
잠재 한 칸이 32×32 화소라는 것은, 확산 모델이 32화소보다 작은 구조를 "직접" 다룰 방법이 없다 는 뜻입니다.
저희 댄스 렌더 기준으로, 들어 올린 손의 폭이 약 99화소였습니다. 잠재 칸으로 환산하면 손 전체가 약 3칸, 손가락 하나는 0.8칸, 손톱은 0.4칸 입니다. 손가락 한 개를 온전히 넣을 칸이 없습니다. 그 규모의 모양은 조건이 아니라 디코더의 사전 지식이 그려 넣습니다.
하늘도 같습니다. 창밖의 매끈한 하늘이나 멀리 보이는 빌딩의 창문 격자 같은 미세한 질감은 잠재에 거의 남지 않고, 디코더가 "하늘다운 질감"을 매번 다시 만들어 냅니다. 한 번은 그럴듯합니다. 문제는 여러 번 반복될 때 입니다.
6. 왕복은 제자리로 돌아오지 않는다 — 세대 손실
VAE를 한 번 거친 이미지를 x̂₁ 이라 하면,
x̂₁ = D(E(x)) ≈ x (조금 다르다)
x̂₂ = D(E(x̂₁)) ≈ x̂₁ (또 조금 다르다)
x̂₃ = D(E(x̂₂)) ...
VAE는 D(E(x)) = x 가 되도록 훈련되지만, 그 등식이 반복 적용에서도 안정적으로 유지된다는 보장은 없습니다. 매 왕복마다 생기는 작은 오차는
주로 고주파(질감·가장자리) 에 몰리고,
디코더가 "그럴듯하게 채운" 부분이 다음 인코딩의 입력 이 되어 버리며,
오차가 무작위로 흩어지지 않고 같은 방향으로 쌓일 수 있습니다 — 매끈한 영역이 조금씩 얼룩지고, 경계가 뭉개지고, 색이 한쪽으로 기웁니다.
JPEG 파일을 열어 저장하기를 수십 번 반복하면 블록 노이즈가 점점 도드라지는 세대 손실(generation loss) 과 같은 종류의 현상입니다. 차이는, VAE는 버린 정보를 지어내서 채운다 는 점입니다. 그래서 뭉개짐이 단순한 흐림이 아니라 "그럴듯하지만 원본에 없던 얼룩"의 형태로 나타납니다.
7. 긴 댄스 영상에서는 이 왕복이 몇 번이나 일어나는가
한 번에 렌더할 수 있는 길이에는 메모리 한계가 있어서, 긴 영상은 짧은 조각(세그먼트)을 이어 붙여 만듭니다. 저희 파이프라인은 57프레임(약 1.9초) 조각을 씁니다. 이음매에서는 앞 조각의 마지막 프레임을 다음 조각의 첫 프레임 조건 으로 넘깁니다.
이음매 하나에서 그 프레임이 겪는 일을 순서대로 적으면 이렇습니다.
앞 조각 잠재
↓ VAE 디코더로 화소 복원 (VAE 왕복의 절반)
↓ 동영상 파일로 저장(H.264 손실 압축) (코덱 손실)
↓ 마지막 프레임 추출
↓ 색 보정
↓ 조건 이미지로 넣기 전 재압축(CRF) (코덱 손실 한 번 더)
↓ VAE 인코더로 다시 잠재화 (VAE 왕복의 나머지 절반)
↓ 다음 조각 생성의 시작점
19초 영상이면 조각이 11개, 이음매가 10개입니다. 즉 마지막 조각의 배경은 VAE 왕복과 코덱 압축을 약 10세대 거친 그림 을 출발점으로 삼습니다. 그리고 그 사이사이에 확산 모델과 디코더가 매번 질감을 새로 지어냅니다.
실제로 저희 결과물에서 관찰된 모습은 이렇습니다.
창밖 하늘의 얼룩이 조각 안에서 서서히 늘고 , 이음매에서 되돌아가지 않고 다음 조각으로 그대로 상속 됩니다.
비경계 영역의 거칠기가 영상 앞부분 대비 약 3배로 커졌습니다.
인물의 밝기·색을 원본 키프레임에 맞추는 색 보정은 색은 잡았지만 격자·얼룩은 전혀 줄이지 못했습니다.
(초기 측정에서는 32화소 주기의 격자가 뚜렷이 자란다는 증거보다 격자와 무관한 거칠기 전반의 증가 가 더 크게 잡혔습니다. 사람이 "격자화"로 느끼는 것이 정확히 어느 주기의 무엇인지는 아직 측정 중입니다.)
8. 그래서 무엇을 해 볼 수 있나
풍화의 원인이 "왕복의 누적"이라면, 대책은 크게 세 방향입니다.
① 왕복 자체를 줄인다 — 잠재 공간에서 이어받기
앞 조각의 마지막 잠재 를 디코딩하지 않고 그대로 다음 조각의 시작 조건으로 넘깁니다. 화소로 나갔다 들어오는 과정(디코드→코덱→인코드)이 통째로 빠집니다. 청크를 이어 생성하는 영상 모델들에서 쓰이는 접근이며, 저희도 이전에 다른 모델(Wan 기반 댄스 생성)에서 잠재 앵커와 잠재 색 앵커를 함께 써서 청크 간 드리프트를 줄인 경험이 있습니다. 다만 LTX의 시간축은 8프레임이 한 칸이라, "마지막 잠재 칸"이 "첫 프레임 칸"과 같은 의미를 갖는지 확인이 필요합니다.
② 왕복은 두되, 손실이 쌓이는 경로를 끊는다
이음매 프레임을 무손실로 뽑고 재압축을 끄면 코덱 몫의 세대 손실이 사라집니다.
인물은 이음매 프레임에서, 배경은 원본 키프레임에서 가져와 합성하면 배경 풍화가 다음 조각으로 상속되지 않습니다. "배경과 색감은 원본 캐릭터 이미지를 따른다"는 원칙과도 맞습니다.
③ 모델이 열화된 조건에 강해지게 한다(학습이 필요한 방향)
긴 영상 생성 연구에서는 학습 때 조건 프레임에 일부러 노이즈나 열화를 섞어, 모델이 "조금 망가진 앞 프레임"을 받아도 스스로 바로잡도록 가르치는 방법들이 쓰입니다. 추론만으로는 적용할 수 없어서 저희에게는 가장 무거운 선택지입니다.
정리
VAE는 이미지를 작은 잠재로 줄였다가 다시 펴는 손실 압축기 이고, "변분"은 그 잠재 공간을 매끄럽게 정리해 생성에 쓸 수 있게 만드는 장치입니다.
LTX-2.5의 비디오 VAE는 32×32×8, 128채널, 약 1:192 로 압축합니다. 32화소보다 작은 구조는 디코더가 사전 지식으로 채웁니다.
VAE 왕복은 제자리로 돌아오지 않고 , 그 오차는 고주파에 몰려 반복될수록 같은 방향으로 쌓입니다.
긴 영상을 조각으로 이어 붙이면 이음매마다 VAE 왕복 + 코덱 압축 이 한 세대씩 더해져, 뒤로 갈수록 하늘이 얼룩지고 격자화되는 디지털 풍화 가 나타납니다.
이것은 색·밝기 보정으로 고칠 수 없고, 왕복을 줄이거나(잠재 이어받기) 손실의 상속 경로를 끊는(무손실 이음매·배경 원본 합성) 쪽에서 풀어야 합니다.
저희는 지금 이 방향들을 실제 댄스 영상으로 하나씩 측정하고 있습니다. 결과가 나오면 이어서 공유하겠습니다.
© 2026. All rights reserved.