- 비전 트랜스포머 모델은 기존의 컨볼루션 신경망(Convolutional Neural Network, CNN) 아키텍처 대신에 트랜스포머의 셀프 어텐션(Self-Attention) 메커니즘을 사용하여 이미지를 처리하는 모델임.
- 특징
- 트랜스포머 구조 적용: 비전 트랜스포머는 트랜스포머 아키텍처와 유사한 구조를 사용. 이미지를 처리하기 위해 2D 그리드로 나타낸 후, 각 위치의 정보를 셀프 어텐션으로 처리하며, 이를 통해 이미지 내의 전역 및 지역적인 패턴을 파악할 수 있음.
- 패치 표현: 이미지는 작은 패치(patch)로 나뉘어 표현되는데, 패치는 1D 벡터로 펼쳐진 후, 트랜스포머의 입력값으로 사용함. 이렇게 사용하면 이미지의 공간 정보(Spatial Information)가 유지되면서 효율적인 처리가 가능함.
- 포지셔널 인코딩(Positional Encoding): 기존 트랜스포머와 마찬가지로 위치 정보를 표현하기 위한 포지셔널 인코딩이 사용되며, 이미지 내의 각 패치 위치에 대한 위치 정보를 추가하여 모델이 공간적인 관계를 학습할 수 있음.
- 셀프 어텐션: 이미지 내의 각 패치에 대한 정보를 처리하기 위해 셀프 어텐션 메커니즘이 사용되는데, 패치 간의 상호 작용과 패턴 인식이 이루어짐.
- 클래스 토큰(Class Token): 입력 이미지에 대한 클래스 정보를 나타내는 클래스 토큰이 추가됨. 이 클래스 토큰은 이미지 분류 작업을 위해 사용된다.
- 선형 레이어: 셀프 어텐션의 출력은 선형 레이어를 통해 최종적인 예측 또는 출력으로 변환됨.
- 비전 트랜스포머의 주요 이점은 이미지 내의 글로벌 패턴 및 로컬 패턴을 동시에 처리할 수 있다는 것인데, CNN과 달리 이미지 크기에 상관없이 잘 적용되고 큰 이미지도 처리할 수 있다. 뿐만 아니라, 사전 훈련(Pre-trained)된 언어 모델(Ex: BERT)의 아이디어를 활용하여 비전 작업에도 전이 학습을 수행할 수 있음.
- 하지만, 기존 SOTA 였던 CNN 의 성능보다 높게하기 위해서는 많은 양의 데이터셋이 필요하다는 점이 있다. 이러한 문제를 해결하기 위해 데이터셋이 적어도 학습이 가능한 CNN을 Teacher Model로 하고, Transformer 모델을 Student Model 로 해서 학습시키는 Knowledge Distillation 과 같은 모델도 나오고 있음. (CNN 이 예측한 결과의 분포를 Transformer 와의 Loss 계산한 Soft Distillation 혹은 예측한 결과 자체를 Transformer와의 Loss 로 계산한 Hard Distillation 이 있음.)
- Vision Transfomer(ViT), CNN 차이점
- 구조적 차이
- CNN : 일반적으로 컨볼루션(Convolution) 레이어와 풀링(Pooling) 레이어로 구성된 모델이고, 컨볼루션 레이어는 입력 이미지에서 특징 맵을 추출하고, 풀링 레이어는 공간 차원을 축소하여 정보를 압축함.
- ViT : 트랜스포머(Transformer) 아키텍처를 비전 작업에 적용한 것으로, 셀프 어텐션(Self-Attention) 메커니즘을 기반으로 이미지를 작은 패치로 나눈 후, 각 패치를 처리하여 이미지 정보를 처리함. (Encoder-Decoder 방식)
- 패치기반 처리
- CNN : 이미지를 작은 컨볼루션 커널을 사용하여 지역적으로 처리하는데, 이러한 결과로 공간 정보를 유지하면서 특징을 추출하는 데 효과적임.
- ViT :이미지를 패치 단위로 분할하고(Ex: 1장의 이미지를 16x16 으로 분할), 이러한 패치를 Sequential하게 일렬로 나열하여 모델의 입력으로 사용함. 기존 NLP에서 사용하던 Transformer에서 입력값이 sequence한 문장이 들어간 것과 동일함. 또한, 패치 기반 처리는 이미지 크기에 무관하게 모델을 적용할 수 있음. (이미지가 커도 무관함)
- Positional Encoding
- CNN :공간 정보를 컨볼루션 연산을 통해 유지하므로, 위치 정보를 알 수 있는 Positional Encoding 적용되지 않음.
- ViT : 패치의 위치 정보를 포지셔널 인코딩(Positional Encoding)을 사용하여 모델에 제공하며, 모델이 이미지의 공간적인 구조를 이해할 수 있음. (CNN 과 다르게 Locality 가정이 없으므로, sequence의 position을 모델에게 알려줘야 함.)
- 활용
- CNN : 이미지 분류, 객체 검출, 세그멘테이션 등 다양한 비전 작업에 널리 사용함. 특히, 공간적인 구조가 중요한 작업에서 효과적이며, Transformer가 나오기 전까지 SOTA 모델로 사용됨. (Ex: ResNet 152)
- ViT : 주로 이미지 분류 작업에 사용되지만, 객체 검출 및 세그멘테이션과 같은 다른 비전 작업에도 적용되고 있음.
- Transfer Learning
- CNN :CNN 모델은 사전 훈련된 모델로 전이 학습을 수행할 수 있으며, 대규모 이미지 데이터셋에서 사전 훈련된 가중치를 활용할 수 있음.
- ViT :ViT도 사전 훈련된 모델로 전이 학습을 수행할 수 있음. 사전학습 시, 대규모의 이미지 데이터로 가중치를 학습시켜 놓고 작은 데이터셋으로 fine-tuning 하는 방식이 될 수 있음.
- 구조적 차이
- 요약하면, CNN은 이미지 처리에서 주변의 공간 정보에 중점을 두어 처리해서 기존의 컴퓨터 비전 작업에 주로 사용되는 반면, ViT는 패치 기반 처리와 셀프 어텐션을 통해 비전 작업을 수행해서 이미지 크기에 무관하게 작동하고 대규모 이미지 데이터셋에서도 학습할 수 있음.
'Deep Learning' 카테고리의 다른 글
딥러닝 서버 세팅-우분투 설치 후 gpu 환경 설치 (0) | 2023.10.31 |
---|---|
Tensor를 detach() 하는 이유 (0) | 2023.10.19 |
트랜스포머(Transformer) 개념, 설명 (0) | 2023.10.09 |
Gradient clipping (0) | 2023.10.06 |
Internal Covariate Shift와 Batch Normalization (0) | 2023.10.02 |