• Jacob 제이콥

PatchConvNet에 대해 알아보기



안녕하세요! 항상 당신 곁에, 의료 전문가 아티큐(artiQ), Jacob 제이콥입니다.

오늘은 "Augmenting Convolutional networks with attention-based aggregation" 라는 논문에서 소개한 PatchConvNet이라는 모델에 대해서 설명하려고 합니다. PatchConvNet은 합성곱 신경망을 발전시킨 모델로, attention 이라는 개념이 기존의 알고리즘에 결합된 모델입니다.


합성곱 신경망 (Convolutional Neural Networks), 흔히 CNN이라고 불리는 기술은 이미지의 근본적인 특징을 추출하는 알고리즘 입니다. 이 알고리즘은 이미지를 input로 받아, Convolutional Layer, Pooling Layer, Fully Connected Layer 세가지 단계를 통해 핵심적인 특징들 (features) 만 추출하는데, 각 Layer가 매우 중요한 역할을 수행합니다.


Convolution layer 에서는 원본 이미지에 특정 사이즈의 커널을 Sliding 하며 합성곱 (Dot Product) 을 계산합니다. 이미지는 픽셀로 구성되어 있는데, 각 픽셀은 숫자로 환산 됩니다. 저희는 숫자로 된 작은 커널을 이미지 픽셀에 계산하는 것입니다. 예를 들어 3x3 커널을 256x256원본 이미지에 대해서 순회하면서 원본 이미지를 축소 시키면서 중요한 특징을 의미하는 숫자로 축소 시키는 것이죠. 이 과정에서 특정 edge 부분은 높은 값을 가지게 됩니다. 이렇게 얻어낸 부분을 저희는 feature map 이라고 하는데, 이 feature map이 pooling layer 로 넘어갑니다. Max-Pooling 혹은 Average-Pooling 이라는 방법들을 사용하는데, 예를 들어 5x5 형태의 행렬이 있다고 하면, max-pooling layer는 그 안에서 가장 큰 값을 뽑아내고, average-pooling layer는 그 행렬의 평균 값을 뽑아 냅니다. 마지막으로 Fully Connected Layer에서는 Pooling Layer에서 나온 값들을 일렬로 만들어 주는데, 이 Layer을 통해 알고리즘은 input image의 핵심적인 부분을 추론하는 것입니다.


PatchConvNet은 pooling layer을 attention-based layer로 변환 시켜 attention 이라는 개념을 합성곱 신경망에 포함 시킵니다. 단순히 행렬에서 가장 큰 값을 찾거나 (max-pooling layer) 평균 값을 찾는 (average-pooling layer) 것이 아닌, 주어진 값들을 weighted summation 로 나타낸 후 softmax function을 통해 어떤 집합 (aggregation)에 집중해야 할 지에 대해 결정합니다. 그런데 어떻게 특정 행렬의 값들에 weight을 추가하고 비교할 수 있을까요? 이 결과를 위해서 이 모델은 ViT 로부터 class token이라는 개념을 빌려 옵니다. ViT는 “An image worth 16x16 Words: Transformers for Image Recognition at Scale”[1]이라는 논문에서 소개된 개념으로, CNN과 다르게 이미지를 pixel 단위가 아니라 patch 단위로 쪼개어 분석하는 것을 말합니다.


그림1. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (Dosovitskiy et al., 2020)

각 쪼개진 patch는 선형형태로 재배열 되고, 논문에서는 이것을“classification token” (혹은“class token”) 이라고 이야기 합니다. PatchConvNet은 이 개념을 기존의 CNN 모델에 결합시킵니다. Convolutional Stem을 통해 각 이미지 픽셀을 벡터의 집합 (aggregation)로 만들고, 일반적인 convolutional layer과 다르게 각 output을 일정한 크기의 ‘patch’ 로 나누어 줍니다. 그리고 각 patch는 class token이 되어, 특정 물체를 나타내는 형태로 classify 됩니다. 이 patch는“각 물체를 나타내는 지”에 대해서 attention weight을 가지게 되고, 이 weight을 통해 어떤 weight에 집중할 지를 결정하게 됩니다.


그림2. Augmenting Convolutional networks with attention-based aggregation (Touvron et al., 2022)

논문은 이 모델을 각 객체를 분리하거나 결합시켜 바라보는 모델 (“the model [dealing] with visual objects separately or jointly”) 이라고 설명합니다. Attention-based pooling은 각 patch에 사용된 벡터들의 의 유사성 (“the similarity of projected patches with a trainable vector akin to a class token”) 을 반영하며, 한 가지의 블록과 머리를 사용하기 때문에 (“[the model]” use[s] a single block and a single head”) 각 weight과 관련된 pooling operator을 직접적으로 전달하여 그 정확도를 높일 수 있다고 이야기 합니다.


모델 구조가 단순하고 매우 적은 수의 block이 사용되기 때문에, 이 모델은 적은 양의 메모리를 필요로 하며 매우 빠른 시간 동안 이미지를 학습하고 추론할 수 있어 실제로 활용하기에 편리한 모델입니다


그림3. Augmenting Convolutional networks with attention-based aggregation (Touvron et al., 2022)

매우 성공적인 다른 모델들 (SwinT, EfficientNet, ResNet, RegNet) 과 비교해도 결코 떨어지지 않는 성능을 보여주고 있으며, 메모리 사용량의 경우 가장 낮아 실제로 활용하기에 부담이 없음을 알 수 있습니다. 논문은 이 모델을 Classification, Segmentation, Object Detection 등의 다양한 분야에 적용시켜 의미 있는 성능을 내고 있다고 증명 하였습니다.


일반적으로 사용되던 합성곱 신경망은 max-pooling 과 같은 일획적인 방식으로 이미지의 특징을 압축하고 유추했으나, 본 논문이 소개한 “aggregation-based layer” 라는 개념은 이미지를 잘게 쪼갠 후 그 연계성을 통해 더 유기적인 형태의 압축이 가능하다는 가능성을 보여주었습니다.



 

작성자: Jacob

썸네일 이미지: Heidi

삽입 이미지: Jacob

업로드: Clark, Heidi


인용 시 출처를 표기해 주세요.

 

조회수 71회댓글 0개