[개요] 초해상도 이미지 합성을 위한 Transformer 길들이기(Taming)
Transformer의 표현성을 갖춘 컨볼루션 접근법(convolutional approaches)의 효율성
Created on March 2|Last edited on January 21
Comment
이번 리포트에서는 논문 "Taming Transformers for High-Resolution Image Synthesis"의 개요에 대해서 다루겠습니다. 이 논문은 고해상도 이미지 합성(high-resolution image synthesis)에 대한 transformer의 표현성을 사용하는 근본 과제에 대해 다룹니다. 제안된 접근 방식은 끊임없이 풍부한 이미지 구성요소의 구성으로 이미지를 표현하며, 결과적으로 transformer를 활용하여 고해상도 이미지 내에서 구성을 효율적으로 모델링합니다.
논문 | 프로젝트 페이지 | GitHub
Run set
1
서론
Convolutional Neural Networks (합성곱 신경망, CNNs)는 비전 작업(vision task)에 사용할 수 있는 믿을 수 있는 모델입니다. 이는 (kernel의 사용으로 인해) CNN이 강한 지역성 편향(locality bias)과 공유 가중치의 사용을 통한 공간적 불변성(spatial invariance)에 대한 편향을 (kernel이 전체 이미지를 스윕함을 보이기 때문입니다.
CNN과 비교하여, Transformer는 로컬 상호 작용을 우선 처리하는 귀납 편향(inductive bias)을 포함하고 있지 않으므로, 이는 입력 간의 복잡한 관계를 학습할 수 있습니다. 즉, 다시 말해 표현력을 높입니다. 그러나, 이는 장기적 시퀀스의 경우 계산 비용이 많이 듭니다. Transformer의 표현력 향상은 2차식으로(quadratically) 증가하는 계산 비용을 수반합니다.
Esser 등은 (2021) CNN의 효과성(effectiveness)과 transformer의 표현성(expressivity)을 결합하여 고해상도 이미지 합성을 설명합니다.
생성 모델(Generative Models)에 대한 두 단어
가 데이터세트 X를 설명하는 참 분포(true distribution)인 ,라 볼 때, 데이터 세트는 이 분포로부터의 유한한 샘플로 구성됩니다.
이 생성 작업은 를 만족하는 모델을 찾는 것입니다. 여기서 θ은 모델 parameter입니다.

여기서 저희는 생성 모델의 두 가지 주요 유형을 구별할 수 있습니다:
- 가능성 기반 (���시적) 모델(Likelihood-based (explicit) models): 여기서 이러한 모델은 데이터 분포의 “명시적인” parametric specification을 제공하며 다루기 쉬운 우도 함수(likelihood function)를 갖추고 있습니다. 예를 들어 Variational Autoencoders (변분 오토인코더, VAEs)와 자동 회귀 모델(autoregressive models) 등이 이에 해당합니다.
- 암시적 모델(Implicit models): 이러한 모델은 데이터 자체의 분포를 지정하지 않습니다. 그러나 대신 훈련 후 근본적인 데이터 분포에서의 샘플 추출을 목적으로 하는 확률 과정(stochastic process)을 정의합니다. 예를 들어 Generative Adversarial Models (적대적 생성 모델, GANs)이 있습니다.
이 논문을 보다 더 잘 이해하기 위한 핵심 아이디어는 다음과 같습니다:
- 암묵적으로 GAN은 평가하기 어려우며 일반적으로 데이터의 모든 “모드”를 커버할 수 없으므로 모델 붕괴(model collapse)에 더 취약합니다.
- 이제 더 큰 스케일의 GAN은 고품질 및 고화질의 이미지를 생성할 수 있습니다. 그러나, 이러한 모델의 샘플은 참 분포(true distribution)의 다양성을 완전히 담아내지 못한다는 점은 널리 알려져 있습니다. (출처)
- 가능성 기반(likelihood-based) 방법은 모델 비교를 용이하게 하고 처음 보는 데이터(unseen data)에 대한 일반화를 개선하는 훈련 데이터의 네거티브 로그 가능도(negative log-likelihood, NLL)를 최적화합니다. 그러나, 픽셀 공간에서의 가능도(likelihood)를 최적화하는 것은 까다롭고 계산 비용이 많이 듭니다.
- 자동 회귀 모델에서, 저희는 예시 를 시퀀스 로 표현할 수 있다고 가정합니다. 이 분포는 : 로 주어진 확률의 연쇄 법칙을 사용하여 조건부의 곱(a product of conditionals)으로 인수분해 됩니다. 모델은 이전의 기초하여 다음 를 예측합니다. 이미지 생성은 자동 회귀 시퀀스 생성 또는 변형 문제(transformational problem)로 성공적으로 캐스팅되었습니다. (출처)
Run set
1
제안된 방법에 대한 개요
이미지 생성에 transformer를 적용한 이전의 작업은 최대 크기 64x64의 이미지의 경우에는 좋은 결과를 보여주었으나 시퀀스 길이와 함께 2차식으로(quadratically) 증가하는 비용으로 인해 더 높은 해상도로 확장할 수는 없었습니다. 따라서 더 높은 해상도의 이미지를 합성하기 위해 transformer를 사용하려면 이미지의 의미(semantics)를 명확하게 표현해야 합니다. 픽셀 해상도의 2배 증가와 함께 픽셀의 수를 2차식으로(quadratically) 증가하기 때문에 픽셀 표현(pixel representation)사용은 가능하지 않습니다
벡터 양자화 Variational Autoencoder(VQ-VAE)
이 작업은 두 가지 주요 방식에서 기존 VAE와 다른 Vectored Quantized Variational Autoencoder(벡터 양자화 변분 오토인코더)에서 영감을 얻었습니다.
- 인코더 네트워크는 연속 코드(이미지의 잠재 표현)가 아닌 이산 코드(discrete codes)를 출력합니다.
- 정적 다변량 정규 분포(static multivariate normal distribution) 대신 사전 분포가 학습됩니다.
VAE에 대한 자세한 내용은 제 리포트 Towards Deep Generative Modeling with W&B를 참조하시기 바랍니다. 그러나 이 작업은 자동 회귀 생성 모델의 맥락에서 표현 학습(representation learning)이 얼마나 강력한지를 보여준 VQ-VAE2 의 보다 더 자연스러운 발전의 산물입니다.

VQ-VAE는 관측 결과(이미지)를 이산 잠재 변수(discrete latent variables)에 매핑하는 인코더(the)와 이러한 이산 변수(discrete variables)로부터의 관측 결과를 재구축하는 디코더()로 구성됩니다. 이들은 공유된 코드북(codebook)을 사용합니다. 이 코드북은 로 주어집니다. 여기서 는 코드북의 이산 코드 벡터(discrete code vectors)의 크기이며 는 각 코드, , 의 차원(dimensionality)입니다.
그림 2에서 나타난 바와 같이, 이미지 x는 를 통과해 를 생성합니다. 그런 다음 각 벡터 가 코드북에서 가장 가까운 코드 벡터의 인덱스로 대체되도록 코드 벡터 ei까지의 거리를 기반으로 양자화됩니다. 디코더에 의한 재구축의 경우에도 동일한 사항이 사용됩니다. 양자화(quantization)은 다음으로 주어집니다.
where
마지막으로 두 가지 간단한 조언을 전하겠습니다.
- 양자화는 미분이 불가능한(non-differentiable) 단계이므로, 엔드-투-엔드 훈련을 가능케 하려면 straight-through gradient estimator를 사용하여 재구축 오류(reconstruction error)의 gradient(기울기)가 디코더를 통해 인코더로 역전파(back-propagate)됩니다 (디코더에서 인코더로 gradient(기울기 복사).
- 재구축 손실 외에도, 코드북 손실(codebook loss) 및 커밋먼트 손실(commitment loss)이 사용됩니다. 코드북 손실은 선택된 코드 를 인코더의 출력에 가깝게 하며, 커밋먼트 손실은 인코더의 출력이 선택된 에 가까운 상태로 유지됩니다.
이산 잠재 표현(Discrete Latent Representation)이 작동하는 이유는 무엇인가요?
Transformer 길들이기와 어느 정도 유사한 VQ-VAE-2를 통한 다양한 고화질 이미지 생성 작업은 VQ-VAE2(VQ-VAE의 수정)를 사용하지만, 왜 이산 표현이 작동하는 걸까요?
이는 이미지의 JPEG 손실 압축(lossy compression)에서 영감을 얻었습니다. JPEG 인코딩은 지각되는 화질의 현저한 변화 없이 데이터의 80% 이상을 제거합니다. 둘째로, 노이즈가 적은 생성 모델을 훈련하는 것이 더 잘 작동하는 경향이 있습니다.
Taming Transformer

그림 3: Transformer 길들이기의 구조 디자인
시퀀스 길이를 짧게 유지하고 transformer의 표현성을 활용하기 위해 transformer 길들이기의 저자는 학습된 표현(VQ-VAE에서 영감을 받은)의 이산 코드북(discrete codebook)을 사용하며, 따라서 이미지 은 코드북 엔트리 의 공간 모음(spatial collection)에 의해 표현될 수 있으며 여기서 는 코드의 차원(dimensionality)입니다.
그림 3에서 나타난 바와 같이, 저자들은 원래의 VQ-VAE의 변형인 VQ-GAN을 사용했습니다. 따라서 discriminator(판별기)와 계속 손실(perpetual loss)을 사용하여 압축률을 높인 상태에서 좋은 지각 품질(perceptual quality)을 유지합니다.
두 단계 훈련 구조 디자인은 다음과 같습니다:
- VQ-GAN을 훈련하고 및 양자화된 코드북 학습합니다.
- 양자화된 코드북을 transformer에 대한 연속적인 입력(sequential input)으로 사용하여 자동 회귀 transformer 훈련합니다.
VQ-GAN 훈련
VQ-GAN은 패치 기반 판별기(patch-based discriminator) .와 함께 알려진 적대적 훈련 절차(adversarial training procedure)를 사용하여 훈련됩니다. 최적 압축 모델 을 찾기 위한 전체 목적은 다음과 같습니다.
여기서 는 adaptive weight(적응적 가중치)입니다.
이 훈련 절차는 잠재 코드를 풀 때 시퀀스 길이를 크게 감소시키며, 이에 따라 강력한 transformer 모델의 적용이 가능합니다.
사용자의 자체 VQ-GAN을 훈련하기 위해 이 문서의 공식 GitHub repo를 복제하여 종속 항목(dependencies)을 설치할 수 있습니다. 이 repository는 이미 Weights and Biases와 함께 구현되었으므로 자동으로 W&B 대시보드에 필요한 모든 메트릭을 가져올 수 있습니다. 저자들은 데이터 준비 단계에 대해 명확하게 언급하고 있습니다. VQ-GAN을 훈련하려면 다음을 수행합니다:
python main.py --base configs/faceshq_vqgan.yaml -t True --gpus 0,
선택한 데이터세트에 따라 다른 .yaml 파일을 선택할 수 있습니다.
Transformer 훈련
훈련된 인코더 및 디코더와 함께 이제 인코딩의 코드북 인덱스(codebook-incides)의 측면에서 이미지를 표현할 수 있습니다. 이미지 에 관한 이 양자화된 인코딩은 로 주어집니다. 코드북 Z에서 각 코드를 해당 인덱스로 교체하여 얻은 코드북의 인덱스 시퀀스 로 이 인코딩을 표현함으로써 , 는 를 만족합니다. 이제 시퀀스 를 해당 코드북 엔트리로 다시 매핑할 수 있으며, 디코딩된 이미지 . 를 얻을 수 있습니다.
이 시퀀스를 통해 이미지-생성을 자동회귀 다음 인덱스 예측(next index prediction)으로 공식화 할 수 있습니다. 인덱스(indices) , 가 주어지면 transformer는 가능한 다음 인덱스(indices), 즉, 의 분포를 예측하도록 학습하여 전체 표현의 가능성을 로 계산합니다. 따라서 목적 함수(objective function)은 데이터 표현의 로그-가능도(log-likelihood)를 최대화하는 것입니다. 여기 가능도에 대한 좋은 글이 있으니 참조하시기 바랍니다.
사용자가 생성 프로세스를 제어할 수 있는 경우 모든 이미지 생성 시스템이 유용합니다. 이미지 생성은 클래스 레이블(위 그림에 표시) 또는 부분 이미지와 같은 추가 정보에 영향을 받습니다. 이 정보 :가 주어진 경우 시퀀스의 가능성을 학습하는 것이 다음 작업입니다.
훈련된 VQ-GAN과 함께 configs/faceshq_transformer.yaml의 config(구성) 키의 체크포인트 경로 model.params.first_stage_config.params.ckpt_path를 조정한 후, 다음을 실행합니다:
python main.py --base configs/faceshq_transformer.yaml -t True --gpus 0,
초해상도 이미지 생성
시퀀스 길이의 증가와 더불어 transformer 훈련 비용의 2차적인 증가는 시퀀스 길이를 제한합니다. 따라서 메가픽셀 영역(megapixel reigme)에서 이미지를 생성하기 위해, 저자는 패치별로 작업하고 s의 길이를 훈련 중 최대로 실현 가능한 크기로 제한하기 위해 이미지를 잘라내야만(crop) 했습니다.
이미지를 샘플링하기 위해, 슬라이딩 윈도우(sliding-window) 방식으로 transformer가 사용되었습니다.

그림 4: 슬라이딩 어텐션 윈도우(sliding attention window)
VQ-GAN은 데이터세트의 통계치가 거의 공간적으로 불변하거나 공간 조건화 정보(spatial conditioning information)를 사용할 수 있는 한 사용 가능한 정보가 여전히 이미지를 충실하게 모델링하기에 충분하다는 것을 보장합니다.
아래에 표시된 미디어 패널에서 ⚙을 클릭한 뒤 슬라이더를 사용하여 슬라이딩 윈도우를 사용해 고해상도 이미지가 어떻게 합성되었는지를 시각화합니다.
Run set
1
결과
Run set
1
Run set
1
추가 읽을거리 및 결론
이 리포트의 목적은 독자들이 보다 쉽게 접근할 수 있도록 논문을 요약하는 것입니다. 정보를 전달하는 최선의 방법이라 생각해서 논문의 여러 구절을 인용했습니다.
다음은 여러분들이 흥미롭게 생각할 만한 추가적인 읽을거리입니다.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.