본 페이지에서는 A ConvNet for the 2020 논문에 대해서 말하고자 합니다.
이 글을 읽기 전에 ResNeXt와 Swin Transformer에 대한 내용을 확인하시고 읽으시면 더 이해가 쉬우실 겁니다.
당시 ViT계열 모델이 CNN보다 좋은 성능을 내면서 SOTA를 달성했습니다.
초기의 ViT는 분야에서는 패치 또는 이미지의 크기, 연산량 등의 이유로 Backbone으로 사용되지 못해 Object Detection, Segmentation 등의 분야에서 SOTA를 달성하는데 어려움이 있었습니다.
그러나 Sliding Window Attention, Cyclic Shift Window Attention 기법과 함께 계층적 구조의 ViT의 (Swin Transformer) 등장으로 기존의 CNN Backbone을 대체할 수 있게 되었고 성능 또한 좋았습니다.
본 논문의 저자들은 Swin Transformer의 비교군으로 ResNet을 사용 했는데 두 모델은 비슷한 듯 다르며 성능이 차이가 나는 이유가 있다고 합니다.
위와 같이 말한 이유는 다음과 같습니다.
두 모델은 비슷한 Inductive Bias를 가진다는 점에서 비슷함.
학습 과정과 Macro/Micro 수준에서의 구조 디자인이 다름.
그래서 본 논문에서는 ViT의 구조 디자인을 참고하여 ResNet을 수정하며 성능에 대한 실험을 하고자 합니다.
본 논문의 방향성은 다음과 같다고 볼 수 있습니다.
Transformer의 디자인 결정이 ConvNet의 성능에 얼마나 영향을 미칠까?
본 절에서는 기존의 ResNet의 모델 구조 변경점과 이유에 대해서 말하고자 합니다.
저자들은 FLOPs를 기준으로 두가지의 비교 실험을 진행합니다.
ResNet-50 VS Swin-T : FLOPs가 거의 정도 됩니다.
ResNet-200 VS Swin-B : FLOPs가 거의 정도 됩니다.
위의 표는 각 모델의 수정방향에 따른 성능과 FLOPs를 나타낸 표 입니다.
변경 이유
변경점
ViT와 동일하게 AdamW Optimizer를 사용
DeiT와 비슷한 Hyper Paramater 사용
Mixup, Cutmix, RandAugment 등의 Data Augmentation 사용
변경 이유
변경점
변경 이유
변경점
변경 이유
ResNeXt의 Group Convolution이 FLOPs를 크게 줄이면서 Accuracy는 최대한 유지할 수 있음
Depthwise Convolution이 Self-Attention 구조에서 가중합 연산과 비슷하다고 판단(한 차원의 내에서만 정보를 혼합함)
Depthwise Conv 이후 Conv가 DepthWise의 채널별 정보가 섞이도록 함
변경점
(a)처럼 Conv를 Depthwise Conv(그룹의 수와 채널의 수가 동일한 Group Conv) 로 대체
연산량의 감소로 채널의 너비를 증가시킴 ( 64 -> 96 )
변경 이유
Transformer의 MLP 블록이 중간에서 채널을 4배로 늘렸다 줄이는 Inverted Bottleneck 구조를 사용
Inverted Bottleneck 구조를 사용하면 Shortcut Conv 레이어에서 채널의 수가 감소하기 때문에 전체 FLOPs가 오히려 줄어듦
변경점
변경 이유
Transformer의 Self Attention은 각 블록 앞에 위치함
Self-Attention과 비슷한 특징을 가지는 ConvNeXt의 Depthwise Conv를 각 블록 앞에 위치하도록 변경
변경점
성능 감소 이유
변경 이유
Swin Transformer의 Window 크기는 임
Conv 의 Kernel 크기는 성능에 중요한 영향을 미침
변경점
변경 이유
변경점
변경 이유
변경점
변경 이유
변경점
변경 이유
변경점
최종적으로 Swin-T의 성능인 81.3%를 능가하는 82.0%의 성능을 달성하였습니다.
실험했던 모델 구조들은 이미 ConvNet에 대한 이전의 연구들에서 나온 것입니다.
단지 적절히 조합하여 순수한 ConvNet의 구조를 통해 당시의 ViT 모델들보다 좋은 성능을 냈다는 점에서 의의가 있는 논문인 것 같습니다.