컴퓨터 비전이 점점 혁신적인 발전을 이루며 일상의 다양한 분야에 응용되고 있는 현재, Vision Transformer는 연구자들과 개발자들이 높은 관심을 갖게 된 핵심 기술 중 하나입니다. 이 글에서는 Vision Transformer의 정의와 중요성, 원리와 사용 사례에 대해 살펴보겠습니다.
Vision Transformer (ViT) 란 무엇인가?
정의
_datahunt_230817.webp)
Vision Transformer(ViT)는 이미지 인식 및 처리 작업에서 높은 성능을 발휘하는 딥러닝 모델로, 자연어 처리(NLP) 분야에서 성공을 거둔 Transformer 구조를 컴퓨터 비전 분야에 적용한 모델입니다. 기존의 Convolutional Neural Networks(CNNs) 대신 Transformer 구조를 사용함으로써, 전역적인 이미지 정보를 적절하게 포착하고 처리할 수 있습니다.
Vision Transformer는 이미지에서 전역적인 정보와 상호작용하는 요소들을 포착하고, 다양한 컴퓨터 비전 작업에 높은 성능을 발휘하고 있습니다. 다양한 문제와 데이터셋에도 잘 적용될 수 있어 최근 여러 분야에 널리 사용되고 있는 모델입니다.
논문
Transformer 구조를 사용한 Architecture가 수많은 SOTA를 기록하고 있는 가운데, ViT에 대한 논문이 그 시작점이라고 할 수 있습니다. 이 기술은 더 많은 데이터를 더 적은 비용으로 학습하기 위한 목적을 위주로 연구되었으며, 2021년에 발표된 이후부터 Image Classification의 판도를 바꾼 기술로 각광 받고 있습니다. Vision Transformer에 대한 자세한 논문은 이 링크에서 확인하실 수 있습니다.
👉 Video Swin Transformer 논문 리뷰
Computer vision 관점에서 본 CNNs 와 ViT 비교
개요 및 정의
CNNs (Convolutional Neural Networks, 합성곱 신경망)은 컴퓨터 비전 분야에서 가장 많이 사용되는 딥러닝 모델로, 이미지 인식, 객체 검출, 의료 영상 처리 등 다양한 비전 작업에 적합합니다. CNN은 공간적인 계층 구조와 이미지의 지역 패턴을 캡처하기 위해 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)을 포함하는 구성 요소로 이루어져 있습니다.
이와 달리 Vision Transformer(ViT)는 자연어 처리(Natural Language Processing, NLP)에서 효과적인 구조로 알려진 Transformer를 컴퓨터 비전 분야에 적용한 모델입니다. Transformer는 주로 시퀀스 데이터에 대한 처리에 이용되는데, ViT는 이를 이미지에 적용하여 이미지 전체의 정보를 고려하는 방식으로 동작합니다.
차이점과 특징
_datahunt_230817.webp)
ViT는 이미지를 작은 패치로 분할하고, 패치를 벡터화한 뒤, Transformer의 인코더를 사용하여 이미지 내의 문맥 정보를 추출합니다. 이러한 변화로 인해 ViT와 CNN은 기본적인 구조와 작동 방식에서 차이를 보입니다.
CNN은 지역 특징 추출에 적합한 구조를 가지며, 이미지의 공간적 정보를 보존하면서 인접한 픽셀 간의 관계를 탐색합니다. 반면에 ViT는 패치 단위로 이미지의 전역적인 정보를 고려합니다. 이를 위해 Transformer의 어텐션(Attention) 메커니즘을 통해 문맥 정보를 학습하고, 이미지 분류와 같은 작업에 적용됩니다.
CNN 모델은 컴팩트한 크기와 효율적인 메모리 활용 구조를 가지고 있어, 리소스가 제약된 환경에 적합한 모델입니다. 이를 기반으로 가볍고 빠른 이미지 처리 시스템을 구축할 수 있으며 다양한 컴퓨터 비전 애플리케이션에서 우수한 정확도를 보여주고 있죠. 반면에, Vision Transformers는 글로벌 의존성과 상황에 따른 이해를 이미지로 캡쳐할 수 있는 강력한 접근 방식을 통해 특정 작업에서 성능 향상을 확인할 수 있다는 장점이 있습니다.
다만 Vision Transformer는 모델 크기가 크고, 메모리 요구 사항이 높다는 단점이 있습니다. 따라서 대규모 데이터 세트를 처리할 때에 괄목할 만한 정확도를 달성할 수 있지만, 리소스가 제한된 시나리오에서는 실용성이 다소 떨어진다는 한계가 있죠.
요약하자면, CNN은 공간적인 계층 구조와 지역 특징 추출에 특화된 모델로, ViT는 이미지를 패치로 변환하고 전역적인 정보와 문맥을 고려하여 처리하는 Transformer 구조를 활용하는 모델입니다. 궁극적으로 두 모델 중 택일해야 한다면 가용 가능한 리소스 현황과 데이터 세트의 크기, 모델 복잡성, 정확성 및 성능 간의 균형 등의 요인과 당면한 작업의 특정 요구 사항을 고려해서 결정해야 합니다.
Vision Transformer 원리와 구조
원리
Vision Transformer의 구조를 살펴보면 다음과 같은 요소들이 있습니다.
_datahunt_230817.webp)
이미지 패치화: Vision Transformer는 입력 이미지를 고정 크기의 작은 정사각형 패치로 나눕니다. 일반적으로, 이미지는 (224 x 224)의 크기로 전처리되며, 그렇게 되면 16 x 16의 크기의 패치로 나뉩니다. 이렇게 자른 패치들을 신경망에 입력합니다.
- 패치 벡터화 및 위치 정보: 각 패치는 Flat한(1차원) 벡터 형태로 변환되며, 동시에 각 패치의 위치에 대한 정보가 추가됩니다. 이를 통해 Transformer는 이미지의 각 부분에 대한 위치 정보를 이해할 수 있게 됩니다.
- Transformer 인코더: 벡터화하고 위치 정보를 적용한 패치들을, Transformer 인코더의 입력으로 사용합니다. 인코더는 Self-Attention 및 Feed-Forward 신경망을 사용하여 이미지에서 복잡한 패턴과 문맥 정보를 추출합니다.
- 분류 토큰 및 MLP 헤드: 패치 벡터화 과정에서 특별한 분류 토큰(Classification Token)을 입력에 추가합니다. 이 토큰은 인코더를 거치면서 각 패치의 정보가 포함된 벡터로 변형되며, Transformer 인코더의 출력에서 이 토큰 부분을 사용하여 분류 작업을 수행하는 데 쓰입니다. 이를 위해 MLP 헤드가 사용되며, 벡터를 소프트맥스 활성화 함수가 적용된 최종 분류 결과로 변환합니다.
그러나 이러한 과정으로 중간 사이즈의 데이터셋에 학습을 시킬 경우, 별도의 강력한 Regularization 없이는 기존의 ResNets 대비 훌륭한 성능을 보여주지는 못한 것으로 밝혀졌습니다. 이는 Transformer 구조 자체가 앞에서 언급한 CNN에 비해 inductive bias가 부족한 한계로 지목되었는데요. 많은 양의 데이터가 없으면 일반화가 제대로 이루어지지 않는다는 특징이 있습니다.
그러나 크고 방대한 양의 (약 1,400만~3억 장) 데이터를 가지고 학습을 시킬 경우, 위의 구조적 한계를 극복할 수 있습니다. 따라서 Vision Transformer는 CNN에 비해 전체 구조가 단순하면서도 방대한 데이터에서 확실한 성능을 확인할 수 있는 것이죠.
구현 방법
Vision Transformer를 구현하기 위한 대표적인 딥 러닝 프레임워크로 PyTorch와 TensorFlow가 언급됩니다. 각각의 프레임 워크에는 고유한 특징과 장단점이 있습니다.
👉 MLOps 비교 분석 자세히 알아보기
PyTorch:
- 동적 그래프: 동적 계산 그래프를 사용하여 모델을 정의하고 실행할 수 있습니다. 이는 모델의 변화와 조정을 쉽게 할 수 있으며, 디버깅과 실험 등의 작업을 단순화합니다.
- 직관적인 구문: Pythonic한 구문을 제공하여 모델을 간단하게 정의하고 학습 시킬 수 있습니다. 이는 사용자에게 직관적인 경험을 제공하며, 코드의 가독성과 유지 보수성을 높여줍니다.
- 도구와 커뮤니티: 다양한 유용한 도구와 라이브러리, 그리고 활발한 커뮤니티를 가지고 있습니다. 이는 모델 개발, 데이터 전처리, 시각화 등의 작업에 도움을 줄 수 있습니다.
_datahunt_230817.webp)
Vision Transformer 논문을 실제 코드로 구현한 사례는 이 링크를 통해서 확인하실 수 있습니다. 여기에는 논문에서 서술된 도표와 수학 방정식, 그리고 설명 텍스트를 code로 구현하여 음식 이미지를 통해 분류하는 작업을 수행합니다.
TensorFlow:
- 정적 그래프: TensorFlow는 정적 계산 그래프를 사용하여 모델을 정의하고 실행합니다. 이는 그래프를 한 번 정의한 후에는 변경하기 어려운 특징이 있으며, 이식성과 성능 최적화에 도움을 줍니다.
- 분산 학습과 배포: 분산 학습을 지원하는 기능을 제공합니다. 여러 개의 GPU 또는 분산 컴퓨팅 클러스터에서 모델을 효율적으로 학습할 수 있으며, 배포 및 모델 서빙에도 용이합니다.
- TensorFlow Hub: TensorFlow Hub라는 플랫폼을 통해 사전 훈련된 모델과 모델의 구성 요소를 쉽게 공유하고 활용할 수 있습니다. 이는 모델 개발의 효율성을 향상시키고, 다양한 모델 아키텍처를 탐색하는 데 도움을 줍니다.
각 프레임워크는 개발자의 선호도와 프로젝트 요구에 따라 선택될 수 있습니다. PyTorch는 유연하고 직관적인 설계와 커뮤니티 강점을 가지고 있으며, TensorFlow는 분산 학습과 서빙에 용이한 특징을 가지고 있죠. ViT을 구현하기 위해서 어떤 프레임워크를 선택하든 해당 프레임워크의 문법과 기능을 학습하여 모델을 구축하고 학습시킬 수 있을 것입니다.
Vision Transformer 사용 사례
데이터 세트의 크기가 계속 증가하고, 학습 방법 역시 다양해짐에 따라 여러 데이터 세트에서 효율적으로 훈련할 수 있는 비전 아키텍처를 개발하는 것이 중요해지고 있습니다. 이 가운데, ViT는 다양한 컴퓨터 비전 작업에서 광범위한 적용 가능성과 확장성을 가진 아키텍처로 주목 받고 있습니다. 아래에서 ViT가 적용된 다양한 애플리케이션과 사용 사례를 확인하실 수 있습니다.
Image Classification
_datahunt_230817.webp)
그간 Image classification 작업을 수행하기 위해, 가장 뛰어난 모델로 손 꼽히던 것은 단연 CNN이었습니다. ViT의 개발 이후 이 기술이 CNN의 대안이 될 것이라는 평을 받고 있습니다. 물론 중소 데이터셋에서 비교할 만한 성능을 보이는 것은 아니지만, 매우 큰 데이터 세트에서는 충분히 CNN을 능가할 수 있습니다.
KaKao Brain과 Hugging Face의 "ViT Align" 프로젝트는 Vision Transformer(ViT) 모델의 이미지 분류 기술에 대한 영향을 연구하고, ViT와 CNN을 비교하여 이 두 모델의 장단점을 살펴보는 것을 목표로 시작되었습니다.
이 프로젝트에서는 데이터셋의 클래스 간 균형을 맞추는 데 어려움이 있었던 기존 연구들과는 달리 ImageNet-1k에서 클래스 수가 더 많은 Imagenette와 Imagewoof 데이터셋 사용하여 실험을 진행했습니다. 이를 통해 ViT 모델이 대규모 데이터셋에서도 잘 작동하는 지 검증하고, 비교 대상인 CNN 모델과의 성능 비교를 진행했습니다.
실험 결과, ViT 모델은 Imagenette 데이터셋에서 87.7%의 Top-1 정확도를, Imagewoof 데이터셋에서는 78.2%의 Top-1 정확도를 기록하여 CNN 모델보다 우수한 성능을 보였습니다. 특히, 클래스 간 불균형이 존재하는 Imagenette 데이터셋에서 ViT는 CNN 보다 높은 정확도를 보였는데, 이는 ViT 모델이 대규모 데이터셋에서의 일반화 능력이 뛰어나다는 것을 나타냅니다.
이 프로젝트를 통해 Vision Transformer 모델의 이미지 분류 기술에 대한 이해를 높이고, ViT와 CNN 모델 간의 성능 비교를 통해 두 모델의 장단점을 참고하여 적절한 모델 선택의 중요성을 강조했습니다. 또한 ViT 모델의 Image classification 분야에서의 영향력을 알 수 있었죠.
Image Captioning
_datahunt_230817.webp)
Image captioning은 이미지를 입력으로 받아 해당 이미지에 대한 자연어 형식의 캡션(제목, 설명 등)을 생성하는 딥러닝 기술입니다. 이는 이미지 분류와 자연어 처리 분야의 결합으로 이루어져 있으며, 컴퓨터 비전과 언어 모델링 기술이 융합된 예측 모델을 학습하여 작동합니다.
Vision Transformer 모델은 기존 모델과 달리 Transformer 블록을 사용하여 입력 이미지를 처리합니다. 이미지를 패치(Patch) 단위로 나누고, 각 패치를 새로운 차원으로 변환하여 입력 이미지를 처리하는 방식입니다. 이러한 패치는 이미지를 단어들의 시퀀스로 표현하기 위함이죠. 이렇게 입력된 이미지의 특성을 추출하고, 이미지의 전반적인 특성을 정의한 뒤 입력된 자연어 시퀀스를 기반으로 RNN, LSTM, GRU 등의 모델을 사용해 캡션을 생성할 수 있습니다.
Image Segmentation
_datahunt_230817.webp)
이미지 세그멘테이션(image segmentation) 작업을 수행하는 데 사용되는 Transformer 기반의 딥러닝 모델입니다. 이미지 세그멘테이션은 이미지를 픽셀 단위로 분석하여 개별 객체들에 대한 경계에 대한 정보를 포함한 레이블을 부여하는 과정입니다. Dense Prediction Transformers(DPT)는 Transformer 아키텍처를 사용하여 이러한 이미지 세그멘테이션 문제를 효과적으로 해결할 수 있습니다.
DPT의 구조는 기본적으로 ViT(Vision Transformer)와 매우 유사합니다. 주요 차이점은 DPT가 이미지의 구성 요소를 세그멘테이션하기 위해 개별 픽셀에서 예측 값을 생성한다는 것입니다. 이러한 예측은 원본 이미지의 공간 정보를 유지하면서 이미지의 객체를 구분하는 데 사용되었습니다. 각 이미지 패치를 독립적으로 다루는 대신, Encoder-Decoder 구조를 사용하여 전체 이미지의 문맥을 고려한 예을 만들어낼 수 있으며, 이를 통해 높은 성능의 이미지 세그멘테이션 결과를 얻을 수 있습니다.
최근 meta에서 공개한 Segment Anything Model (SAM)의 Image Encoder에도 MAE pre-trained Vision Transformer model이 사용되었습니다.
👉 Segment Anything Model을 TorchServe로 배포하기
Anomaly Detection
_datahunt_230817.webp)
Vision Transformer 기반 이상 탐지 및 로컬라이제이션 네트워크는 재구성 기반 접근 방식과 패치 임베딩을 결합한 구조로 되어있습니다. Transformer 네트워크를 사용하면, 임베딩된 패치의 공간 정보를 보존하는 데에 도움이 될 수 있습니다.
Autonomous driving
_datahunt_230817.webp)
2021년 Tesla AI의 날 행사에서, Tesla는 자율주행 기술인 Tesla FSD(Full Self-Driving)를 구현하는 신경망의 내부 작동 방식을 상세히 공개하였습니다. 이 중 가장 흥미로운 기술 중 하나는 '이미지-BEV 변환 + 다중 카메라 융합' 기술입니다. 해당 기술은 크로스 어텐션 모듈을 사용한 Transformer 모델을 중심으로 구성되어 있습니다.
결론: Computer vision 분야에서 Vision Transformer 모델의 중요성은 더욱 커질 것입니다.
컴퓨터 비전에서 Vision Transformer를 채택해야 하는 이유
_datahunt_230817.webp)
CNNs는 이미지의 다양한 크기와 결합을 통해 특징 추출하는 방식으로 많은 양의 이미지 데이터에서 유용하게 사용되어왔습니다. 그러나 그동안 CNNs는 문맥(context)과 긴 관계 연결(long-range dependencies)을 캡처하기 어렵다는 단점이 있었습니다. ViT는 이러한 문제점을 해결하면서 정확성과 확장성을 제공하는 효과적인 대안입니다. Computer vision 분야에서 Vision Transformer를 도입해야 하는 구체적인 이유는 다음과 같습니다.
- 스케일-효과적인 성능: Vision Transformer는 이미지 크기 및 모델 복잡성과의 관계에서 상당한 성능 개선을 이끌어냈습니다. 더 큰 모델 및 이미지 크기를 선택해도 성능이 저하되지 않고, 데이터 세트 규모도 커질수록 좋아집니다.
- 간단한 구조: Vision Transformer는 하나의 패러다임을 사용하여 객체 인식, 분할, 검출 등 다양한 문제를 해결할 수 있습니다. 이는 복잡한 CNN 구조를 대체할 수 있으며, 전체 구조가 단순하고 이해하기 쉽습니다.
- 자가 감독 학습(Self-supervised learning)의 가능성: Vision Transformer는 컴퓨터 비전에서 사용되는 self-supervised learning 알고리즘과 효과적으로 결합할 수 있습니다. 이미지 패치 간의 full-sequence attention을 통해 레이블이 없는 이미지 분류 작업에서 좋은 성능을 보입니다.
- 전이 학습(Transfer learning)의 성능: 이미지넷 벤치마크를 기반으로 사전 학습된 Vision Transformer는 이미지 분류 작업뿐만 아니라 다양한 다운스트림 태스크에 강한 적응력을 발휘합니다. 이를 통해 전이 학습에서 더 큰 이익을 얻을 수 있습니다.
- 해석 가능성 및 시각화: Vision Transformer의 어텐션 기반 구조로 인해 모델이 예측한 결과의 시각적 해석과 인사이트 추출이 용이합니다. 이를 통해 어떻게 이미지가 판별되었는지, 예측이 왜 실패했는지 등의 직관을 얻을 수 있습니다.
Vision Transformer의 미래와 가치
기존의 컴퓨터 비전 기술과 비교했을 때 Vision Transformer는 성능과 단순성, 자기 감독 학습, 전이 학습 및 해석 가능성과 같은 여러가지 면에서 유리한 점을 가지고 있습니다. 또한 Vision Transformer는 연구를 거듭할수록 더욱 발전할 수 있는 확장성까지 갖추고 있어 많은 방면에서 적극적으로 상용화가 이루어지고 있습니다.
이는 Vision Transformer이 고품질의 비전 인식 성능과 사용자의 이해를 쉽게 도울 수 있는 구조를 제공하여, 다양한 응용 분야에 대한 성능 향상이 가능할 것이라는 의미입니다. 이러한 기술 발전은 다양한 분야에서 혁신을 가져올 것이며, 삶의 질을 향상시키는 기여를 할 것으로 기대가 됩니다. 데이터헌트 또한 Vision Transformer의 변화와 발전에 관심을 갖고 연구와 발전을 이어나갈 것입니다.