본문 바로가기
모델 논문, 학습

Vision Transformer(ViT) 논문 리뷰(직역)

by 바다의 공간 2025. 2. 18.

▶ 논문 사이트 [ https://arxiv.org/pdf/2010.11929.pdf ]

 


 

Transformer는 NLP에서만 다룬다고 생각을했었는데 VISION에서도 Transformer이나왔다고 한다.

사실 AI는 가장 빠르게 변화하는 분야이기때문에 좀 많이 찾아보고 해야되는데 취직이 먼저아닐까하는 생각때문에 못했던것같다.

 

최신모델을 다뤄보면서 가장 대중적으로 사용하는 모델도 관심을 갖기 위해서 Vision Transformer을 리뷰해 보려고 한다.


Visual Transformer (ViT)

 

- 이미지인식을 위해서 Transformer 모델을 적용한 구조입니다.

- 기존 CNN 대신 이미지를 패치(조각)으로 나누고 이를 Transformer에 입력하는 방식으로 작동합니다.


논문리뷰

Transformer구조는 자연어 처리에서 표준 아키텍쳐로 자리 잡았지만

CV에서는 아직 활용이 제한적이다. 현재 비전 분야에서는 어텐션(attention)을 합성곱 신경망(CNN)과 함께 사용하거나 CNN의 일부 구성요소를 대체하는 방식으로 적용하는경우가 많다.

 

우리는 CNN에 대한 의존이 필수적이지 않으며 이미지 패치를 시퀀스로 변환한 후 순수한 Transformer을 적용하는 것만으로도 이미지 분류 작업에서 뛰어난 성능을 발휘할 수 있음을 보인다.

 

특히 대규모 데이터셋에서 사전학습한 후 중간 규모 또는 소규모 이미지 인식 벤치마크(ImeageNet, CIFAR-100, VTAB 등)에 전이학습을 하면 최첨단 CNN모델들과 비교해도 우수한 성능을 보인다. 또한 학습에 필요한 계산량이 CNN보다 훨씬 적다는 장점이 있다.

 

더보기

▶ Abstract만 읽어보아도 심장이 뛰듯이 흥미로운 단어들이 툭툭 나와서 깜짝놀랐다

가장 첫번째로는 비전에서 가장 기본이라고 할 수 있는 CNN에 대한 의존이 필수적이지 않다는 점

두번째로는 Pre tranin한 후 이미지 인식벤치마크에 전이학습을 하면 CNN모델과 비교해도 될 정도로 우수한 성능

세번째로는 학습에 필요한 계산량이 CNN보다 훨씬 적다는 점 

 

이렇게 세가지였다.

 

여기서 전이학습이라는 뜻을 모르겠어서 찾아보니

전이학습이란 한 데이터셋에서 학습한 모델을 다른 작업이나 데이터셋에 적용하는 기법이라고 합니다.

 

여기서 포인트는 ViT가 엄청 큰 데이터셋(이미지 양이 매우 많은)에서 먼저 학습을 한 후 작은 데이터셋(ImeageNet, CIFAR-100)에 적용한다는것이다.

 

즉! 복습개념이기때문에  성능이 좋다는것입니다.

👉 처음부터 다시 학습하는 게 아니라, 이미 학습된 모델을 가져와서 새로운 데이터셋에 맞게 조금만 수정하는 것🔥

 


논문 1장 : 

Self-Attention기반의 아키텍처, 특히 trainformer는 자연어처리에서 표준 모델로 자리잡았고

이 분야에서 일반적인 접근 방식은 대규모 텍스트 데이터셋에서 먼저 학습한 후 작은 작업별 데이터셋에서 파인튜닝하는것이다.

Transformer는 뛰어난 계산 효율성과 확장성 덕분에 1000억개 이상의 파라미터를 가진 초대형 모델도 학습할 수 있게 되었으며 모델과 데이터셋의 크기가 커질 수 있도록 성능이 계속 향상되고 있다.

 

하지만 컴퓨터비전분야에서는 여전히 합성공 신경망이 주된 아키텍쳐로 사용되고 있다.

NLP에서 TRANSFORMER가 성공한 것을 보고 여러 연구에서는 CNN과 Self-attention을 결합하려는 시도를 하고 있으며 일부 연구에서는 CNN을 완전히 제거하고 SELF-ATTENTION만 사용하는 방법도 실험하고 있다.

 

그러나 이러한 모델들은 특정한 어텐션 패턴을 사용해야하므로 최신 하드웨어에서 효과적으로 확장되지 못하는 문제가 있다.

따라서 대규모 이미지 인식 작업에서는 여전히 RestNet과 CNN기반 모델이 최고 성능을 유지하고 있다.

 

이 논문에서는 NLP에서 Transformer가 성공적으로 확장된 것 처럼, 최소한이 변경만으로 Transformer를 직접 이미지에 적용하는 방법을 연구한다.

 

이를 위해 이미지를 여러개의 작은 패치로 나눈후 각 패치를 선형 변환하여 Transformer의 입력으로 제공한다. 이렇게 하면 NLP에서 토큰을 입력하는 방식과 동일한 형태로 이미지처리를 할 수 있다.

 

우리는 이 모델을 지도학습방식으로 학습하여 이미지분류작업을 수행한다.

 

중간 규모의 데이터셋(ex.ImageNet)에서 강한 정규화 없이 학습할 경우, 이러한 모델들은 비슷한 크기의 ResNet보다 정확도가 몇 퍼센트 낮다.

 

이처럼 다소 실망스러운 결과는 어느정도 예상했다.

Transformer는 CNN이 가진 일부 귀납적 바이어스, 즉 변환 등가성과 지역성 등의 특성이 부족하기 때문이다.

따라서 데이터가 충분하지 않으면 일반화 성능이 떨어진다.

 

그러나 더 큰 데이터셋(1,400만~3억개이미지)에서 학습하면 결과가 달라진다.

우리는 대규모 학습이 귀납적 바이어스를 능가한다는것을 발견했다.

우리의 VIT는 충분히 큰 규모에서 사전학습 후 데이터가 적은 작업에 전이학습하면 매우 우수한 성능을 발휘했다.

 

특히 공개 데이터셋인 ImeageNET-21K 또는 내부 데이터셋인 JET-300M에서 사전 학습했을때, ViT는 여러 이미지 인식 벤치마크에서 최신(sota)모델과 비슷하거나 이를 능가하는 성능을 기록했다.

 

특히 최상의 모델성능은 아래와 같다.

 

  • ImageNet: 88.55% 정확도
  • ImageNet-ReaL: 90.72% 정확도
  • CIFAR-100: 94.55% 정확도
  • VTAB(19개 작업 평균): 77.63% 정확도

2. 관련 연구

Self-attention을 이미지를 처리하는 데 그대로 적용하면, 각 픽셀이 모든 다른 픽셀을 참조해야 한다.


픽셀 수의 제곱에 비례하는 비용이 들기 때문에, 이는 현실적인 입력 크기에서 확장될 수 없다.

 

따라서, 이미지 처리에서 Transformer를 적용하기 위해 여러 근사 방법이 과거에 시도되었다.


Parmar et al.(2018)은 각 쿼리 픽셀에 대해 전역적으로 적용하는 대신, 국소 영역(local neighborhoods)에서만 Self-attention을 적용하는 방법을 사용했다.


이러한 국소 다중 헤드 점곱(Self-Attention) 블록합성곱을 완전히 대체할 수 있다(Hu et al., 2019; Ramachandran et al., 2019; Zhao et al., 2020). 

 

다른 연구에서는 Sparse Transformers(Child et al., 2019) 가 전역 Self-attention을 확장 가능하도록 근사하여 이미지에 적용할 수 있도록 했다.

 

또 다른 방법으로는, 어텐션을 다양한 크기의 블록(block) 단위로 적용하는 방식이 있다(Weissenborn et al., 2019).


극단적인 경우, 개별 축(axis) 방향으로만 어텐션을 적용할 수도 있다(Ho et al., 2019; Wang et al., 2020a).

이러한 특수한 어텐션 아키텍처들은 컴퓨터 비전 작업에서 유망한 결과를 보였지만,
하드웨어 가속기에서 효율적으로 구현하려면 복잡한 엔지니어링이 필요하다.

 

또한 합성곱 신경망과 SELF-ATTENTION을 결합하는 방법에 대한 많은 연구가 이루어졌다.

예를들어 이미지분류에서 특징맵을 강화하는 방식이 있다.

 

또한 CNN의 출력을 SELF-ATTENTION을 사용해 추가적으로 처리하는 방식도 연구되었다.

이러한 접근법은 다음과 같은 다양한 작업에서 사용되었다.

 

  • 객체 탐지(object detection) (Hu et al., 2018; Carion et al., 2020)
  • 비디오 처리(video processing) (Wang et al., 2018; Sun et al., 2019)
  • 이미지 분류(image classification) (Wu et al., 2020)
  • 비지도 객체 탐색(unsupervised object discovery) (Locatello et al., 2020)
  • 텍스트-비전 통합 작업(unified text-vision tasks) (Chen et al., 2020c; Lu et al., 2019; Li et al., 2019)

 

또 다른 최근 관련 모델은 igpt(image GPT)이다.

이 모델은 이미지 해상도와 색 공간을 축소한 후, Transformer을 이미지 픽셀에 적용하는 방식을 사용한다.

 

그렇게 학습된 표현은 분류성능을 평가하기 위해 선형탐색하거나 파인튜닝할 수 있다.

이를통해서 iGPT는 ImageNet에서 최대 72%의 정확도를 달성했다.

더보기

지속적으로 나오는 선형탐색.

🔹 선형 탐색(Linear Probing)이란?

미리 학습된 모델의 특징(Feature)을 고정한 상태에서, 간단한 선형 분류기(Linear Classifier)를 훈련시켜 성능을 평가하는 방법이야.

🔹 왜 사용하지?

  • 사전 학습된 모델이 얼마나 좋은 특징(feature)을 학습했는지 평가하기 위해
  • 새로운 데이터셋에서 빠르게 성능을 측정할 수 있도록

모델이 지도학습된 모델이니까 선형탐색으로 평가를하는것임

 

우리의 연구는 표준 ImageNet 데이터셋보다 더 큰 규모에서 이미지 인식을 탐구하는 노문들의 증가하는 모음에 추가되는 연구이다. 추가적인 데이터 소스를 사용하면 표준 벤치마크에서 최신성능을 달성할 수 있다.

 

또한 sun et el은 CNN성능이 데이터셋 크기에 따라 어떻게 확장되는지연구하였으며, 

Kolesnikov et al.(2020)과 Djolonga et al.(2020)은 ImageNet-21k 및 JFT-300M과 같은 대규모 데이터셋에서 CNN 전이 학습(transfer learning)을 경험적으로 탐구하였다.

 

우리는 이 두 데이터셋(ImageNet-21k, JFT-300M)에 초점을 맞추지만, 이전 연구에서 사용된 ResNet 기반 모델 대신 Transformer를 학습한다.


Published as a conference paper at ICLR 2021 ( ICLR 2021 학술대회 논문으로 게재됨.)

Figure1

 

그림1 : 모델 개요

우리는 이미지를 고정된 크기의 패치로 분할하고 각 패치를 선형 임베딩한 후 위치 임베딩을 추가하여 벡터 시퀀스를 생성한다.

이 벡터 시퀀스를 표준 Transformer 인코더에 입력한다.

 

분류를 수행하기 위해서 우리는 기존방식처럼 학습 가능한 분류토큰을 시퀀스에 추가한다.

transformer인코더의 그림은 Vaswani et al.(2017) 에서 영감을 얻었다.

 

더보기

🔹 임베딩(Embedding)이란?

임베딩은 입력 데이터를 숫자 벡터(고정된 차원의 수치 표현)로 변환하는 과정.
즉, 컴퓨터가 이해할 수 있도록 데이터를 변환하는 것! 

 

🔹 다시 정리하면?

이미지는 픽셀 값(RGB)으로 이루어져 있음 → 하지만 Transformer는 벡터 시퀀스를 입력으로 받음
✅ 그래서 이미지를 작은 조각(패치)으로 나누고, 각 패치를 숫자 벡터(임베딩)로 변환
이 숫자 벡터가 Transformer가 이해할 수 있는 형태가 되는 것!

 

 


3. 매서드

모델 설계에서 우리는 원래의 Transformer를 최대한 그대로 따른다.

이렇게 의도적으로 단순한 설정을 사용하는 장점은

확장 가능한 NLP Transformer 아키텍쳐와 그 효율적인 구현을 거의 그대로 사용할 수 있다는 것이다.


3-1. VISION TRANSFORMER (ViT)

모델 개요는 그림 1 에 나타나 있다.

기본 Transformer는 1D 토큰 임베딩 시퀀스를 입력으로 받는다.
2D 이미지를 처리하기 위해, 이미지를 2D 패치를 평탄화한 시퀀스로 변환한다:

 

더보기

 

  • 는 원본 이미지의 해상도,
  • CC 는 채널 수,
  • (P,P)(P, P) 는 각 이미지 패치의 해상도,
  • N=HWP2N = \frac{HW}{P^2} 는 생성된 패치의 개수이며, Transformer의 입력 시퀀스 길이로도 작용한다.

 

Transformer는 모든 레이어에서 일정한 크기의 잠재 벡터(latent vector) 크기 DD 를 사용하므로,
패치를 평탄화한 후 학습 가능한 선형 변환(trainable linear projection) 을 통해 DD 차원으로 매핑한다 (식 1).


이 선형 변환의 출력을 패치 임베딩(patch embeddings) 이라고 한다.

BERT의 [class] 토큰 과 유사하게, 우리는 학습 가능한 임베딩을 패치 임베딩 시퀀스 앞에 추가한다:

 

이 토큰의 Transformer 인코더 최종 출력은 이미지 표현 yy 로 사용된다 (식 4).

사전 학습(pre-training)과 미세 조정(fine-tuning) 모두에서 분류 헤드(classification head) 가 연결된다.

  • 사전 학습 시, 분류 헤드는 1개의 은닉층(hidden layer)을 가진 MLP 로 구현된다.
  • 미세 조정 시, 분류 헤드는 단일 선형 층(single linear layer) 로 구현된다.

위치 정보를 유지하기 위해 패치 임베딩에 위치 임베딩(position embeddings)을 추가한다.
우리는 표준 학습 가능한 1D 위치 임베딩 을 사용하며,
더 발전된 2D 위치 임베딩 을 사용해도 성능 향상은 크지 않았다 (부록 D.4 참고).

이렇게 생성된 임베딩 벡터 시퀀스가 Transformer 인코더의 입력이 된다.

 

Transformer 인코더(Vaswani et al., 2017)는 다중 헤드 자기어텐션(Multi-Head Self-Attention, MSA)
MLP 블록 이 교대로 쌓인 구조를 가진다 (식 2, 3).


각 블록 앞에는 LayerNorm (LN) 이 적용되며,
각 블록 뒤에는 잔차 연결(residual connection) 이 추가된다 (Wang et al., 2019; Baevski & Auli, 2019).

 


3-1귀납적 바이어스

우리는 Vision Transformer(ViT) 가 CNN보다 이미지에 특화된 귀납적 바이어스(inductive bias)가 훨씬 적다는 점을 지적한다.

CNN에서는 지역성, 2차원 이웃 구조, 변환 등가성이 모델 전체에서 각 레이어에 내재되어있다.

반면 VIT에서는 MLP레이어만 지역적이고 변환 등가성을 가지며, SELF-ATTENTION레이어는 전역적이다.

또한 2차원 이웃 구조는 거의 사용되지 않는다.

 

모델의 초반부에서 이미지를 패치로 나눌 때 한 번 사용되며, 파인튜닝(미세조정)시 해상도가 다른 이미지에 맞춰 위치 임베딩을 조절할 때 사용된다.

그 외에는 초기화시 위치 임베딩은 패치의 2D 위치 정보가 포함되지 않는다.

즉 모든 패치 간의 공간적 관계는 처음부터 학습해야한다.

더보기

❓ 질문 1:

ViT에서 Self-Attention 레이어가 전역적(global)이라는 게 무슨 의미일까?

✅ 답변:

  • CNN은 합성곱 필터가 국소적인(local) 영역에서만 연산을 수행해. (예: 한 번에 3×3 영역만 보는 필터)
  • 하지만 Self-Attention은 한 번에 모든 패치를 참조할 수 있어!
    → 즉, ViT에서는 각 패치가 이미지 전체의 다른 패치들과 직접 상호작용 가능
    → 그래서 전역적(global) 이라고 표현한 거야.

📌 한 줄 요약: CNN은 작은 부분만 보지만, ViT는 한 번에 전체 이미지를 고려할 수 있음!


❓ 질문 2:

ViT의 위치 임베딩(position embeddings)은 초기에는 2D 위치 정보를 포함하지 않음.
그럼 패치 간의 공간적 관계(spatial relations)는 어떻게 학습될까?

✅ 답변:

  • 처음에는 위치 정보가 전혀 없는 상태에서 시작해.
  • 대신, 모델이 학습하면서 패치 간의 상대적 위치 관계를 스스로 배워야 해.
  • 예를 들어, 같은 물체에 속하는 패치들은 유사한 특징을 공유하는 경향이 있어서,
    모델이 점점 패치 간 관계를 학습하게 되는 것!

📌 한 줄 요약: ViT는 위치 정보를 직접 갖고 시작하지 않지만, 학습을 통해 패치 간 관계를 익히게 됨!


❓ 질문 3:

ViT에서는 2차원 이웃 구조(2D neighborhood structure)를 거의 사용하지 않지만, 특정한 두 가지 경우에는 사용된다고 했어. 어떤 경우일까?

✅ 답변:

1️⃣ 이미지를 패치로 나눌 때

  • ViT는 이미지를 고정된 크기의 패치(예: 16×16)로 나누면서 2D 구조를 반영함

2️⃣ 미세 조정(fine-tuning) 시, 해상도가 다른 이미지에 맞춰 위치 임베딩을 조정할 때

  • 학습된 위치 임베딩을 새로운 해상도의 이미지에 맞게 조정해야 할 때, 2D 공간적 정보를 고려함

📌 한 줄 요약: ViT는 기본적으로 2D 공간 정보를 잘 활용하지 않지만, "이미지 패치 나누기"와 "미세 조정 시 위치 임베딩 조정" 단계에서는 사용됨!

3-1.하이브리드 아키텍처

이미지 패치를 그대로 사용하는 것 대신, 입력 시퀀스를 CNN의 특징맵(피쳐맵)에서 생성할수도 있다.

이 하이브리드 모델에서는 패치 임베딩 변환을 CNN특징 맵에서 추출된 패치에 적용한다.

 

특히 패치의 공간 크기가  1*1인경우 입력 시퀀스는 특징 맵의 공간 차원을 평탄화(FLATTENING)하고  TRANSFORMER의 입력 차원으로 변환(Projection)하는것만으로 얻어진다.

 

분류 입력 임베딩과 위치 임베딩은 앞서 설명한대로 추가된다.

 

3-2.미세조정 및 고해상도

일반적으로 ViT는 대규모 데이터셋에서 사전훈련을 한 후 더 작은 다운스트림(하위)작업에 대해 미세 조정을 수행한다.

이를 위해 사전 훈련된 예측 헤드를 제거하고 D*K크기의 피드포워드 계층을 추가하는데 여기서 K는 다운스트림 작업에서의 클래스 개수이며 이 계층은 0으로 초기화된다.

 

사전 훈려보다 높은 해상도로 미세조정을 수행하는것이 유리한 경우가 많다. 

더 높은 해상도의 이미지를 입력할 때 패치크기는 동일하게 유지되므로 결과적으로 더 긴 시퀀스 길이를 가지게 된다. 

비전 트렌스포머는 메모리 제한 내의 임의의 시퀀스 길이를 처리할 수 있지만 사전 훈련된 임베딩은 의미가 없을 수 있다.

따라서 우리는원분 이미지 내 위치에 따라 사전 훈련된 위치 임베딩을 2D보간을 통해 조정한다.

 

이러한 해상도 조정 및 패치 추출과정이 ViT에서 2D이미지 구조에 대한 귀납적 편향이 수동적으로 적용되는 유일한 지점이라는 점에 유의해야한다.

 

더보기

 

해당 문장에서 말하는 핵심은 Vision Transformer(ViT)가 기본적으로 2D 이미지의 구조적 정보를 직접 활용하지 않는다는 점이다. 하지만 해상도 조정(resolution adjustment)과 패치 추출(patch extraction) 과정에서만 2D 이미지의 공간적 특성을 반영하는 방법이 추가적으로 적용된다는 뜻이다.

좀 더 풀어서 설명하면:

  1. ViT는 원래 CNN과 다르게 2D 구조를 직접 활용하지 않음
    • CNN(합성곱 신경망)은 이미지의 공간적 특성을 직접 반영하는 필터(커널)를 사용하여 지역적인 특징을 학습한다.
    • 반면, ViT는 이미지를 작은 패치들(patches)로 잘라서 시퀀스(순차적인 데이터)처럼 다루며, Transformer 모델을 통해 학습한다.
    • 즉, ViT 자체는 2D 이미지의 공간적인 관계를 특별히 고려하지 않고, 패치를 하나의 독립적인 토큰(token)처럼 처리한다.
  2. 하지만 해상도 조정과 패치 추출 과정에서는 2D 구조를 반영할 필요가 있음
    • 미세 조정(fine-tuning) 시, 해상도를 높이면 이미지의 크기가 커지므로, 더 많은 패치가 생성됨 → 결과적으로 더 긴 시퀀스가 됨.
    • 하지만 사전 훈련된 위치 임베딩(position embeddings) 은 기존의 이미지 크기에 맞춰져 있기 때문에, 새로운 해상도에서도 의미 있게 사용하려면 보정이 필요하다.
    • 이를 위해 2D 보간(interpolation) 을 적용하여, 새로운 이미지 크기에 맞게 위치 임베딩을 조정함.
    • 패치 추출 과정도 기본적으로 이미지를 작은 정사각형 패치로 나누는 방식이므로, 이는 2D 구조에 대한 사전 정보(귀납적 편향, inductive bias)가 적용되는 유일한 과정이라고 할 수 있음.

결론:

ViT는 CNN처럼 직접적으로 2D 공간 정보를 활용하지 않지만,
패치 추출 과정에서는 2D 이미지를 작은 조각으로 나누는 규칙이 적용됨
위치 임베딩 보간 시, 원본 이미지의 공간적 위치를 고려하여 조정됨

이 두 과정이 ViT에서 유일하게 2D 이미지의 구조적 정보를 반영하는 지점이라는 의미다!

결국 ViT는 2D이미지를 직접 활용하지는 않는다는 점은 알고있다.

그냥 트랜스포머만 쓰면 1D 시퀀스(텍스트 같은 데이터)에 특화된 구조라 이미지 공간적 특징을 제대로 활용하기 어렵다는문제가 있다. 그래서 이미지를 패치로 나누고 해상도가 달라질대 위치 정보도 조정(보간)해서 VIT가 2D이미지를 더 학습 잘 할 수 있도록 도와주는것이다.


4. 실험

우리는 ResNet, Vision, Transformer 그리고 하이브리드 모델의 표현 학습 능력을 평가한다.

각 모델이 요구하는 데이터 규모를 이해하기 위해 다양한 크기의 데이터셋에서 사전 훈련을 진행하고 여러 벤치마크 작업을 평가한다.

 

모델의 사전훈련에 필요한 계산 비용을 고려할때, vit는 매우 우수한 성능을 보이고 대부분의 인식 벤치마크에서 최첨단 성능을 달성하면서도 더 낮은 사전 훈련비용을 요구한다.

 

마지막으로 우리는 소규모의 자기지도학습(self-supervision)실험을 수행하였으며, 자기 지도 학습 된 vit가 향후 가능성이 높음을 확인하였다.

 

4-1 설정

데이터셋

모델의 확장 가능성을 탐구하기 위해 우리는 다음과 같은 데이터셋을 사용한다.

 

  • ILSVRC-2012 ImageNet: 1,000개의 클래스와 130만 개의 이미지로 구성된 데이터셋(이하 "ImageNet"으로 언급).
  • ImageNet-21k: ImageNet의 상위 데이터셋으로, 21,000개의 클래스와 1,400만 개의 이미지 포함 (Deng et al., 2009).
  • JFT: 18,000개의 클래스와 3억 300만 개의 고해상도 이미지를 포함하는 대규모 데이터셋 (Sun et al., 2017).

 

우리는 Kolesnikov et al. (2020) 의 방식을 따라, 사전 훈련 데이터셋에서 다운스트림 테스트 세트와 중복되는 데이터를 제거(de-duplicate)하였다. (오버피팅 방지인듯하다)

사전 훈련된 모델은 여러 벤치마크 작업에 전이(transfer)하여 평가하며, 사용된 벤치마크는 다음과 같다:

  • ImageNet: 기존 검증 라벨(validation labels)과 정제된 ReaL 라벨(Beyer et al., 2020)로 평가.
  • CIFAR-10/100: (Krizhevsky, 2009)
  • Oxford-IIIT Pets: (Parkhi et al., 2012)
  • Oxford Flowers-102: (Nilsback & Zisserman, 2008)

이들 데이터셋에 대한 전처리(pre-processing) 과정은 Kolesnikov et al. (2020) 의 방식을 따른다.

 


모델 변경(Model Variants)

우리는 BERT에서 사용된 설정을 기반으로 ViT모델 구성을 정의하며 이에 대한 요약은 TABLE1에 제시되어있다.

 

  • "Base" 및 "Large" 모델은 BERT에서 직접 가져온 구성이며,
  • 여기에 더 큰 "Huge" 모델을 추가하였다.

이후 설명에는 모델 크기와 입력 패치 크기를 간단한 표기법으로 나타낸다.

예를들어 ViT는 LARGE모델변경 + 16*16 크기의 입력 패치를 의미한다.

 

주의할점

TRANSFORMER의 시퀀스 길이는 패치 크기의 제곱에 반비례 하므로

즉 더 작은 패치 크기를 사용할수록 시퀀스 길이가 길어지고 연산량이 증가하여 계산 비용이 더 많이 소모됨.

 

기본CNN 및 하이브리드 모델 

기본모델로 RESNET을 사용하지만 Batch Normalization (Ioffe & Szegedy, 2015) 대신 Group Normalization (Wu & He, 2018) 을 적용하고, 표준화된 합성곱(Standardized Convolutions, Qiao et al., 2019) 을 사용하였다.

이러한 수정사항은 전이학습 성능을 향상시키고

수정된 모델을 RESNET(BIT)라고 부른다.

 

하이브리드모델

하이브리드 모델에서는 레스넷의 피쳐맵을 VIT로 전달하며 이때 패치 크기는 1픽셀로 설정한다.

우리는 다양한 시퀀스 길이를 실험하기 위해 두가지 방법을 사용한다.

1.ResNet-50의 일반적인 4번째 스테이지(Stage 4) 출력을 사용.
2.Stage 4를 제거하고, 동일한 수의 레이어를 Stage 3에 추가하여 확장한 후, 이 확장된 Stage 3의 출력을 사용.

  • 이 경우, 시퀀스 길이가 기존보다 4배 길어지며,
  • 결과적으로 ViT 모델의 계산 비용이 증가한다.

훈련 및 미세 조정 (Training & Fine-tuning)

우리는 ResNet을 포함한 모든 모델을 Adam 옵티마이저(Kingma & Ba, 2015)를 사용하여 훈련한다.

 

β1 = 0.9, β2 = 0.999

배치 크기(batch size) = 4096

높은 weight decay(가중치 감쇠) = 0.1 적용

 

이는 모든 모델에서 전이 학습(transfer learning) 성능을 향상시키는 데 유용함을 발견하였다.

(부록 D.1에 따르면, 일반적인 관행과 달리, ResNet의 경우에도 SGD보다 Adam이 약간 더 좋은 성능을 보인다.)

우리는 선형적 학습률 증가(warmup) 및 감소(decay)를 적용하며, 자세한 내용은 부록 B.1을 참조하라.

미세 조정 (Fine-tuning)

모든 모델에서 SGD(SGD with momentum)와 배치 크기 512를 사용하여 미세 조정 수행 (부록 B.1.1 참조).

ImageNet 결과(Table 2)

  • ViT-L/16: 해상도 512에서 미세 조정
  • ViT-H/14: 해상도 518에서 미세 조정
  • 또한 Polyak & Juditsky(1992) 평균화 기법을 적용하며, 계수(factor) = 0.9999 사용 (Ramachandran et al., 2019; Wang et al., 2020b).

평가 지표 (Metrics)

우리는 다운스트림 데이터셋에서의 성능을 미세 조정(Fine-tuning) 정확도 또는 Few-shot 정확도를 통해 보고한다.

  1. Fine-tuning 정확도
    • 각 모델을 해당 데이터셋에서 미세 조정한 후의 성능을 측정.
  2. Few-shot 정확도
    • 고정된(frozen) 표현을 사용하여, 일부 훈련 이미지에서 {−1, 1}^K 목표 벡터로의 정규화된 최소 제곱 회귀(regularized least-squares regression) 문제를 해결.
    • 이 접근 방식은 정확한 해(closed-form solution)를 수학적으로 도출할 수 있도록 함.

우리는 주로 Fine-tuning 성능에 초점을 맞추지만,

  • 미세 조정이 계산적으로 너무 비쌀 경우,
  • Few-shot 정확도를 사용하여 빠르게 평가할 수도 있음.
  •  

더보기

표 2: 인기 있는 이미지 분류 벤치마크에서 최신 기술과의 비교

 

우리는 세 번의 미세 조정(fine-tuning) 실행에 대한 정확도의 평균과 표준 편차를 보고한다.

ViT 모델은 JFT-300M 데이터셋에서 사전 훈련된 모델들이 ResNet 기반의 기본 모델들보다 모든 데이터셋에서 뛰어난 성능을 보이며,
사전 훈련에 소모되는 계산 자원은 훨씬 적다.

ViT는 더 작은 공개 데이터셋인 ImageNet-21k에서 사전 훈련된 모델도 좋은 성능을 보인다.
*참고로, Touvron et al. (2020) 에서 보고된 88.5%의 결과가 약간 개선된 값임.

더보기

그림 2: VTAB 성능의 세부 분석 (Natural, Specialized, Structured 작업 그룹별 성능)

ViT 모델은 여전히 이전 최신 모델(State-of-the-Art, SOTA)에 비해 훨씬 적은 연산량으로 사전 훈련되었음에도 높은 성능을 기록하였다.
그러나 사전 훈련 효율성은 아키텍처 선택뿐만 아니라 훈련 스케줄, 옵티마이저, weight decay 등의 다른 하이퍼파라미터에도 영향을 받을 수 있다.
이에 대한 성능 vs. 연산량 비교를 4.4절에서 보다 체계적으로 분석하였다.

ViT-L/16 (ImageNet-21k 사전 훈련 모델)

  • 대부분의 데이터셋에서 우수한 성능을 기록.
  • 사전 훈련에 필요한 자원이 적으며, 일반적인 클라우드 TPUv3 (8코어)에서 약 30일 만에 훈련 가능.

VTAB 벤치마크 결과 분석 (그림 2 내용 요약)

그림 2에서는 VTAB 벤치마크의 개별 작업 그룹(Natural, Specialized, Structured)별 성능을 분석하고,
이전 SOTA 모델과 비교하였다. 비교 대상은 다음과 같다:

  1. BiT - 대규모 ResNet 기반 전이 학습 모델.
  2. VIVI - ResNet을 ImageNet과 YouTube 데이터로 공동 훈련(co-training)한 모델 (Tschannen et al., 2020).
  3. S4L - 지도 학습 + 반지도 학습(supervised + semi-supervised learning)을 활용한 모델 (Zhai et al., 2019a).

비교 결과:

  • ViT-H/14 모델이 BiT-R152x4 및 다른 방법보다 높은 성능을 기록
    • Natural 및 Structured 작업에서 특히 뛰어난 성능을 보임
    • Specialized 작업에서는 상위 두 모델의 성능이 유사

4.3 사전 훈련 데이터 요구 사항 (Pre-training Data Requirements)

Vision Transformer(ViT)는 대규모 JFT-300M 데이터셋에서 사전 훈련될 때 우수한 성능을 보인다.
그러나, ViT는 ResNet보다 시각적 귀납적 편향(inductive bias)이 적으므로, 데이터셋 크기가 얼마나 중요한지가 핵심 질문이다.
이를 조사하기 위해 두 가지 실험을 수행하였다.

첫 번째 실험에서는, 크기가 증가하는 데이터셋에서 ViT 모델을 사전 훈련하였다:

  • ImageNet
  • ImageNet-21k
  • JFT-300M

더 작은 데이터셋에서도 성능을 높이기 위해,

  • 세 가지 기본 정규화 하이퍼파라미터(weight decay, dropout, label smoothing)를 최적화하였다.

결과 (그림 3 및 표 5 참조)

  • ImageNet(가장 작은 데이터셋)에서 사전 훈련한 경우
    • ViT-Large 모델이 ViT-Base 모델보다 오히려 낮은 성능을 보임.
    • 이는 적절한 정규화가 적용되었음에도 불구하고 데이터 부족으로 인해 큰 모델이 충분히 학습되지 못했음을 시사.
  • ImageNet-21k에서 사전 훈련한 경우
    • ViT-Large와 ViT-Base 모델의 성능이 유사해짐.
  • JFT-300M에서 사전 훈련한 경우
    • 더 큰 모델의 이점이 완전히 드러나며, ViT-Large가 뛰어난 성능을 보임.

또한, 그림 3에서는 다양한 데이터셋 크기에 따른 성능 변화를 시각적으로 보여준다.

 


⭐⭐⭐⭐⭐⭐ 

그림3,4,5는 결과를 말하지만 나름 핵심임

 

그림 3: ImageNet 전이 학습 결과

  • 작은 데이터셋에서 사전 훈련한 경우, 큰 ViT 모델은 BiT ResNet보다 성능이 낮음(그림에서 음영 처리된 영역).
  • 그러나 대규모 데이터셋에서 사전 훈련할수록 ViT의 성능이 크게 향상됨.
  • 특히, 더 큰 ViT 모델들은 더 작은 모델들을 능가하게 됨
  • (데이터셋 크기가 증가할수록 성능 차이 확대)

 

 

 


 

 

 

그림 4: ImageNet에서의 선형 Few-shot 평가 vs. 사전 훈련 데이터 크기

  • ResNet은 작은 데이터셋에서 사전 훈련할 때 더 나은 성능을 보이나,성능 향상이 조기에 정체(plateau)됨.
  • 반면, ViT는 더 큰 데이터셋에서 사전 훈련할 때 성능이 계속 증가.
  • ViT-b는 ViT-B 모델의 모든 은닉 차원을 절반으로 줄인 모델.

 

 


 

그림 5: 사전 훈련 연산량 vs. 성능 비교 (ViT, ResNet, 하이브리드 모델)

  • 같은 계산 비용에서 ViT가 ResNet보다 전반적으로 높은 성능을 보임.
  • 하이브리드 모델(ViT + CNN)은 작은 모델 크기에서는 순수 ViT보다 성능이 향상되지만,
    • 모델 크기가 커질수록 순수 ViT와 하이브리드 간의 성능 차이가 사라짐.

BiT 모델과 ViT 성능 비교

다양한 크기의 BiT 모델이 차지하는 성능 영역에서,ImageNet에서는 BiT CNN이 ViT보다 높은 성능을 보이지만,

더 큰 데이터셋에서 사전 훈련할 경우, ViT가 BiT를 능가함.

 

두 번째 실험: 다양한 크기의 JFT-300M 하위 집합에서 훈련

모델을 JFT-300M의 무작위 하위 집합(9M, 30M, 90M)과 전체 300M 데이터셋에서 훈련.

작은 데이터셋에서 추가 정규화 없이 실험하여,모델의 고유한 특성을 평가하고,정규화 기법의 영향을 배제함.

 

단, 조기 종료(early-stopping)를 적용, 훈련 중 가장 높은 검증 정확도를 기록.

연산 비용 절감을 위해, 전체 미세 조정 성능이 아닌 Few-shot 선형 정확도를 보고(그림 4).

ViT vs. ResNet: 작은 데이터셋에서는 과적합 발생

비슷한 연산량을 사용할 때, 작은 데이터셋에서는 ViT가 ResNet보다 과적합(overfitting) 경향이 큼.

 

예시:

ViT-B/32는 ResNet-50보다 약간 빠르지만,

9M 데이터셋에서는 훨씬 낮은 성능을 보임,

그러나 90M+ 데이터셋에서는 ViT가 더 좋은 성능을 기록.

ResNet-152x2와 ViT-L/16도 같은 패턴을 보임.

 

즉, 작은 데이터셋에서는 합성곱(Convolution)의 귀납적 편향(inductive bias)이 유리하지만,

대규모 데이터셋에서는 모델이 직접 패턴을 학습하는 것이 더 효과적임을 시사.

Few-shot 학습과 저데이터 환경에서 ViT의 가능성

ImageNet에서의 Few-shot 평가(그림 4) 및 VTAB 저데이터 실험(표 2)에서 유망한 결과를 보임.

극소량의 데이터로 전이 학습하는 연구 방향이 흥미로운 미래 연구 과제가 될 것


4.4 확장성 연구(Scaling Study)

우리는 JFT-300M에서 전이 학습 성능을 평가하여 모델별 확장성(scaling) 연구를 수행하였다.

이 실험에서는 데이터 크기가 모델 성능의 병목이 되지 않도록 설정하고, 각 모델의 성능과 사전 훈련 비용 간의 관계를 분석하였다.

비교 모델 세트

ResNet (총 7개 모델, 7~14 epoch 훈련)

R50x1, R50x2, R101x1, R152x1, R152x2 (7 epoch)

R152x2, R200x3 (14 epoch)

Vision Transformer (총 6개 모델, 7~14 epoch 훈련)

ViT-B/32, ViT-B/16, ViT-L/32, ViT-L/16 (7 epoch)

ViT-L/16, ViT-H/14 (14 epoch)

하이브리드 모델 (총 5개 모델, 7~14 epoch 훈련)

R50+ViT-B/32, B/16, L/32, L/16 (7 epoch)

R50+ViT-L/16 (14 epoch)

하이브리드 모델의 경우

모델 이름 끝에 붙은 숫자는 패치 크기(patch size)가 아니라, ResNet 백본의 총 다운샘플링 비율을 의미함.

 

결과 분석 (그림 5 참조, 계산 비용 세부 정보는 부록 D.5, 개별 모델 성능은 부록 표 6 참고)

몇 가지 패턴을 관찰할 수 있음:

ViT는 성능/연산량(Performance/Compute) 효율 면에서 ResNet을 압도.

 

ViT는 같은 성능을 내기 위해 ResNet보다 약 2~4배 적은 연산량을 사용(5개 데이터셋 평균).

작은 연산 예산에서는 하이브리드 모델이 ViT보다 약간 더 우수하지만, 큰 모델에서는 차이가 사라짐

CNN 기반의 국소적 특징 처리(local feature processing)가 ViT에 지속적인 도움을 줄 것이라 예상할 수도 있지만, 결과적으로 큰 모델에서는 별다른 차이를 보이지 않음.

 

ViT 모델은 현재 실험 범위 내에서 성능이 정체되지 않음.

 

즉, 더 큰 규모로 확장하면 성능이 계속 향상될 가능성이 높음,

이는 추후 ViT 모델 확장 연구의 필요성을 시사.


4.5 Vision Transformer 내부 분석 (Inspecting Vision Transformer)

 

ViT가 이미지 데이터를 어떻게 처리하는지 이해하기 위해 내부 표현(internal representation) 을 분석하였다.


1. 패치 임베딩 분석

ViT의 첫 번째 계층은 평탄화된 이미지 패치(flattened patches)를 저차원 공간에 선형 투영(linear projection) 한다 (식 1 참조).그림 7 (왼쪽)

학습된 임베딩 필터의 주성분(Principal Components)을 분석한 결과,

각 패치 내 미세 구조(fine structure)를 표현하는 적절한 기저 함수(basis functions)처럼 보임.

 

2. 위치 임베딩(Position Embedding) 분석

위치 임베딩(position embedding) 은 패치 표현(patch representation)에 추가되는 학습된 위치 정보.그림 7 (중앙)

 

ViT는 이미지 내 거리(distance)를 학습하여, 가까운 패치일수록 더 유사한 위치 임베딩을 갖도록 함.

행(row)-열(column) 구조가 나타나며, 같은 행/열에 있는 패치들은 유사한 임베딩을 가지는 경향.

큰 격자(grid)에서 경우에 따라 사인파(sinusoidal) 패턴이 관찰됨

(부록 D 참조).

즉, 위치 임베딩이 2D 이미지의 위상(topology)을 학습하며, 이는 별도로 설계된 2D 임베딩 기법이 성능 향상을 가져오지 않는 이유를 설명함 (부록 D.4 참조).


3. 자가 주의(Self-Attention) 분석

ViT는 자가 주의(self-attention) 메커니즘을 통해 이미지 전체에서 정보를 통합할 수 있다.
이제 실제 네트워크가 이러한 기능을 얼마나 활용하는지 분석한다.

그림 7 (오른쪽)

"어텐션 거리(attention distance)" 를 계산하여, 모델이 이미지 공간에서 정보를 얼마나 먼 거리까지 통합하는지 측정.

 

어텐션 거리는 CNN의 수용영역(receptive field) 크기와 유사한 개념.

일부 어텐션 헤드는 이미 최하위 계층에서 이미지 전체를 고려하며,이는 ViT가 전역 정보를 통합하는 능력을 실제로 활용함을 보여줌.

 

반면, 다른 어텐션 헤드들은 낮은 계층에서 일관되게 작은 어텐션 거리(지역적 정보 처리)를 유지.

 

하이브리드 모델(ResNet+Transformer)에서는 이러한 지역적 어텐션 경향이 덜 나타남.

 

즉, 초기 합성곱 계층(convolutional layers)이 하는 역할을 Transformer가 일부 수행할 수도 있음을 시사.

네트워크가 깊어질수록, 어텐션 거리가 증가하는 경향을 보임.

 

그림 6

모델이 분류(classification)에서 의미적으로 중요한 이미지 영역을 어텐션으로 집중해서 학습함을 확인.

더보기

그림 6의 "Input"과 "Attention" 의미

  • Input: 원본 이미지.
  • Attention: 모델이 어떤 부분에 집중하고 있는지 시각적으로 나타낸 것.
    • 밝거나 강조된 영역 = 모델이 중요한 정보로 간주하는 부분.
    • 어두운 영역 = 덜 중요한 부분.
    • 예를 들어, 개를 분류하는 작업이라면 개의 얼굴이나 몸통에 어텐션이 집중될 가능성이 높음.

결론

Attention은 ViT(Transformer 기반 모델)가 이미지의 어떤 부분을 중점적으로 분석하는지를 보여주는 지표야.
CNN에서는 합성곱 필터가 국소적인 특징을 찾아주는 역할을 한다면, ViT에서는 Self-Attention을 사용해 더 넓은 범위의 정보를 종합적으로 활용하는 거야.

 


4.6. 자기 지도 학습 (Self-Supervision)

Transformer 모델은 자연어 처리(NLP) 작업에서 뛰어난 성능을 보인다.
그러나, 이러한 성공의 핵심 요인은 뛰어난 확장성(scalability)뿐만 아니라, 대규모 자기 지도 학습(self-supervised pre-training)에도 있음 (Devlin et al., 2019; Radford et al., 2018).

우리는 자기 지도 학습을 활용한 초기 실험을 수행하였다.

BERT의 마스크드 언어 모델링(masked language modeling)과 유사한 방식으로 마스크드 패치 예측(masked patch prediction)을 적용.

 

결과:

자기 지도 학습 후, ViT-B/16 모델이 ImageNet에서 79.9%의 정확도를 달성.

무작위 초기화(scratch)에서 훈련한 모델 대비 2%의 향상.

그러나 지도 학습(supervised pre-training) 모델보다는 여전히 4% 낮은 성능.

자기 지도 학습 방법에 대한 추가 세부 사항은 부록 B.1.2에 수록.
또한, 대조적 학습(Contrastive Pre-training, Chen et al., 2020b; He et al., 2020; Bachman et al., 2019; Henaff et al., 2020) 방식에 대한 연구는 향후 과제로 남겨둔다.

 

더보기

그림 7 설명

왼쪽 (Left): ViT-L/32의 초기 선형 임베딩 필터

ViT-L/32 모델에서 RGB 값을 선형 임베딩(linear embedding)하는 초기 필터들을 시각화.

이러한 필터들은 각 패치 내의 색상 정보를 저차원 공간으로 변환하는 역할을 수행.

중앙 (Center): ViT-L/32의 위치 임베딩 간 유사도(Similarity of Position Embeddings)

특정 패치의 위치 임베딩(position embedding)과 다른 패치들의 위치 임베딩 간 코사인 유사도(cosine similarity) 를 타일 형태로 표시.

같은 행(row) 또는 열(column)에 위치한 패치들이 서로 더 유사한 임베딩을 가지는 경향을 보임.

이는 모델이 이미지 내 2D 공간적 관계를 어느 정도 학습하고 있음을 시사.

오른쪽 (Right): 어텐션 헤드별 주목 영역 크기 (Size of Attended Area by Head and Network Depth)

각 점은 하나의 계층(layer)에서 16개의 어텐션 헤드(head) 중 하나의 평균 어텐션 거리(attention distance) 를 나타냄.

즉, 각 헤드가 이미지에서 얼마나 넓은 영역을 주목하는지를 보여줌.

네트워크 깊이에 따라 어텐션 범위가 증가하는 경향을 보이며,

일부 헤드는 초기부터 전역적인 어텐션(Global Attention)을 수행,

반면 다른 헤드는 초기에는 국소적(Local) 어텐션을 수행하지만 깊어질수록 점차 전역 정보를 통합.

부록 D.7에서 추가 세부 사항 제공.


5. 결론 (Conclusion)

우리는 Transformer를 이미지 인식(image recognition)에 직접 적용하는 방법을 탐구하였다.

 

기존 연구들은 컴퓨터 비전에서 Self-Attention을 활용하면서도 특정한 이미지 구조(귀납적 편향, Inductive Bias)를 포함하는 경우가 많았음.

 

하지만 ViT(Vision Transformer)는 패치 추출(patch extraction) 단계를 제외하고는 이미지에 특화된 귀납적 편향을 도입하지 않음.

 

대신, 이미지를 패치들의 시퀀스(sequence of patches)로 해석하고, NLP에서 사용되는 표준 Transformer 인코더로 처리.

 

이러한 단순하지만 확장 가능한(Scalable) 접근 방식은, 대규모 데이터셋에서 사전 훈련(pre-training)과 결합될 때 뛰어난 성능을 발휘.

 

결과적으로, Vision Transformer는 여러 이미지 분류(image classification) 데이터셋에서 최신 기술(State-of-the-Art, SOTA)과 동등하거나 더 나은 성능을 달성하고 상대적으로 사전 훈련 비용이 저렴함.

 

향후 과제 및 연구 방향

비록 초기 연구 결과는 고무적이지만, 여전히 해결해야 할 도전 과제가 남아 있음.

1️⃣ ViT를 이미지 분류 이외의 비전 작업에 적용

  • 객체 탐지(Object Detection) 및 이미지 분할(Segmentation)과 같은 다양한 컴퓨터 비전 문제에 ViT를 확장하는 것이 필요.
  • Carion et al. (2020) 연구 결과와 ViT의 성능을 종합해볼 때, 이 접근 방식의 가능성이 충분히 있음.

2️⃣ 자기 지도 학습(Self-Supervised Pre-Training) 방식 개선

  • 초기 실험에서는 자기 지도 학습이 일부 성능 향상을 가져왔지만,
  • 대규모 지도 학습(supervised pre-training)과의 성능 차이가 여전히 큼.
  • 향후 연구에서는 대조적 학습(contrastive learning) 및 기타 자기 지도 학습 기법을 더욱 탐구해야 함.

3️⃣ ViT의 확장(Scaling) 연구

  • ViT를 더 큰 모델로 확장하면 성능이 지속적으로 향상될 가능성이 큼.
  • 따라서, 추가적인 모델 확장 및 최적화 연구가 향후 ViT의 발전에 중요한 역할을 할 것.

 


 

이번 논문은 되게 유명하고 많이 쓰인다고 들어서 직접 해봤는데 

CRIFAR-10에서 SOTA를 차지할정도로 성능이 되게 좋다고 한다.

실제로 이런 모델이 어떤 플로우를 가지고 있는지 확인했다.

 

사실 Transformer을 살짝 배웠던 터라 용어가 익숙하기는 했지만 다시한번 NLP 쪽을 복습하기는해야겠다.

이렇게 논문을 읽어보니 지금은 초기(?)라서 딥러닝 머신러닝 나누겠다만 크게보면 한 분야로 합쳐질것같다.

 

ViT는 결국 많은 데이터를 가지고 사전학습을 해야하고 적은 데이터로 사전 학습시에는 성능이 그닥 좋지않았습니다.

ViT모델은 구글 내부 이미지를 6억장 정도로 프리트레이닝됐다고 합니다. 그래서 

사용할때는 FINE-Tuning하여 사용하는것이 좋습니다.

 

파인튜닝을 할때는 프리트레이닝 이미지보다 높은 해상도의 이미지를 쓰는것이 성능 향상에 좋다고 합니다.

그럼 패치크기 동일하게 유지하고 더 큰 시퀀스 수를 사용할 수 있습니다.

 

위 모델을 가지고 어떤 부분에서 쓸 수 있을지 생각을 좀 해봐야겠다.

 

#참고

https://www.youtube.com/channel/UCcZvGFhtP5GsGg1ecUaCDAw

 

텐초

 

www.youtube.com