ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Image-to-Image] Tensor-to-Image: Image-to-Image Translation with Vision Transformers 번역 및 정리
    Paper review/Image-to-Image 2021. 12. 6. 21:50

    @ 굵은 글씨 중요한 내용, 빨간 글씨는 내가 추가한 내용

     

    https://arxiv.org/pdf/2110.08037.pdf

     

    • 정리: Image-to-Image 분야에 transformer를 적용 (+ ViT의 patch 아이디어)

     

    0. Abstract

    Transformer는 도입된 이후로 큰 주목을 받고 있다. Transformer는 NLP는 물론 Vision에서 사용될 수 있다는 것을 증명함에 따라 모든 영역을 차지하기 시작했다. 본 논문에서는 image-to-image translation을 위해 tensor-to-image에 맞게끔 설계된 모델에 기반한 Vision Transformer을 사용한다. Self-attention을 통해, 모델은 한 번의 수정도 없이 일반화하고 다양한 task에 적용할 수 있었다.

    더보기

    image to image translation

    image to image translation이란 이미지 데이터셋을 사용하여 input 이미지와 output 이미지를 mapping하는 것을 목표로 하는 생성모델의 한 분야

     

    1. Introduction

    Deep convolutional network는 대부분 vision task에서 SOTA를 달성했었다. 최근 image-to-image translation은 photo enhancement, object transfiguration, semantic segmentation 등 응용 분야가 다양해 관심이 높아지고 있다. Image-to-Image translation은 이미지를 다른 이미지로 mapping할 수 있는 곳에 적용할 수 있다. 대부분의 vision task에서 convolution network의 성공에 따라 image-to-image translation task에서도 cnn을 적용하였다. Image-to-Image translation task에 사용되는 대부분의 모델은 cnn을 기반으로 하는 Autoencoder, U-Net이다. 

    하지만 cnn layer는 local한 특성은 잘 포착하지만, global한 특징을 모델링하는 데에 어려움이 있다. 새로 등장한 개념인 attention, transformer, patch, patch embedding 등을 통해 이러한 문제를 해결할 수 있는 방법을 소개한다. Transformer는 input의 일부가 아닌 전체 input에 적용되는 self-attention을 사용한다. 모델은 모든 input을 인식하고 멀리 떨어진 영역의 관계도 포착할 수 있다. 이를 통해 self-attention 모델은 큰 그림을 보는 것이 모델이 정확한 결과를 도출하는 데에 도움이 되는 이러한 종류의 작업에서 좋은 성능을 보인다.

    본 연구에서는 self-atention 기반 image-to-image translation 방법론을 제안한다. 코드 및 예시는 https://github.com/YigitGunduc/tensor-to-image 에서 확인할 수 있다.

     

    2. Related work

    CNN을 이용한 다양한 방법이 image-to-image translation에 사용되어 왔다. 이전에는 image-to-image translation을 위해 주로 autoencoder가 사용되었다. Autoencoder에서 input은 encoder layer를 통과한다. Encoder는 bottleneck layer가 발생할 때까지 input을 다운샘플링한다. bottleneck에서 latent vector가 생성된다. 해당 벡터가 생성된 후, 프로세스는 원하는 이미지가 생성될 때까지 latent 벡터를 업샘플링하는 decoder가 수행되었다. 이러한 encoder-decoder의 문제는 input이 bottleneck을 통과할 때 output image 생성하는 동안 유용할 수 있는 대부분의 낮은 수준의 정보가 손실된다는 것이다.

    일부 성공적인 방법은 U-Net과 같은 접근 방식을 사용하여 이 문제를 극복했다. U-Net은 layer 간 skip connections을 추가한다. U-Net은 encoder를 decoder에 연결하는 skip connections 때문에 특히 성공적이다. 이를 통해 낮은 수준의 정보를 보존하고 출력으로 직접 전송할 수 있다. 

    Transformer는 기계 번역을 위해 제안되었고, 대부분 NLP task에서 SOTA를 달성하였다. 일반적으로 transformer 모델은 대형 텍스트 말뭉치에 대해 사전 학습을 받은 다음 특정 task에 맞게 미세 조정된다. 변압기는 Recurrent layers와 달리 메모리 부족을 겪지 않는다. 이는 독특한 self-attention 메커니즘과 Multilayer perceptrons(MLPs)을 활용하는 방식 덕분이다. Recurrent layers는 일정 시간이 지나면 토큰을 호출할 수 없다. CV에서 CNN과 함께 self-attention 기반 아키텍처와 transformer를 활용하려는 다양한 연구가 존재한다. Image GPT(IGPT)는 픽셀 시퀀스를 입력으로 받아 해당 픽셀 생성을 시도하는 transformer 기반 아키텍처이다. 모든 이미지를 패치로 분할하는 vision transformer와 달리 IGPT는 픽셀을 마치 단어의 토큰처럼 취급한다. IGPT는 픽셀을 입력으로 받아 텍스트 생성 모델과 유사한 대상 픽셀을 출력한다. 


    Vision Transformer(ViT)는 Transformer encoder와 patch embedding을 사용하여 이미지 분류를 수행하는 방법론이다. ViT는 이미지를 patch로 분할하여 flatten한 후 저차원 선형 embedding을 생성하는 방식으로 작동한다. Embedding에 positional embedding을 추가하여 transformer encoder에 input한다. ViT는 큰 dataset에 대해 학습 후 classification을 위해 작은 dataset에서 미세조정한다. Vit는 ImageNet에서 88.55%의 정확도를 달성할 수 있었다. 

    본 연구는 이미지를 이해하고 생성하는 독특한 방식을 갖는다. 이미지 이해를 위해 Vision Transformer를 사용하고, 이미지 생성을 위해 convolution layer를 사용한다.

     

    3. Method

    3.1 Patches and Patch Encoding

    Tensor-to-Image 모델은 이미지를 이해하기 위해 Vit와 유사한 Patch 및 Patch embedding을 사용한다. Input이 모델이 전달되면 patch로 분할한다 (patch 수는 이미지 및 patch 크기에 따라 다르며, patch 수는 다음 공식을 따른다).

    patch 수

    모든 patch는 1D로 flatten된다. 또한 학습 가능한 embedding을 사용하여 patch를 latent vectors로 변환했다. Latent vector가 생성된 후 image에서 추출된 patch의 위치 정보 보존을 위해 1D 학습 가능 positional embedding이 추가된다.

     

    3.2 Transformer Layers

    Transformer layer는 동일한 layer N개의 stack으로 구성된다. 각 layer에는 multi-head self-attention과 FFN(Feed Forward Network)가 있다. Layer normalization은 각 layer 다음에 적용된다. 즉, Encoder의 output은 LayerNorm(out + FFN(out)), out=LayerNorm(x+multi-head self-attention(x))이다.

     

    3.3 Multi-head attention

    Multi-head attention (MHA)는 독립적인 scaled dot-product attention을 계산하는 동일한 head를 여러개 포함한다. 따라서 각 head는 input의 다른 position에 attend할 수 있다. scaled dot-product attention 계산 후 여러개의 독립적인 head를 연결(concat)하고, W^O가중치를 곱한다.

    본 연구에서는 표준 Transformer와 동일한 attention 수식을 사용한다.

    여기서 Q, K, V는 각각 query, key, value 값을 의미한다.
    Attention 연산이 완료된 후 output을 정규화 하여 FFN를 통해 최종 output을 출력한다.

     

    3.4 Upsampling

    Transformer Encoder를 upsampling하기 위해 residual layers와 transpose convolution을 사용한다. Transformer encoder의 output은 image를 생성하기 위해 transpose convolution에 전달된다. 모든 transpose convolution 사이에 residual block이 배치된다. transposed convolution 혹은 residual block 후의 layer는 batch normalization 및 ReLU가 적용된다.

     

    3.5 Architecture

    아래는 제안된 아키텍처이다. 이미지는 patch로 분할되어 2D image를 embedded feature로 변환하는 patch encoder를 통과한다. Output embedding vector는 N개의 layer가 stacked된 transformer encoder로 전달된다. 여기에서 Transformer는 Image를 포함한 context vector를 understand 해야한다. Transformer encoder output은 residual block -> transpose convolution ->  LeakyReLU 및 batch normalization이 수행되는 stack으로 전달(그림 상에서는 residual이 나중에 이루어짐,,? -> 코드확인 필요).

     

    반복 layer의 수는 image의 복잡도에 따라 달라진다. 지막 output 은 conv layer로 전달되어 결과 이미지를 생성한다. 코드 및 예시는 https://github.com/YigitGunduc/tensor-to-image에서 확인할 수 있다.

     

    4. Experiments

    4.1 Generator Architectures

    실험은 다양한 유형의 Generator로 수행된다. 실험의 목적은 최상의 아키텍처를 찾는 것뿐만 아니라 개선의 여지가 있는 결함 있는 아키텍처를 식별하는 것이다. 본 논문에서는 3개의 generator를 사용한다. 

     

    3가지의 generator를 비교한 결과 3장에서 설명한 모델 (generator C)에서 최상의 성능을 얻을 수 있음을 확인했다. Generator A는 선명하지 않고 현실적이지 못한 결과를 생성한다. Generator B는 손상되거나 시각적으로 인위적인 이미지를 생성하고, 추가로 다른 generator에 비해 많은 data를 필요로 한다. Generator C는 정확하고 현실적인 결과를 생성하며 제한된 양의 data로 학습할 수 있었다. 따라서 모든 실험은 generator C를 통해 수행한다.

     

    4.2 Evaluation Metrics

    모델은 Inception score(IS), Frechet Inception Distance(FID), Structural Similarity(SSIM) 세개의 평가 지표에 대해 평가된다.

    IS은 이미지 품질 및 이미지 diversity에 대한 지표이다 (이미지가 특정 object처럼 보이는지, 다양한 object가 생성되고 있는지 평가).

    FID는 평가 생성 모델의 거리에 대한 지표이다 (target 이미지와 생성 이미지 사이의 거리 계산 -> 낮을수록 좋은 품질의 이미지를 의미).

    SSIM는 이미지 유사성을 척도로 한다 (입력 이미지와 reference를 비교, 최대값은 1).

     

     

    4.3 Dataset

    4.3.1 Oxford-IIIT Pet Dataset

    4.3.2 RGB-D Dataset

    4.3.3 Cityscapes Dataset

     

    4.4 Comparison with Other Architectures

    Frechet Inception Distance(FID), Structural Similarity(SSIM), Inceptions Score(IS) 등 이미지 평가 지표를 사용하여 모델을 평가하고 다른 모델과 비교한다. 우리는 대부분의 image-to-image translation 및 image segmentation에 널리 사용되는 U-net과 autoencoder와 비교한다. 다음 표는 모델 별 생성된 이미지의 품질 비교 결과이다.

    표의 결과를 통해 평가 좋은 성능을 보인다는 것을 확인할 수 있다 (FID 결과와 아래 그림을 매칭하며 확인하면 해당 지표가 결과를 잘 설명한다는 것을 알 수 있다). 아래 그림을 통해서도 비교 결과를 확인할 수 있다.

    제안된 모델은 두 아키텍처에 비해 우수하다는 것을 확인할 수 있었다. 평가 지표 3가지에 대해 모두 제안된 모델이 높은 성능을 보인다.

     

     

    5. Conclusion

    본 논문은 unique한 generator라는 점에서 특별하다. 이전의 다른 방법들과 달리 image understanding을 위해 vision transformer를 사용하고, image generation을 위해 convolutional layer를 사용한다. 일반화 성능을 확인하기 위해 3가지 dataset에 대해 적용하여 autoencoder와 u-net과 같은 방법과 비교를 수행하였다. 코드와 예시는 https://github.com/YigitGunduc/tensor-to-image에서 확인할 수 있다.

     

    비교 결과 3가지 dataset에 대해 수정 없이 본 모델의 성능이 매우 높으며, output image가 target image 품질에 가까운 것을 확인할 수 있었다 (그림 2,3,4를 통해 확인 가능).

     

    본 연구를 통해 transformer가 훨씬 더 넓은 응용 범위를 가지며, image-to-image translation에 완벽하게 적합하다는 것을 보여준다. 3개의 dataset에 대해 U-net과 autoencoder의 비교를 수행한 결과, 본 방법론이 우수하다는 것을 확인한다.

     

    My discussion

    IGPT 읽기 (하나의 픽셀을 token으로 취급 -> 200x200이미지면 40000 입력????)

    댓글

Designed by Tistory.