작은 Diffusion
I’m ready to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have it, I’ll keep the source link unchanged and translate the rest into Korean while preserving all formatting, markdown, and technical terms.
전방 확산
확산은 열역학에서 설명되는 바와 같이 고에너지 상태에서 저에너지 상태로 에너지를 전달하는 과정이다. 확산 모델에서는 이미지에 점차적으로 노이즈를 추가함으로써 이를 모방한다.
잉크를 물잔에 떨어뜨리는 것을 상상해 보라: 잉크는 처음에 뚜렷한 형태를 가지고 있다가 점점 퍼져 물이 균일하게 색칠될 때까지 확산한다.
유사하게, 우리는 깨끗한 이미지에서 시작하여 각 단계마다 작은 양의 노이즈를 반복적으로 추가해 이미지가 완전한 노이즈가 될 때까지 진행한다. 이를 전방 확산이라고 부른다.
Reverse Diffusion
잉크‑확산 과정을 촬영하고 영상을 역방향으로 재생하면, 균일한 색이 원래의 잉크 점으로 다시 형성되는 것을 볼 수 있습니다.
훈련 중에 우리는 모델에게 추가된 노이즈를 예측하고 이를 빼도록 가르쳐, 확산 과정을 역전시키는 방법을 효과적으로 학습시킵니다. 이것이 역확산입니다.
스케줄러는 각 타임스텝에서 얼마나 많은 노이즈가 추가되는지를 결정하고, 알고리즘(보통 U‑Net이나 확산 트랜스포머)은 이를 제거하는 방법을 학습합니다.
Extending Diffusion to Video
2‑D 확산에서는 단일 프레임을 디노이즈하면 됩니다. 비디오에서는 시간이라는 세 번째 차원이 추가되므로, 시간적 일관성을 유지해야 합니다.
프레임 1이 “3”으로, 프레임 2가 “5”으로 디노이즈된다면, 결과 애니메이션은 깜빡거릴 것입니다. 이를 방지하기 위해 모델은 시간적 어텐션을 사용하여 현재 프레임 앞뒤의 이웃 프레임을 살펴봅니다.
우리 실험에서는 정적인 28×28 MNIST 숫자를 유클리드 거리 변환과 마스킹을 이용해 15프레임 배치로 변환했습니다. 각 숫자는 시간에 따라 변형되는 15개의 이미지 시퀀스로 구성되어, 비디오‑인식 아키텍처에 필요한 데이터를 제공했습니다.
아키텍처
백본은 DDPM 논문을 따르지만 비디오에 맞게 조정되었습니다:
- Spatial branch – (1 × 3 × 3) 크기의 커널로 공간 정보를 처리합니다.
- Temporal branch – (3 × 1 × 1) 크기의 커널로 시간 정보를 처리합니다.
# Spatial convolution
nn.Conv3d(in_ch, out_ch, kernel_size=(1, 3, 3), padding=(0, 1, 1)),
nn.BatchNorm3d(out_ch),
nn.ReLU(),
# Temporal convolution
nn.Conv3d(out_ch, out_ch, kernel_size=(3, 1, 1), padding=(1, 0, 0))
시간 임베딩
원래 DDPM은 사인파 임베딩(트랜스포머 위치 인코딩과 유사)을 사용합니다. 우리의 간단한 작업을 위해 기본 MLP를 사용했습니다:
self.time_mlp = nn.Sequential(
nn.Linear(1, t_dim),
nn.ReLU(),
nn.Linear(t_dim, t_dim)
)
작업이 유클리드 거리 변환(Euclidean Distance Transform)으로부터 기하학을 예측하는 것이었고(저주파, 선형 함수) 때문에, 이 간단한 임베딩으로 충분했습니다. 저주파와 고주파 성분 및 복잡한 물리 현상이 모두 포함된 실제 비디오 확산에서는 일반적으로 사인파 임베딩이 더 큰 이점을 제공합니다.
Source: …
Scheduler and Training Loop
스케줄러는 각 단계에서 얼마나 많은 노이즈를 추가할지 결정합니다. 원래 DDPM에서는 단계 500에 도달하려면 500번의 연속적인 노이즈 추가가 필요하므로 속도가 느립니다. 가우시안 노이즈에 또 다른 가우시안 노이즈를 더하면 또 다른 가우시안이 된다는 특성을 활용하면, 깨끗한 이미지 (x_0)에서 직접 원하는 노이즈 단계 (x_t)로 “텔레포트”할 수 있습니다.
손실 함수는 간단합니다: 깨끗한 프레임을 하나 가져와 무작위 타임스텝에 노이즈를 추가하고, 그 노이즈를 예측한 뒤, 실제 노이즈와의 평균 제곱 오차(MSE)를 계산하고 역전파합니다.
학습 중에는 재파라미터화 트릭을 사용해 단계들을 건너뛸 수 있지만, 샘플링 시에는 역확산 체인을 따라야 합니다. 표준 DDPM은 약 1000단계가 필요하지만, 더 빠른 대안인 DDIM은 최대 50단계만에 샘플을 생성할 수 있습니다. 모델이 빼야 할 노이즈를 예측한 후, 샘플러는 해당 노이즈를 빼는 작업을 수행합니다.
Temporal Consistency (The “Secret Sauce”)
연속된 프레임이 일관성을 유지하도록 보장하는 것은 비디오 확산에 있어 매우 중요합니다. Temporal attention과 dual‑branch (spatial + temporal) convolution 설계는 역 확산 과정 전반에 걸쳐 이러한 일관성을 유지하는 데 도움을 줍니다.
결론
프로젝트는 비디오 디퓨전의 간소화된 접근 방식을 보여줍니다:
- Data: 정적인 MNIST 숫자를 짧은 시간 시퀀스로 변환했습니다.
- Architecture: 3‑D 컨볼루션을 별도의 공간 및 시간 브랜치로 분리했습니다.
- Embedding: 간단한 MLP 시간 임베딩으로 저주파 작업을 충분히 수행했습니다.
- Training: 스케줄러와 함께 표준 DDPM 손실을 사용했으며, 속도를 위해 선택적인 DDIM 샘플링을 적용했습니다.
이 프로토타입은 텍스트와 복잡한 시간 사전조건을 활용하는 현대 비디오 디퓨전 모델의 전체 복잡성을 포착하지는 않지만, 명확한 개념적 기반을 제공합니다.
보다 깊은 개념적 이해를 위해 3Blue1Brown과 Welch Lab이 AI 이미지와 비디오가 작동하는 방식을 설명한 영상을 확인해 보세요.
전체 코드는 제 GitHub 저장소에서 확인할 수 있습니다.