ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Paper Review] A ConvNet for the 2020s
    Paper Review/Model Architectures 2026. 2. 23. 12:53

    2020년대 초반, 컴퓨터 비전 분야는 ViT(Vision Transformer)의 시대였다. 원래 자연어 처리(NLP)에서 쓰이던 Transformer가 이미지 분야로 넘어오면서, 지난 10년 동안 왕좌를 지켜온 Convolutional Neural Networks(ConvNets)를 밀어내고 새로운 표준(SOTA)로 자리잡았다. 이때 당시 사람들은 이제 "합성곱(Convolution) 시대는 가고, Attention이 시대가 왔다."고 생각했다.

    하지만 이 논문의 저자들은 흥미로운 질문을 던진다. "과연 Transformer가 잘 나가는 이유가 그 메커니즘 자체가 우월해서일까, 아니면 최신 설계 기법과 학습 방식 덕분일까?"라는 질문을 던진다.

    그래서 저자들은 ResNet을 기반으로 삼아, 이를 마치 Transformer를 설계하듯이 단계적으로 '현대화(Modernize)'하는 실험을 진행한다. 이 과정에서 순수한 합성곱 레이어만을 사용하면서도, Transformer가 가졌던 구조적 장점들을 하나씩 이식해 본 것이다.

    그 결과물이 바로 ConvNeXt이다. 이 모델은 Transformer에서 사용하는 복잡한 Attention 메커니즘 없이, 우리가 익히 잘 아는 표준적인 합성곱 모듈만으로 구성되어 있다. 그런데 놀랍게도 결과는 충격적이였다. ImageNet 분류 작업에서 87.8%라는 높은 정확도를 달성하며 ViT와 대등하거나 오히려 앞서는 성능을 보여주었다.

    또한 ConvNeXt는 단순한 이미지 분류를 넘어 객체 탐지(Object Detection)나 세그멘테이션(Segmentation) 같은 일반적인 비전 작업에도 Transformer 기반 모델인 Swin Transformer를 능가하는 효율성을 보여준다. 이는 표준 합성곱 모델이 가진 단순함과 효율성을 유지하면서도, 최신 모델의 확장성(Scalability)까지 갖출 수 있음을 증명한 것이다.

    1. Introduction

    위에서 설명했듯, 2020년대를 접어들면서 자연어 처리(NLP)를 지배하던 Transformer가 비전 분야로 넘어오며 상황이 급변한다. Vision Transformer(ViT)는 초기의 패치 분할(Patchify) 레이어를 제외하면 이미지에 특화된 편향을 거의 도입하지 않았고, 데이터와 모델 크기를 키웠을 때 엄청난 성능 확장을 보여주며, ResNet을 압도해버렸다. 하지만 모델 효율성을 고민하는 사람들에게 바닐라 ViT는 꽤나 골칫거리였다. 왜냐하면 ViT의 전역 주의 집중(Global Attention) 설계는 입력 크기에 대해 이차원적인(quadratic) 연산 복잡도를 가지기 때문이다. 이미지 분류야 어찌저찌 한다고 쳐도, 해상도가 커져야 하는 객체 탐지나 세그멘테이션에서는 계산량이 감당할 수 없을 정도로 폭발해버리는 치명적인 단점이 있다.

    그래서 등장한 타협안이 바로 Swin Transformer 같은 계층적(Hierarchical) Transformer이다. 이들은 놀랍게도 국소 윈도우 내에서만 Attention을 수행하는 식별자, 즉 ConvNet의 '슬라이딩 윈도우' 전략을 다시 도입했다. 이를 통해 다양한 비전 작업에서 SOTA를 달성하여 Transformer의 범용성을 증명했지만, 역설적이게도 이 성공은 비전 분야에서 '합성곱(Convolution)의 본질'이 여전히 강력하게 요구되고 있음을 증명한 셈이 되었다. 하지만 Transformer에 억지로 합성곱의 특성을 집어넣으려다 보니, 설계가 매우 복잡해지거나 순환 시프트(Cyclic Shifting) 같은 기법을 써야 해서 시스템이 무거워지는 대가를 치러야만 했다.

    이 지점에서 저자들은 아주 날카로운 통찰을 제시한다. 사실 ConvNet은 저런 복잡한 짓을 하지 않아도 이미 그런 훌룡한 특성들을 아주 직관적이고 군더더기 없이 만족하고 있다는 것이다. 사람들이 Transformer가 우월하다고 믿는 이유는 그저 multi-head self-attention을 필두로 한 우수한 확장성(Scaling behavior) 때문이라고 생각한 것이다. 그래서 저자들은 ConvNet과 Transformmer를 비교할 때 발생하는 교란 변수들을 통제하고, 순수한 ConvNet이 도달할 수 있는 한계가 어디인지 직접 실험해보기로 마음 먹는다.

    이들의 실험 방식은 아주 직관적이다. 표준 ResNet-50을 가져다 놓고, Swin Transformer가 가진 구조적 특징들을 하나하나 차근차근 이식하며 '현대화(modernize)' 시켜보는 것이다. 그 결과, 어떠한 attention 모듈도 없이 오직 표준 합성곱 모듈로만 이루어진 강력한 'ConvNeXt'가 탄생했다. ConvNeXt는 ImageNet은 물론 COCO, ADE20K 같은 벤치 마크에서도 최신 Transformer와 당당히 경쟁하며, 정확도와 확장성 모두 밀리지 않는 모습을 보여주었다.

    2. Modernizing a ConvNet: a Roadmap

    실험 방식은 위해서 설명했듯, ResNet을 가져다가, Swin Transformer의 설계 철학을 바탕으로 하나하나 튜닝해 나가는 과정과 같다.

    실험을 공정하고 체계적으로 진행하기 위해, 저자들은 먼저 연산량(FLOPs)을 기준으로 체급을 두 개로 나누었다. 대략 4.5GFLOPs 수준의 연산량을 가진 ResNet-50과 Swin-T(Tiny)를 한 그룹으로 묶고, 15.0GFLOPs 수준의 더 큰 체급인 ResNet-200과 Swin-B(Base)를 또 다른 그룹으로 설정했다. 논문에서는 설명 편의를 위해 주로 작은 체급인 ResNet-50을 기준으로 결과를 보여준다.

    이 흥미로운 튜닝의 시작점은 우리가 아주 잘 아는 표준 ResNet-50 모델이다. 하지만 네트워크 구조를 뜯어고치기에 앞서, 저자들은 먼저 모델을 학습시키는 '방법' 자체를 최신 비전 트랜스포머(ViT)들이 사용하는 훈련 기법으로 싹 바꾸어 보았다. 놀랍게도 학습 기법만 바꿨을 뿐인데, 기존 ResNet-50보다 훨씬 향상된 성능을 얻을 수 있었고, 이것이 앞으로 진행될 모든 구조 변경 실험의 든든한 기준점(Baseline)이 된다.

    기준점을 세운 뒤, 저자들은 본격적으로 5가지 주요 단계를 거쳐 네트워크를 진화시킨다. 첫 번쨰는 네트워크의 전체적인 스테이지 비율을 조절하는 거시적 설계(Macro design)이고, 두 번째는 파라미터 효율을 높이는 ResNeXt 구조의 도입이다. 세 번째는 트랜스포머 블록과 유사한 역 병목 구조(Inverted bottleneck)를 적용하는 것이며, 네 번째는 넓은 문맥을 파악하기 위해 큰 커널 크기(Large Kernel Size)를 채택하는 과정이다. 마지막 다섯 번째는 활성화 함수나 정규화 기법 등을 트랜스포머와 비슷하게 맞추는 미시적 설계(Micro design) 작업이다.

    저자들이 제시한 전체 로드맵 그래프를 보면, Attention 모듈을 전혀 추가하지 않고도 이 단계들을 거칠 때마다 점진적으로 성능이 올라가는 것을 명확히 확인할 수 있다. 여기서 눈여겨봐야 할 포인트가 있는데, 바로 네트워크의 연산 복잡도가 최종 성능과 직결되기 때문에, 저자들은 튜닝 과정 내내 타겟 모델과 비슷한 연산량(FLOPs)을 유지하도록 아주 세심하게 통제했다는 점이다. 이 모든 치밀한 변환 과정과 평가는 ImageNet-1K 데이터셋을 기준으로 진행되었다.

    2.1 Training Techniques

    저자들은 본격적으로 ResNet의 구조를 뜯어고치기에 앞서, 아주 재미있는 실험을 하나 진행한다. 바로 기존의 평범한 ResNet 모델에 트랜스포머들이 사용하는 학습 기법들을 똑같이 적용해 본 것이다.

    구체적으로 저자들은 DeiT나 Swin Transformer에서 사용하는 방식을 차용했다. 과거 ResNet을 학습시킬 때 보통 90번(Epoch) 정도만 돌리던 것을 무려 300번으로 넉넉하게 늘려 학습시켰다. 최적화 알고리즘도 트랜스포머에서 찰떡궁합으로 자랑하는 AdamW 옵티마이저로 교체했다. 여기에 Mixup이나 Cutmix, RandAugment처럼 최근 각광받는 강력한 이미지 데이터 증강(Data Augmentation) 기법들을 적용하고, 과적합을 막아주는 Stochastic Depth, Label Smoothing 같은 최신 정규화 기법들까지 아낌없이 투자했다.

    그 결과 네트워크 구조는 단 하나도 바꾸지 않은 ResNet-50임에도 불구하고, ImageNet 정확도가 기존 76.1%에서 무려 2.7%나 상승하는 결과를 보여준다.

    이 수치가 우리에게 주는 통찰은 엄청나다. 우리가 그동한 CNN과 최신 Transformer 사이에 존재한다고 믿어왔던 거대한 성능 격차 중 상당 부분이, 사실 모델 아키텍처의 우월함 때문이 아니라 그저 '더 현대적인 학습 기법'을 사용했기 때문일 수 있다는 의미이다.

    저자들은 이렇게 새로운 훈련 기법으로 성능을 한껏 끌어올린 ResNet-50을 앞으로 진행할 모든 구조 변경 실험의 '탄탄한 기준점(Baseline)'으로 삼았다. 구조 외의 다른 변수(교란 변수)들을 완벽히 통제하고, 오직 아키텍처의 변화가 가져오는 순수한 성능 향상만을 관찰하겠다는 연구 전략인 셈이다.

    2.2 Macro Design

    사실 Swin Transformer 같은 계층적(Hierarchical) 비전 트랜스포머는 그 구조를 가만히 들여다보면 기존의 ConvNet이 사용하던 Multi-Stage 구조를 그대로 따르고 있다. 네트워크가 깊어질수록 특징맵(Feature map)의 해상도를 줄여나가는 단계적인 구성을 취하고 있다. 여기서 저자들은 네트워크 전체의 골격을 좌우하는 두 가지 흥미로운 설계 포인트를 짚어낸다. 하나는 각 스테이지에 연산량을 얼마나 배분할 것인가 하는 '비율' 문제이고, 다른 하나는 이미지가 처음 네트워크에 들어올 때 처리되는 '입구(Stem)'의 구조이다.

    첫 번째로 '스테이지 연산 비율(Stage compute ratio)'를 살펴보면, 기존 ResNet-50은 총 4개의 스테이지를 가지고 이씨는데, 각 스테이지에 들어가는 블록의 개수가 (3,4,6,3)으로 구성되어 있다. 특히 세 번째 스테이지가 무겁게 설계되어 있는데, 이는 객체 탐지 같은 후속 작어벵서 주로 14x14 크기의 특징맵을 기반으로 Head가 동작하기 때문에 그 단계의 처리량을 늘려둔 것이다.

    그런데 Swin Transformer는 이 원리를 따르면서도 블록 배분 비율을 약간 다르게 가져간다. 기본 모델인 Swin-T는 이 비율을 1:1:3:1로 설정하고, 더 큰 모델들은 1:1:9:1까지 세 번째 스테이지에 연산량을 극단적으로 몰아준다. 그래서 저자들도 우리 Baseliine인 ResNet-50의 블록 개수를 (3, 3, 9, 3)으로 수정해보았다. 이렇게 하면, Swin-T와 연산량(FLOPs)도 엇비슷하게 맞춰진다. 놀랍게도 단순히 블록을 재배치한 것만으로도 모델의 정확도가 78.8%에서 79.4%로 뛰어올랐다. 구조를 더 최적화할 여지가 분명이 있다는 것을 보여주는 셈이다.

    두 번째 변경점은 이미지가 처음 들어오는 관문, 즉 '스템(Stem)'의 구조를 트랜스포머의 '패치화(Patchify)' 방식으로 바꾸는 것이다. 자연 이미지에는 중복되는 픽셀 정보가 아주 많기 때문에, 네트워크 초입에서는 일반적으로 입력 이미지의 해상도를 팍 줄여버리는 과감한 다운샘플링을 진행한다. 기존 ResNet의 스템은 7x7 크기의 큰 합성곱 레이어(stride==2)를 거친 다음 Max Pool을 연속으로 적용해서 이미지를 4배 축소하는 방식을 썼다.

    반면 ViT는 이미지를 바둑판 모양의 패치로 뚝뚝 썰어내는 아주 공격적인 '패채화' 전략을 사용한다. 이는 커널 크기를 14나 16정도로 크게 잡고 필터가 사로 겹치지 않게(non-overlapping) 훌쩍훌쩍 건너뛰며 합성곱을 수행하는 것과 같은 원리이다. Swin Transformer 역시 다중 스테이지 구조를 유지하기 위해 패치 크기를 4로 잡은 패치화 스템을 사용하고 있다.

    그래서 저자들도 기존 ResNet의 풀링이 섞인 복잡한 스템을 과감히 버리고, 아주 단순하게 4x4 크기의 합성곱 필터를 보폭 4로 설정해서 겹치지 않게 훑고 지나가는 트랜스포머 스타일의 스템 레이어로 교체했다. 그 결과 정확도가 79.4%에서 79.5%로 소폭 더 올랐다. 굳이 복잡한 기존 방식을 고집할 필요 없이, ViT 스타일의 단순한 패치와 스템만으로도 동일하거나 더 나은 성능을 낼 수 있다는 걸 확인한 것이다.

    2.3 ResNeXt-ify

    저자들은 기본 ResNet보다 연산량(FLOPs) 대비 정확도 효율(trade-off)이 훨씬 뛰어난 ResNeXt 모델의 아이디어를 도입하기로 한다. ResNeXt의 핵심은 필터를 여러 그룹으로 나누어 연산하는 '그룹 합성곱(Grouped Convolution)'을 사용하는 것이다. 이 아키텍처의 기본 설계 철학은 단순 명료하게 "그룹 수를 늘리고, 그로 인해 남는 연산 여력을 활용해 네트워크 너비(채널 수)를 확장하라"는 것이다.

    이 철학을 구체화하기 위해 저자들은 병목(Bottleneck) 블록에 있던 기존 3x3 합성곱 레이어를 '깊이별 합성곱(Depthwise Convolution)'으로 전격 교체한다. 이 연산은 그룹의 수가 곧 채널의 수와 같아지는 극단적인 형태의 그룹 합성곱으로, 경량화 모델인 MobileNet 등에 쓰이는 연산이다.

    깊이별 합성곱은 채널끼리 섞지 않고 각 채널별로 독립적으로 '공간적 차원'에서만 정보를 섞어주는 역할을 한다. 놀랍게도 이 동작 방식이 트랜스포머의 Self-attention 모듈에서 일어나는 연산과 그 성질이 본질적으로 동일하다. 비전 트랜스포머의 큰 특징 중 하나는 공간 정보를 섞는 작업과 채널 정보를 섞는 작업을 결코 동시에 하지 않고, 철저하게 분리해서 수행한다는 점이다. 따라서 ConvNext에서도 Depthwise Conv과 1x1 Conv을 순차적으로 조합하면, 트랜스포머가 가진 정보 혼합의 분리 메커니즘을 합성곱만으로 완벽하게 구현해 낼 수 있게 되는 것이다.

    하지만 기존의 무거운 합성곱을 가벼운 Depthwise Conv로 바꾸면 전체 연산량(FLOPs)이 획기적으로 줄어들지만, 모델의 표현력이 떨어져 일시적으로 정확도도 함께 하락하게 된다. 이를 극복하기 위해 저자들은 앞서 말한 ResNeXt의 "너비 확장" 전략을 꺼낸다. 손실된 모델의 수용력을 넉넉하게 보상해 주기 위해 네트워크의 기본 채널 수를 64에서 Swin-T 모델과 동일한 96으로 확 늘렸다. 그 결과, 네트워크의 연산량은 5.3G로 약간 늘어났지만, 정확도가 80.5%로 눈에 띄게 수직 상승하는 훌룡한 최적화 성과를 얻게 된다.

    2.4 Inverted Bottleneck

    모든 트랜스포머 블록이 공통적으로 가지는 중요한 설계 특징 중 하나가 바로 "Inverted Bottleneck" 구조를 만든다는 점이다. 이는 다층 퍼셉트론(MLP) 블록의 은닉 차원(Hidden dimension)이 입력 차원보다 무려 4배나 더 넓어지는 형태를 의미한다. 재미있게도 트랜스포머의 이러한 설계는, MobileNetV2에서 대중화되고 최신 합성곱 신경망 구조들에서도 널리 쓰이는 팽창 비율 4짜라 Inverted Bottleneck 설계와 깊게 맞닿아 있다.

    그래서 저자들은 앞서 만든 블록 구조를 이 Inverted Bottleneck 형태로 과감하게 바꿔보는 실험을 진행했다. 아래 그림의 (a)에서 (b)로 넘어가는 과정을 보면 채널 차원이 어떻게 팽창하고 축소되는지 직관적으로 이해할 수 있을 것이다.

    여기서 아주 기가 막힌 현상이 발생한다. 블록의 중간 차원이 넓어지다 보니, 그 넓은 차원에서 연산을 수행하는 Depthwise Convolution 레이어 자체의 연산량은 구조적으로 늘어날 수 밖에 없다. 그런데 막상 전체 네트워크의 연산량을 계산해보니 5.3G에서 4.6G로 오히려 쑥 줄어드는 마법같은 일이 벌어졌다. 도대체 어떻게 가능했을까? 그 비밀은 바로 다운샘플링을 수행하는 잔차 블록(residual Block)에 있었다. 블록을 건너뛰는 지름길(Shortcut) 역할을 하는 1x1 합성곱 레이어에서 발생하는 연산량이 엄청나게 감소했기 때문이다.

    연산량은 이렇게 눈에 띄게 줄었는데, 놀랍게도 전체 모델의 성능은 80.5%에서 80.6%로 오히려 살짝 더 올라갔다. 더 흥미로운 사실은 체급이 후렀니 큰 ResNet-200이나 Swin-B 수준의 모델에 이 구조를 적용했을 때이다. 이 큰 체급에서의 연산량이 줄어듦과 동시에 정확도가 81.9%에서 82.6%로 훨씬 더 의미 있는 폭발적인 상승을 보여주었다.

    결국 저자들은 이 과정에서 연산량 감소와 성능 향상이라는 두 마리 토끼를 훌력하게 잡아낸 역 병목 구조를 앞으로 계속 사용하기로 확정 짓는다.

    2.5 Large Kernel Sizes

    이 부분에서는 합성곱 필터(Kernel)의 크기에 초점을 맞추어 실험을 진행한다. 비전 트랜스포머가 강력한 이유 중 하나는 Self-Attention 메커니즘 덕분에 각 레이어가 전역적인(Global) 시야를 가질 수 있다는 점이다. 과거의 합성곱 모델들도 큰 커늘을 사용한 적이 있지만, VGGNet이 등장한 이후로는 GPU 하드웨어에서 연산 효율이 극도로 높은 3x3 크기의 작은 커널을 여러 층 쌓아 올리는 것이 일종의 Standard로 굳어졌다. 하지만 Swin Transformer가 Self-Attention 블록에 Local Window를 다시 도입했을 때도 그 창의 크기가 7x7로 기존 ResNe(X)t의 3x3보다 크다는 점에 착안하여, 저자들은 합성곱 신경망에서도 큰 커널의 사용을 다시 한번 재검토해 보기로 한다.

    큰 커널을 본격적으로 적용하기 위해 저자들은 아주 중요한 사전 작업을 하나 거친다. 바로 깊이별 합성곱(Depthwise Conv)레이어의 위치를 블록의 위쪽으로 끌어올리는 것이다. 이는 트랜스포머 블록에서 복잡한 연산을 하는 모듈(MSA)이 다층 퍼셉트론(MLP) 레이어보다 먼저 배치되는 것과 완벽히 일치하는 설계 결정이다. 앞서 우리가 Invereted bottleneck 구조를 만들었기 때문에, 복잡하고 무거운 큰 커널 연산은 채널 수가 적은 블록의 앞쪽에서 가볍게 처리하고, 연산 효율이 높은 1x1 합성곱 레이어가 넓어진 채널에서 묵직한 정보 처리 작업을 수행하도록 역할을 나누는 아주 자연스러운 구조가 완성된다. 이 중간 단계를 거치면서 네트워크의 연산량(FLOPs)은 4.1G로 오히려 감소했고, 이에 따라 정확도가 79.9%로 일시적인 하락을 겪게 된다.

    모든 준비를 마쳤으니 진짜로 커널 크기를 키워볼 시간이다. 저자들은 커널 크기를 3부터 5, 7, 9, 11까지 다양하게 늘려가며 실험을 진행했고, 더 큰 커널을 채택했을 때의 이점이 아주 뚜렷하게 나타났다. 네트워크의 전체 연산량을 거의 그대로 유지되면서, 정확도는 3x3 커널의 79.9%에서 7x7 커널의 80.6%로 눈에 띄게 상승하는 것을 확인했다. 흥미로운 점은 커널 크기를 무한정 키운다고 성능이 계속 오르는 것은 아니며, 7x7 크기에서 성능 향상이 포화 상태(Saturation point)에 도달하는 것을 발견했다. 이 현상은 체급이 더 큰 ResNet-200 기반 모델에서도 더 이상 이득이 발생하지 않는다는 동일한 결과로 검증되었다.

    결과적으로 저자들은 각 블록마다 7x7 크기의 깊이벼려 합성곱을 최종적으로 사용하기로 결정한다. 여기까지가 거시적(Macro) 관점에서의 아키텍처 탐구의 마무리이다.

    2.6 Micro Design

    지금까지는 뼈대를 큼직큼직하게 다듬었다면, 여기서는 모델을 이루는 각 레이어 단위의 디테일들을 트랜스포머 스타일에 맞게 정교하게 손을 본다. 특히 '활성화 함수(Activaion Function)'와 '정규화 레이어(Normalization Layer)'에 집중해서 실험을 진행한다.

    가장 먼저, 활성화 함수이다. 기존 비전 분야에서는 오랫동안 계산이 빠르고 단순한 ReLU를 사용해왔다. 하지만 최근 가장 진보된 트랜스포머 모델들은 ReLU를 부드럽게 깎은 형태인 GELU를 주로 사용한다. 저자들도 대세에 따라 우리 모델의 ReLU를 모두 GELU로 교체해 버리는데, 성능은 80.6%로 변함이 없었다.

    하지만 진짜 재미있는 부분은 '개수'에 있다. 기존 ConvNet의 관행은 모든 합성곱 레이어 뒤에 무조건 활성화 함수를 하나씩 붙이는 것이었다. 하지만 트랜스포머 블록을 가만히 보면, 내부에 여러 개의 선형 레이어가 있음에도 불구하고 활성화 함수는 다층 퍼셉트론(MLP) 블록 안에 딱 하나만 존재한다. 그래서 저자들도 이 방식을 따라 잔차 블록(residual Block) 내에 있던 다른 활성화 함수들을 전부 제거하고, 오직 두 개의 1x1 합성곱 레이어 사이에만 단 하나의 GELU를 남겨두었다. 놀랍게도 이렇게 활성화 함수를 줄였더니 오히려 정확도가 0.7%나 크게 상승하여 81.3%를 달성했고, 타겟이였던 Swin-T 모델의 성능을 따라잡게 된다.

    다음 타깃은 정규화 레이어(Normalization Layer)이다. 트랜스포머는 정규화 레이어의 개수도 적게 사용한다. 그래서 기존 블록에 있던 여러 개의 배치 정규화(Batch Norm, BN) 레이어들을 덜어내고, 1x1 합성곱 전에 딱 하나만 남겨 보았다. 그랬더니 성능이 81.4%로 상승하며 Swin-T를 추월하게 된다.

    이어서 하나 남은 정규화 레이어의 종류마저 바꾸어 본다. 원래 ConvNet에서는 BN이 필수발가결한 요소로 여겼지만, 때로는 훈련을 불안정하게 만드는 여러 복잡한 문제들을 안고 있었다. 반면 트랜스포머는 훨씬 단순한 계층 정규화(Layer Normalization, LN)을 사용하여 훌룡한 성능을 내고 있었다. 과거에는 오리지널 ResNet에 LN을 억지로 끼워넣으면 성능이 떨어졌지만, 지금까지 구조와 훈련 기법을 싹 다듬어 놓은 현재 모델은 LN을 아주 부드럽게 소화해내고, 성능은 81.5%로 소폭 증가했다.

    마지막은 다운샘플링 레이어의 분리이다. 기존 ResNet은 각 스테이지의 맨 처음 잔차 블록에서 보폭 2짜리 3x3 합성곱을 사용해 은근슬쩍 해상도를 줄이는 방식을 썼다. 반면 Swin Transformer는 스테이지 사이에 보폭 2짜리 2x2 합성곱을 배치하여 다운 샘플링 레이어를 독립시켰다. 처음에는 이 변경 때문에 학습이 불안정해져서 모델이 붕괴되는 현상이 발생했지만, 저자들은 Swin-Transformer가 했던 것처럼 공간 해상도가 변하는 곳(다운샘플링 전, 스템 이훟, 최종 풀링 이후)마다 LN 레이어를 하나씩 꼼꼼하게 덧대어 줌으로써 학습을 완벽하게 안정화시켰다. 이 마지막 튜닝을 거치며 모델의 성능은 무로 82.0%로 뛰어올라, 타겟 모델인 Swin-T(81.3%)보다 훨씬 성능이 좋아지게 된다.

    3. Evaluation

    가장 먼저 저자들은 ConvNeXt 모델이 트랜스포머처럼 덩치를 키워도 성능이 잘 올라가는지 확인하고 싶었다. 그래서 Swin Transformer의 체급(Tiny, Small, Base, Large)에 딱 맞게 채널 수와 블록 수를 조절하여 ConvNeXt-T, S, B, L 버전을 만들었고, 한계 돌파를 위해 더 거대한 규모인 ConvNeXt-XL 모델까지 추가로 구축하였다.


    컴퓨터 비전 모델의 기본 체력장이라고 할 수 있는 ImageNet-1K 분류 결과를 보면 아주 놀랍다. ConvNeXt는 RegNet이나 EfficientNet 같은 강력한 기존 합성곱 모델들과 견주어도 정확도와 연산량 측면에서 훌룡한 효율을 보여준다. 무엇보다 동급의 Swin Transformer 모델들을 전 구간에서 압도하는 결과를 냈다. 해상도를 살짝 키운 세팅에서도 ConvNeXt-B 모델이 Swin-B보다 정확도가 0.6% 더 높으면서도 추론 속도(Throughput)는 무려 12.5%나 더 빠르다는 사실이다. 윈도우 이동이나 상대적 위치 편향 같은 복잡한 특수 모듈을 전혀 사용하지 않는 단순한 구조 덕분에 속도 면에서 확실한 이득을 챙긴 것이다.

    또한, 데이터가 엄청나게 많을 때는 편향이 적은 트랜스포머가 합성곱보다 훨씬 유리하다는 믿음이 있었다. 저자들은 이 믿음을 실험하기 위해 무려 1400만 장의 이미지를 가진 ImageNet-22k 대규모 데이터셋으로 사전 학습을 진행해보았다. 결과는 ConvNeXt 모델이 대규모 데이터 학습에서도 결코 트랜스포메 밀리지 않는다는 것을 완벽히 증명해 냈다. 가장 거대한 ConvNeXt-XL 모델은 정확도를 무려 87.8%까지 끌어올리며 합성곱 신경망도 엄청난 확장성을 가질 수 있음을 입증했다.

    또한 단순 이미지 분류를 넘어 객체 탐지나, 세그멘테이션 같은 다운스트림 테스트에서도 성능을 발휘한다. COCO 데이터 셋에서 객체 탐지와 인스턴스 세그멘테이션을 평가했을 때, ConvNeXt는 모든 체급에 걸쳐 Swin Transformer와 대등하거나 더 뛰어난 성과를 달성했다.

    하드웨어 효율성 부분에서도 ConvNeXt는 뛰어났다. ConvNeXt의 추론 처리량은 해상도에 상관없이 Swin Transformer와 비슷하거나 오히려 가뿐히 넘어서는 속도를 보려준다. 심지어 모델을 학습시킬 때 필요한 메모리 사용량도 훨씬 적었다. 예를 들어, Cascade Mask-RCNN 구조르르 학습시킬 때 Swin-B는 18.5GB의 메모리를 차지하는 반면, ConvNeXt-B는 17.4GB만으로도 학습이 가능했다.

    정리하자면 ConvNeXt는 유행을 타던 트랜스포머의 복잡한 기교 없이도 순수한 합성곱의 뼈대만으로 압도적인 정확도, 거대한 데이터에 대한 확장성, 그리고 실용적인 하드웨어 효율성까지 싹 다 거머쥔 기념비적인 모델이다.

    Conclusion

    Transformer 유행 중에 CNN이 Transformer를 이기는 구조를 만든게 대단하다고 생각한다. 또한 엄청난 학습량이 필요했을 것 같은데,, 역시 자원이 많으니 이런 실험도 가능하겠구나 생각이 든다...

    또한 해당 논문은 어떤 새로운 설정을 넣은 것이 아닌 현재까지 연구해온 금증된 설정들을 가지고 ResNet을 튜닝하며 성능을 하나씩 올렸다는 점에서 논문을 읽으면서도 재미를 느꼈고 신기하기도 했다.

    모델 경량화를 연구하는 입장에서 보면, 무조건 최신의 복잡한 연산을 끼워넣기보단, 이미 검증된 것들을 어떻게 배치하고 최적화하느냐에 따라 모델 성능이 극적으로 달라질 수 있다는 것에 감명을 받았다.

Designed by Tistory.