Post

Computer Vision

Computer Vision
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Generative Vision

├── Image Generation
│     ├── T2I
│     ├── Editing
│     ├── Personalization
│     └── Inpainting
│
├── Video Generation
│     ├── T2V
│     ├── I2V
│     ├── Video Editing
│     ├── Video Personalization
│     └── Long Video
│
└── 3D Generation
      ├── NeRF
      ├── Gaussian
      └── 3D Assets

GAN

[논문정리] GAN

생성 모델의 목표는 실제와 구별하기 어려운 이미지를 만드는 것이다. GAN은 이를 위해 Generator와 Discriminator가 서로 경쟁하며 학습하는 구조를 제안했다. Generator는 진짜 같은 이미지를 생성하려고 하고 Discriminator는 실제 이미지와 생성된 이미지를 구분하려고 한다. Generator는 점점 더 현실적인 이미지를 생성하게 된다.

$D∗(x)=\frac{p_{data}(x)}{p_g(x)+p_{data}(x)}$

특정 이미지 x가 실제 데이터일 확률을 의미합니다. 만약 생성 분포가 실제 데이터 분포와 완전히 같아진다면

$p_g(x)=p_{data}(x)$

이 되고

$D∗(x)=\frac{1}{2}$

가 된다. 즉, 판별기는 더 이상 진짜와 가짜를 구분할 수 없는 상태이다.

GAN은 학습이 불안정하고 Mode Collapse와 같은 문제가 자주 발생한다. 이러한 한계를 해결하기 위해 등장한 것이 Diffusion Model입니다.

DDPM

[논문정리] Denoising Diffusion Probabilistic Models

Diffusion Model은 이미지를 한 번에 생성하는 대신 노이즈를 점진적으로 제거하며 이미지를 복원하는 방식을 사용한다.

먼저 원본 이미지에 조금씩 노이즈를 추가하여 완전한 Gaussian Noise를 만들고

$x_t = \sqrt{\bar{\alpha}_t}\,x_0 + \sqrt{1-\bar{\alpha}_t}\,\epsilon$

$x_0$ : 원본 이미지
$x_t$ : t번째 단계에서 노이즈가 추가된 이미지
$ϵ$ : Gaussian noise
$\bar{\alpha}_t$ : 원본 이미지가 얼마나 남아 있는지를 나타내는 계수

학습 과정에서는 이 노이즈를 얼마나 잘 예측하는지만 학습한다.

$L = \left| \epsilon - \epsilon_\theta(x_t, t) \right|^2$

$ϵ$ : 실제로 추가한 노이즈
$\epsilon_\theta(x_t, t)$ : 모델이 예측한 노이즈

이미지를 직접 생성하는 것이 아니라 현재 이미지에 포함된 노이즈를 예측한다. 추론 시에는 완전한 노이즈에서 시작하여 예측한 노이즈를 반복적으로 제거하면서 최종 이미지를 생성한다.

Image Personalization

Image Personalization의 목표는 특정 대상을 다양한 환경에서도 동일하게 유지하는 것이다.

초기 방법들은 새로운 토큰이나 LoRA를 학습하여 특정 대상을 기억하도록 만들었지만 추가 학습 시간이 필요하다는 단점이 있다. 이후 IP-Adapter와 InstantID는 이미지 특징을 Cross-Attention에 직접 전달하여 별도의 긴 학습 없이도 대상의 Identity를 유지할 수 있다.

Video

각 프레임은 이전 프레임의 영향을 받기 때문에 작은 오차도 시간이 지날수록 누적된다.

이미지 생성은

$P(x∣text)$

이라면

영상 생성은

$P(x_t \mid x_{<t}, \text{text})$

처럼 이전 프레임에 의존하게 된다.

영상에서는 Temporal Consistency가 중요하다. 동일한 사람의 얼굴이 조금씩 변하거나, 옷의 무늬가 바뀌거나, 배경이 깜빡이는 Flickering 현상이 자주 발생한다. 이전 출력의 오류가 이후 결과에 계속 누적되기 때문에 발생한다.

This post is licensed under CC BY 4.0 by the author.