본문 바로가기
Computer Vision

RepVGG (2021) 논문 리뷰

by 아르카눔 2025. 6. 24.

RepVGG 논문 제목은 RepVGG: Making VGG-style ConvNets Great Again다. (링크)

 

저자들은 Xiaohan Ding, Xiangyu Zhang, Ningning Ma, Jungong Han, Guiguang Ding, Jian Sun
다.

 

Github: 링크

 

YOLOv6 부터 해서 계속해서 RepBlock이나 RepConv가 나오길래 한 번 각 잡고 봐야겠다 싶어서 리뷰하는 논문이다.

 

 

Abstract

VGG와 비슷한 구조는 3 x 3 conv와 ReLU를 쌓은 구조다. 트레이닝 때와 추론 때의 아키텍처를 분리하는 것을 re-parameterization 기법이라고 하며 이러한 모델을 RepVGG라고 한다. ImageNet에 적용하여 일반적인 모델과 견줄만한 성능이면서도 ResNet-50 보다 80% 빠르고 ResNet-101 보다 101% 빠르다. 또한 Accuracy-speed trade-off 정확도-속도 트레이드오프에서 EfficientNet이나 RegNet 같은 SOTA 모델과도 견줄만하다. 

 

여러 모델들과 RepVGG의 정확도-속도 트레이드오프의 비교 결과는 아래 Figure 1에 제시된다.

 

 

 

1. Introduction

본 논문에서 저자들은 RepVGG를 제안한다. VGG-style 아키텍처로 다양한 복잡한 모델들을 능가한다.  (Figure1 참조).

 

RepVGG 다음의 강점들을 갖는다.

 

  • VGG와 유사하며 plain (a.k.a. feed-forward) topology 1이며 다른 브랜치가 없다. 이는 모든 레이어가 이전 레이어의 출력을 입력으로 받을 수 있으며, 출력을 다음 레이어로 보낼 수 있다.
  • 모델의 몸체는 오직 3 × 3 conv와 ReLU만 사용한다.
  • 구체적인 아키텍처 (구체적인 depth와 레이어 widths 포함)은 instantiated 예시화되는데 다음의 내용들 없이 가능하다, automatic search, manual refinement, compound scaling, 혹은 다른 heavy designs.

Plain model 플레인 모델은 멀티 브랜치 아키텍처에서 비견할만한 성능에 도달하기 어렵다. 하나의 설명으로는 ResNet 같은 multi-branch topology은 모델로 하여금 암묵적으로 shallower models의 앙상블을 만들고, 이를 통해 멀티 브랜치 모델의 그라디언트 배니싱 문제를 피한다. 멀티 브랜치 아키텍처 학습에서의 장점과 단점은 추론에서 원하지 않는 내용이므로, 저자들은 멀티 브랜치 학습 시기와 플레인 모델 추론 시기를 서로 분리시키는데 아키텍처를 변환하는 structural re-parametrization 구조적 재파라미터화를 통해서 달성한다. 

 

더 상세하게는, 네트워크 구조는 파라미터의 집합과 연결되어있다. 예를 들어서 컨볼루션 레이어는 4th-order 커널 텐서로 표시된다. 특정한 구조의 파라미터를 다른 구조의 파라미터 집합과 연결한다면, 우리는 전자를 후자로 대체하여 전반적인 네트워크 구조를 바꿀 수 있다. 

 

구체적으로는 저자들은 학습 시기에는 ResNet에 영감을 받아서 identity와 1x1 브랜치들로 RepVGG를 구성한다. 하지만 structural re-parameteriziation 때는 이 브랜치들을 제거할 수 있다 (아래의 Figure 2와 4). 학습 후에는 간단한 대수를 통해서 transformatoin 변환을 수행하는데, identity를 degraded 1x1 conv로 간주하고 후자는 degraded 3x3 conv로 간주한다. 따라서 Single 단일 3x3 kernel을 구성하는데, 구성요소들은 원본 3x3 kernel의 학습된 파라미터와 identity, 그리고 1x1 브랜치들과 batch normalziation (BN) 레이어다. 결과적으로, 변환된 모델은 3x3 컨볼루션 레이어들을 쌓은 형태로 test and deployment 테스트와 배포를 위해서 저장된다. 

 

 

 

 특히, 추론 시기에 RepVGG는 단일 타입의 연산: 3 × 3 conv와 그 뒤에 이어지는 ReLU, 을 지니는데 이는 RepVGG를 GPU와 같은 포괄적인 계산 기기들에 대해서 빠르게 계산하게 만든다. 추가적인 장점은 RepVGG는 특화된 하드웨어에 대해서 주어진 칩 크기와 전력 소비에 있어서 더 빠른 속도를 달성을 가능하게 한다. 더 적은 종류의 연산을 요구하기 때문에 하나의 칩에 더 많은 계산 유닛을 통합할 수 있다. 결과적으로 RepVGG에 특화된 추론 칩은 방대한 숫자의 3×3-ReLU units와 더 적은 메모리 유닛 (because the plain topology is memory-economical, as shown in Fig. 3)을 지닌다.

 

본 연구의 기여를 요약하면 다음과 같다.

  • RepVGG라는 간단하면서도 SOTA에 비견되는 속도-정확도 트레이드오프에 유리한 아키텍처를 제시한다.
  • Structural re-parameterization을 제시하여 학습 시기의 멀티 브랜치 토폴로지와 추론 시기의 플레인 아키텍처를 분리한다.
  • RepVGG가 image classification과 semantic segmentation에서 효율적이며 구현에 있어서도 효율적이고 쉬움을 보인다.

 

 

 

3. Building RepVGG via Structural Re-param

3.1. Simple is Fast, Memory-economical, Flexible

단순한 ConvNets를 사용하는 3가지 이유가 있다. Fast, Memory-economical, Flexible

 

Fast

많은 최신 멀티 브랜치 아키텍처들은 VGG 보다 낮은 이론적인 FLOPs를 가지지만 더 느리게 동작할 수 있다. 예를 들어서 VGG-16은 EfficientNet-B3 보다 8.4x FLOPs를 가지지만 1050Ti에서 (아래 Table 4 참조) 실행하면 1.8x 더 빠르다. 이는 VGG-16의 계산 밀도가  EfficientNet-B3 보다 약 15배 (=8.4 x 1.8) 더 높음을 의미한다. 

 

 

 

Winograd 컨볼루션으로 인한 가속 외에도, FLOPs와 속도 간의 불일치는 속도에 상당한 영향을 미치지만 FLOPs에 의해 고려되지 않는 두 가지 중요한 요소, 즉 Multiply–ACcumulate (MAC) 메모리 접근 비용과 degree of paralleism 병렬 처리 정도에 기인한다. 예를 들어, 브랜치 덧셈이나 연결에 필요한 계산은 미미하지만, MAC은 상당하다.

 

더욱이, MAC은 groupwise convolution 그룹별 컨볼루션에서 시간 사용량의 큰 부분을 차지한다. 반면에, 높은 병렬 처리 정도를 가진 모델은 동일한 FLOPs를 가질 때 낮은 병렬 처리 정도를 가진 모델보다 훨씬 빠를 수 있다. Inception 및 auto-generated architectures 자동 생성된 아키텍처에서 다중 브랜치 토폴로지가 널리 채택되면서 몇 개의 큰 연산자 대신 여러 개의 작은 operators 연산자가 사용된다. 이전 연구 Shufflenet v2에서는 NASNET-A 의 fragmented 파편화된 연산자 수(즉, 하나의 빌딩 블록에 있는 개별 컨볼루션 또는 풀링 연산의 수)가 13개라고 보고했다. 이는 GPU와 같이 강력한 병렬 컴퓨팅 능력을 가진 장치에는 적합하지 않으며 커널 실행 및 동기화와 같은 추가 오버헤드를 발생시킨다. 이와 대조적으로, ResNet에서는 이 숫자가 2~3이며,저자들은 이 숫자를 1개, 즉 single conv 단일 컨볼루션으로 만든다.

 

 

Memory-economical

 

다중 브랜치 토폴로지는 메모리 비효율적이다. 왜냐하면 모든 브랜치의 결과가 덧셈 또는 연결될 때까지 유지되어야 하므로, 메모리 점유의 최대값을 크게 높이기 때문이다. 위에서 제시된 Figure 3은 residual block 잔차 블록에 대한 입력이 덧셈까지 유지되어야 함을 보여준다. 블록이 피쳐 맵 크기를 유지한다고 가정하면, 추가 메모리 점유의 최대값은 입력의 2배다. 이와 대조적으로, 일반 토폴로지는 특정 레이어에 대한 입력이 사용한 메모리가 연산이 완료되면 즉시 해제될 수 있도록 한다. 특화된 하드웨어를 설계할 때, 일반 ConvNet은 깊은 메모리 최적화를 가능하게 하고 메모리 장치 비용을 줄여서 칩에 더 많은 컴퓨팅 장치를 통합할 수 있게 한다.

 

 

Flexible

 

다중 브랜치 토폴로지는 아키텍처 사양에 제약을 가한다. 예를 들어, ResNet은 컨볼루션 레이어가 잔차 블록으로 구성되어야 하므로 유연성을 제한한다. 그 이유는 모든 잔차 블록의 마지막 컨볼루션 레이어는 동일한 형태의 텐서를 생성해야만 shortcut addition이 의미가 있기 때문이다.


더욱 나쁜 점은 다중 브랜치 토폴로지가 중요한 채널을 제거하는 실용적인 기술인 channel pruning 채널 가지치기의 적용의 제한이다. Approximated Oracle Filter Pruning (AOFP) 같은 일부 방법은 각 레이어의 적절한 width 너비를 자동으로 찾아 모델 구조를 최적화할 수 있지만, 다중 브랜치 모델은 가지치기를 까다롭게 만들고 상당한 성능 저하 또는 낮은 가속 비율을 초래한다.
이와 대조적으로, 일반 아키텍처는 요구 사항에 따라 모든 컨볼루션 레이어를 자유롭게 구성하고, 더 나은 성능-효율성 트레이드오프를 얻기 위해 가지치기를 할 수 있도록 만든다.

 

 

3.2. Training-time Multi-branch Architecture

단순한 ConvNet은 많은 장점을 가지고 있지만 치명적인 약점 하나를 지니는데 바로 저조한 성능이다. 예를 들어 BN과 같은 현대적인 구성 요소를 사용하더라도 VGG-16은 ImageNet에서 72% 이상의 Top-1 정확도를 달성할 수 있는데, 이는 현재 시점에서는 구식이다.

저자들이 제시하는 structural re-parameterization method 구조적 재-매개변수화 방법은 ResNet에서 영감을 받았다. ResNet은 $y = x + f(x)$와 같이 정보 흐름을 모델링하기 위해 명시적으로 shortcut 지름길 브랜치를 구성하고, 잔차 블록을 사용하여 $f$를 학습한다. $x$와 $f(x)$의 차원이 일치하지 않을 경우, $y = g(x) + f(x)$가 되는데, 여기서 $g(x)$는 1×1 컨볼루션으로 구현된 컨볼루션 shortcut이다. ResNet의 성공에 대한 한 가지 설명은 이러한 다중 브랜치 아키텍처가 모델을 수많은 더 얕은 모델들의 암묵적인 앙상블로 만든다는 것이다. 구체적으로는 n개의 블록이 있을 때, 모든 블록이 흐름을 두 경로로 분기시키므로, 모델은 2n개의 모델 앙상블로 해석될 수 있다.

다중 브랜치 토폴로지가 추론에서는 단점이 있지만 브랜치는 학습에 유익한 것으로 보이므로, 저자들은 오직 학습 시기에서만 작동하는 수많은 모델들의 앙상블을 만들기 위해 여러 브랜치를 사용한다. 대부분의 멤버를 더 얕거나 더 단순하게 만들기 위해, ResNet과 유사한 identity 항등 브랜치 (차원이 일치할 경우에만)와 1×1 브랜치를 사용한다. 따라서 빌딩 블록의 학습 시 정보 흐름은 $y = x + g(x) + f(x)$가 된다. 이러한 블록을 여러 겹으로 쌓아서 학습 시기의 모델을 구성한다. Residual networks behave like ensembles of relatively shallow networks (링크) 논문과 동일한 관점에서, n개의 블록이 있는 모델은 3n 개의 멤버 앙상블이 된다.

 

 

3.3. Re-param for Plain Inference-time Model

 

이 하위 섹션에서는 학습된 블록을 추론을 위한 단일 3×3 컨볼루션 레이어로 변환하는 방법을 설명한다. 각 브랜치에서 덧셈 전에 BN을 사용한다는 점에 유의해야한다 (Figure 4).

 

 

 

3x3 컨볼루션의 입력 채널은 $C_1$, 출력 채널은 $C_2$ 그리고 커널을 $W^{(3)} \in \mathbb{R}^{C_2 \times C_1 \times 3 \times 3}$으로, 1×1 브랜치의 커널을 $W^{(1)} \in \mathbb{R}^{C_2 \times C_1}$으로 표기한다.

 


3×3 컨볼루션 뒤에 오는 BN 레이어의 누적 평균, 표준 편차, 학습된 스케일링 계수 및 바이어스를 $\mu^{(3)}, \sigma^{(3)}, \gamma^{(3)}, \beta^{(3)}$으로 사용하고, 1×1 컨볼루션 뒤에 오는 BN에 대해 $\mu^{(1)}, \sigma^{(1)}, \gamma^{(1)}, \beta^{(1)}$을 사용하며, identity 항등 브랜치에 대해 $\mu^{(0)}, \sigma^{(0)}, \gamma^{(0)}, \beta^{(0)}$를 사용한다.

 

$M^{(1)} \in \mathbb{R}^{N \times C_1 \times H_1 \times W_1}$는 입력이고, $M^{(2)} \in \mathbb{R}^{N \times C_2 \times H_2 \times W_2}$은 출력이며, $*$는 컨볼루션 연산자라고 한다.

 

 

이때, $C_1 = C_2, H_1 = H2, W_1 = W_2$이면 다음의 식 (1)을 얻는다.

 

 

다른 한편으로 항등 브랜치가 없다면 위 식 (1)은 첫 2개의 텀만 남기게 되며 다음의 (2)식이 된다. 이때 $\forall 1 \leq i \leq C_2$에 대해서 다음이 성립한다.

 

{$W', b'$}는 {$W, \mu, \sigma, \gamma, \beta$}로 부터 변환된 커널과 바이어스다. 따라서 아래 식 (3)을 갖는다.

 

 

$\forall 1 \leq i \leq C_2$에 대해서 다음의 식 (4)도 성립한다.

 

 

이 변환은 항등 브랜치에도 적용된다. 왜냐하면 항등은 identity matrix 항등 행렬을 커널로 하는 1×1 컨볼루션으로 볼 수 있기 때문이다. 이러한 변환 후에는 하나의 3×3 커널, 두 개의 1×1 커널, 그리고 세 개의 바이어스 벡터를 가지게 된다. 그런 다음 세 개의 바이어스 벡터를 합하여 최종 바이어스를 얻고, 두 개의 1×1 커널을 3×3 커널의 중앙 지점에 추가하여 최종 3×3 커널을 얻는다.

 

이는 위 Figure 4에 나와 있듯이 두 개의 1×1 커널을 먼저 3×3으로 제로 패딩한 다음 세 개의 커널을 합하는 방식으로 쉽게 구현할 수 있다. 이러한 변환의 동등성은 3×3 및 1×1 레이어가 동일한 스트라이드를 가져야 하며, 후자의 패딩 설정은 전자보다 한 픽셀 작아야 함을 요구한다. 예를 들어, 입력에 한 픽셀을 패딩하는 3×3 레이어 (가장 일반적인 경우)의 경우, 1×1 레이어는 padding = 0이어야 한다.

 

 

3.4. Architectural Specification

 

위 Table 2는 RepVGG의 구체적인 사양을 보여주는데 깊이와 너비를 포함한다.

 

RepVGG는 단순한 토폴로지를 채택하고 3×3 컨볼루션을 집중적으로 사용한다는 점에서 VGG 스타일이지만, VGG처럼 Max Pooling을 사용하지 않는다. 이는 본문에 단일 유형의 연산자만 있기를 원하기 때문이다. 저자들은 3×3 레이어를 5개의 스테이지로 배열하고, 각 스테이지의 첫 번째 레이어는 스트라이드 2로 다운샘플링한다. 이미지 분류를 위해, Global Average Pooling (GAP)과 Fully-Connected (FC) 레이어를 헤드로 사용한다. 다른 작업의 경우, 특정 작업에 맞는 헤드를 어떤 레이어에서든 생성된 피쳐에 사용할 수 있다.

각 스테이지의 레이어 수를 다음의 세 가지 간단한 지침에 따라 결정한다.

1) 첫 번째 스테이지는 높은 해상도로 작동하며 시간이 많이 소요되므로, 낮은 지연 시간을 위해 단 하나의 레이어만 사용한다.
2) 마지막 스테이지는 더 많은 채널을 가져야 하므로, 매개변수를 절약하기 위해 단 하나의 레이어만 사용한다.
3) ResNet 및 그 최신 변형 (e.g., ResNet-101은 14×14 해상도 스테이지에 69개의 레이어를 사용)을 따라 가장 많은 레이어를 뒤에서 두 번째 스테이지에 (ImageNet에서 14×14 출력 해상도를 가진) 배치한다.

RepVGG-A라는 인스턴스를 구축하기 위해 다섯 스테이지에 각각 1, 2, 4, 14, 1개의 레이어를 사용한다. 또한 RepVGG-B라는 더 깊은 모델도 구축하는데, RepVGG-B는 스테이지 2, 3, 4에 각각 2개의 레이어를 더 가진다.
저자들은 RepVGG-A를 ResNet-18/34/50을 포함한 다른 경량 및 중량 모델들과 경쟁하는 데 사용하고, RepVGG-B는 고성능 모델들과 경쟁하는 데 사용한다.

VGG 및 ResNet와 같이 고전적인 방법을 따라서 너비 설정을 균일하게 스케일링하여 레이어의 너비를 결정한다. 처음 네 스테이지에는 multiplier a를 사용하고 마지막 스테이지에는 *를 사용하며, 보통 b > a로 설정한다. 이는 분류 또는 다른 다운스트림 작업을 위해 마지막 레이어가 더 풍부한 피쳐를 갖기를 원하기 때문이다. RepVGG는 마지막 스테이지에 하나의 레이어만 있으므로, 더 큰 b가 지연 시간이나 매개변수 양을 크게 증가시키지 않는다. 구체적으로, 스테이지 2, 3, 4, 5의 너비는 각각 $[64a, 128a, 256a, 512b]$다. 고해상도 피쳐 맵에 대한 대규모 컨볼루션을 피하기 위해, a < 1인 경우 스테이지 1을 스케일 다운하지만 스케일 업하지는 않으므로 스테이지 1의 너비는 $\text{min}(64, 64a)$다.

매개변수 및 계산량을 추가로 줄이기 위해 다음의 동작을 수행한다. 정확도와 효율성 간의 교환을 위해 groupwise 3×3 컨볼루션 레이어를 dense 컨볼루션 레이어과 선택적으로 interleave 교차 배치할 수 있다. 구체적으로 이야기하자면, RepVGG-A의 3, 5, 7, ..., 21번째 레이어와 RepVGG-B의 추가적인 23, 25, 27번째 레이어에 대해 그룹 수 g를 설정한다. 단순화를 위해 이러한 레이어에 대해 레이어별 튜닝 없이 g를 전역적으로 1, 2 또는 4로 설정한다. 이때 인접한 그룹 별 컨볼루션 레이어를 사용하지 않는데, 이는 채널 간 정보 교환을 비활성화하고 부작용을 가져오기 때문이다. 바로 특정 채널의 출력이 입력 채널의 작은 부분에서만 파생되는 현상이다. 1×1 브랜치는 3×3 컨볼루션과 동일한 g를 가져야 한다.

 

 

 

4. Experiments

클래식 SOTA 모델로 VGG-16, ResNet, ResNeXt, EfficientNet, RegNEt을 선택한다. 이는 ImageNet-1K에 대한 모델이며 1.28M 이미지로 학습하고 50k를 validation 검증으로 사용한다. EfficientNet-B0와 B3, RegNet-3.2GF / 12GF를 middleweight와 heavyweight 모델의 대표로 삼는다. Multipliers a와 b의 설정 값들은 아래 Table 3에서 공개한다. 

 

 

 

4.1. RepVGG for ImageNet Classification

위에 첨부한 Table 4와 아래의 Table 5를 비교하면 ImageNet에 대한 이미지 분류 결과를 알 수 있다.

 

 

RepVGG는 파라미터 수가 최소가 아니지만, 빠르면서도 좋은 정확도를 달성했다.

 

4.2. Structural Re-parameterization is the Key

 

RepVGG-B0를 토대로, Identity w/o BN, Post-addition BN, Full-featured reparam, + ReLU in branch의 변형들을 비교한다.

 

그리고 DiracNet, Trivial Re-param, ACB, Residual Reorg 등의 모델들을 베이스라인으로 비교한다. 

 

모든 모델들은 from scratch로 120 epochs를 학습했다.

 

 

 

Full-featured reparam 을 추가했을 때 성능이 오르고,  여기에 ReLU in branch를 추가하면 다시 성능이 향상됨을 알 수 있다.

 

4.3. Semantic Segmentation

 

 

 

Cityscapes의 검증 데이터 셋에 대한 실험 결과가 Table 8에 나와있다.

ResNet-50과 101에 비해서 좋은 결과를 달성했다.

 

 

 

References:

https://mole-starseeker.tistory.com/87

https://bongjasee.tistory.com/3

https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation

 

 

 

'Computer Vision' 카테고리의 다른 글

RT-DETR (2024) 논문 리뷰  (0) 2025.06.24
YOLOv7 (2022) 논문 리뷰  (1) 2025.06.24
PP-YOLOE (2022) 논문 리뷰  (0) 2025.06.23
YOLOX (2021) 논문 리뷰  (1) 2025.06.23
MnasNet (2018) 논문 리뷰  (0) 2025.05.03