본문 바로가기
전공/딥러닝

[DL] CNN 기반 모델 (LeNet/AlexNet/ZFNet/VGGNet/GoogLeNet/ResNet/ DenseNet/SENet/EfficientNet/ConvNeXt/MobileNet)

by mhiiii 2025. 3. 21.
728x90

1. LeNet (1998)

LeNet-5

  • Yann LeCun이 제안한 최초의 CNN 모델
  • 손글씨 숫자 인식(MNIST) 문제 해결을 위해 개발
  • 합성곱(Convolution) + 풀링(Pooling) 구조 최초 도입

구조:

  • 입력 → 합성곱 → 풀링 → 합성곱 → 풀링 → 완전연결층(FC) → 출력
  • Filter size : 5x5
  • stride : 1
  • Pooling : 2x2 average pooling
  • Activation function:
    • 대부분의 unit이 sigmoid를 사용.
    • F6에서는 tanh를 사용.
    • 최종적인 output layer인 F7에서는 RBF (Euclidian Radia basis function unit)을 사용
  • loss function : MSE

성능:

✅ MNIST 데이터셋에서 약 99% 정확도 달성


2. AlexNet (2012)

  • 딥러닝의 새로운 시대를 연 모델
  • ImageNet 대회(ILSVRC)에서 압도적 성능으로 우승
  • LeNet보다 훨씬 깊은 네트워크 구조 + ReLU 활성화 함수 도입

구조:

기본적인 구조는 LeNet과 비슷하나, GPU 2대를 이용하여 빠른 연산이 가능해지면서 병렬적인 구조가 가능해짐 

  • 입력 → 합성곱 → 풀링 → 합성곱 → 풀링 → FC → 출력
  • 활성화 함수: ReLU → 학습 속도 증가
  • Over-fitting 방지를 위해 도입한 방법
    1. Data augmentation : 데이터셋 이미지를 좌우 반전을 시키거나 (flip augmentation), 이미지를 잘라서 (Crop augmentation) 데이터 수를 늘림. 또 RGB 값을 조정하여 (jittering) 데이터 수를 늘림.
    2. Dropout: rate 0.5
    3. Norm layer 사용 : 원시적인 형태의 batch normalization , 지금은 쓰이지 않음
  • Batch size : 128
  • SGD momentum :  0.9
  • learning rate :  1e-2 , validation accuracy에 따라 manual 하게 낮춤
  • L2 weigh decay :  5e-4
  • 7 CNN ensemble : error 18.2 % --> 15.4%

성능:

ILSVRC 2012 우승
✅ 이미지 분류 오류율 약 16%


CNN 모델의 고질적인 문제는 Black box,
즉 특정 layer는 이미지의 어떤 부분을 검출하는지, 모델이 왜 잘 작동하는지 알 수 없다는 점

 

ZFNet은 feature map을 시각화하여 블랙박스를 들여다보고, 모델의 성능을 개선하는 것을 목표로 고안됨


3. ZFNet (2013)

  • AlexNet 개선 모델
  • 합성곱 필터 크기와 stride 크기 최적화

n-1번째 pooled maps이 "Convolution > ReLU activation > Max Pooling"을 통과하여

n번째 Pooled Maps을 생성하였다고 가정.

저자들은 n번째 Pooled Maps에 해당 구조의 역과정을 수행하여 n-1번째 pooled maps을 복원해보고자 한 것임

 

📌 AlexNet의 각 layer를 시각화한 결과

더보기

Layer 1이나 2를 시각화한 결과 이미지의 모서리, 경계, 색과 같은 Low level feature를 잡아내는 것을 볼 수 있습니다. Layer 3에서는 전반적인 패턴, 사물과 객체의 경계를 잡아내고 있습니다.

Layer 5에서는 사물이나 개체의 전부를 보여주며 각각 다른 위치나 자세를 취하고 있는 모습을 잡아내고 있습니다. 

 

구조:

  • AlexNet과 유사한 구조지만 필터 크기 및 stride 최적화
  • 시각화 도구로 내부 합성곱 필터 학습 과정 분석

성능:

✅ ILSVRC 2013 우승 (Top-5 오류율 11.2%)


앞서 8 layer 이하의 비교적 적은 수의 layer를 가진 CNN 모델을 살펴봄

지금부터 살펴볼 VGG, GoogleNet의 부터는 layer가 더 깊게 쌓이기 시작

 

그러나 네트워크를 깊게 쌓는다는 것은 생각보다 당시에는 쉬운 일이 아니었음

 

Gradient vasnishing /exploding 과 같은 문제를 효과적으로 해결할 수 있어야 하고, 

파라미터 수가 늘어나 overfitting을 야기할 수 있기 때문!

 

이제부터 설명할 VGG, GoogLeNet, ResNet은 전술한 문제들을 해결하는 방법이 조금씩 다름


4. VGGNet (2014)

  • 매우 깊은 구조의 CNN 모델 (16~19개 레이어)
  • 3x3 합성곱 필터 사용 → 세밀한 특징 학습 가능

구조:

  • 작은 필터(3x3) + 깊은 구조 (16~19개 레이어)

    📌 작은 필터의 효과
    더보기
    1. 필터의 사이즈를 줄이면서 보다 깊게 쌓았을 때 더 효율적인 receptive field를 가지게 됩니다.
      더 넓은 필터를 쓰고 얇은 층을 쌓는 것이나,
      작은 필터를 쓰고 깊게 쌓는 것이나 receptive field가 같다는 의미입니다.

    2. Layer가 깊어지면서 다수의 activation function을 통과하므로 더 많은 non-linearity를 줄 수 있게 됩니다.

    3. 층 당 더 적은 수의 파라미터를 사용하게 됩니다.
      ex) 10×10 image에 7×7 filter 적용하여 4×4 feature map 생성 → parameter 개수: 49개
      ex) 10×10 image에 3×3 filter 3번 적용하여 4×4 feature map 생성 → parameter 개수: 9개씩 3번 총 27개
  • ReLU + Max Pooling 사용

성능:

✅ ILSVRC 2014 준우승 (Top-5 오류율 7.3%)
✅ 모델이 너무 커서 메모리 사용량 많음 (GPU 요구)


5. GoogLeNet (2014)

  • 구글이 만든 모델
  • Inception 모듈 도입 → 필터 크기를 다양하게 설정해 특징 학습 강화

구조:

  • 22 layers
  • 효과적인 "Inception" module → 필터 크기(1x1, 3x3, 5x5) 병렬 적용
  • FC layer 없음 (Output layer 에서만 한번 나옴)
  • 오직 500만개의 파라미터 사용
  • 글로벌 평균 풀링(Global Average Pooling) 사용

Inception module

기본 CNN 구조에서는 다음과 같은 문제가 존재

  1. 필터 크기를 어떻게 설정할지 모호함
    • 3×3 필터? 5×5 필터? 작은 필터를 여러 번 쓸까?
      → 어떤 필터 크기가 최적인지 알기 어려움
  2. 계산 비용 증가
    • 필터 크기가 커질수록 학습해야 할 파라미터 수가 증가
    • 메모리 사용량과 연산 비용이 증가
  3. 특징 추출의 다양성 부족
    • 하나의 필터 크기만 사용하면 데이터의 다양한 패턴을 놓칠 수 있음

👉 그래서 등장한 것이 Inception 모듈

 

 

  • 다양한 필터 크기(1×1, 3×3, 5×5)를 병렬로 적용
  • 필터 크기가 다르면 서로 다른 특징을 학습 가능 → 다양한 크기의 특징 학습 가능
  • 1×1 합성곱을 사용해 계산량 감소 및 채널 수 축소
  • 최종 출력을 Concatenate(연결) 해서 다음 레이어로 전달

 

concat 후 최종 모양(오)

 

 

성능:

✅ ILSVRC 2014 우승 (Top-5 오류율 6.7%)
✅ 연산량 감소 + 정확도 향상


 

CNN을 연구하면서 기존 모델들은 Layer을 깊게 쌓을 수록 성능이 더 좋아질것이라고 예상했지만,

실제로는 20층 이상부터 성능이 낮아지는 현상인 Degradation 문제가 발생

 

ResNet은 Residual Learning이라는 개념을 통해 모델의 층이 깊어져도 학습이 잘 되도록 구현한 모델


6. ResNet (2015)

  • 잔차 연결(Residual Connection) 도입 → 기울기 소실 문제 해결
  • 50, 101, 152 레이어 등 다양한 버전 존재

구조:

  • 입력 → 합성곱 → 잔차 연결 (Residual Block) → 출력
  • 잔차 연결 덕분에 더 깊은 네트워크 학습 가능

$$y = F(x) + x$$

성능:

✅ ILSVRC 2015 우승 (Top-5 오류율 3.6%)
✅ 매우 깊은 모델도 학습 가능


 

ResNet

 

ResNet의 skip-connection을 통해서 identity가 직접 뒤로 전달됨

그런데. 이 identity와 뒷 레이어의 output이 단순 덧셈으로 결합되기 때문에 정보의 흐름을 방해할 여지가 있음

 

레이어간 정보 흐름을 향상시키기 위해서 단순 덧셈이 아닌 다른 방법을 사용해보자!


7. DenseNet (2017)

DenseNet

 

  • ResNet 개선 버전
  • 레이어 출력을 다음 레이어에 직접 연결(concat) → 특징 재활용 강화

구조:

  • Dense Block 사용 → 모든 이전 레이어 출력 연결
  • 파라미터 수 감소 + 학습 효율 증가

$$x_l = H_l([x_0, x_1, ... , x_{l-1}])$$

성능:

✅ ResNet보다 파라미터 수 적으면서 성능 우수


CNN 모델의 또 다른 단점

 

채널 간의 상호작용이 부족하다는 것 !!

 

이 문제를 해결하기 위해서 SENet이 등장


8. SENet (2018)

  • 채널의 중요도 강화 → SE 모듈 도입
  • 채널 간 상관관계를 학습 → 중요한 채널 강조

구조:

  • Squeeze → Excitation → Scaling
  • 특징 맵의 채널 중요도를 학습

 

1. Squeeze (공간 정보 압축)

  • 입력에서 공간 정보를 전역 평균 풀링(Global Average Pooling)으로 요약

입력 텐서 크기가 (H × W × C)이면, (1 × 1 × C)로 축소

 

  • $z_c$ → 채널 에 대한 전역 평균 값
  • 채널마다 하나의 값이 생성됨 → 전역적 특징 요약

👉 여기서 공간 정보는 사라지고 채널별로 전체 패턴 요약

 

2. Excitation (채널 간 관계 학습)

  • 채널별 중요도를 완전연결층(FC Layer)에서 학습
  • $z_c$ 값에 두 개의 FC 레이어 적용 + 비선형 활성화 함수 사용

  • $W_1$ = 축소 레이어 → 채널 수 줄임 (차원 축소)
  • $W_2$ = 확장 레이어 → 채널 수 복원 (차원 복원)
  • = ReLU 활성화 함수
  • = Sigmoid 함수

이 과정에서 중요한 점:

  • 채널 간의 상호작용 학습
  • Sigmoid → 출력값이 [0, 1]로 정규화 → 채널 중요도 결정

 

3. Scale (채널 재조정)

  • 학습된 중요도를 원래 출력에 반영
  • 채널별 중요도를 곱하기 연산으로 강화/약화

  • $s_c$ = 채널별 중요도
  • $x_c$ = 원래 CNN의 출력 값

👉 중요한 채널은 강화되고, 덜 중요한 채널은 억제됨 ✅

 

성능:

✅ ILSVRC 2018 우승 (Top-5 오류율 3.6%)


 

기존 CNN 모델 성능을 높이는 방식은 주로 다음 세 가지 방법을 사용:

  1. 깊이(depth) 증가 → 모델이 깊어지면 더 복잡한 패턴 학습 가능
  2. 너비(width) 증가 → 채널 수를 늘리면 더 다양한 특징 학습 가능
  3. 해상도(resolution) 증가 → 고해상도 이미지를 학습하면 더 세밀한 패턴 학습 가능

문제점:

  • 깊이만 늘리면 기울기 소실(Vanishing Gradient) 문제 발생
  • 너비만 늘리면 연산량 폭발
  • 해상도만 늘리면 메모리 부족
  • 성능 향상 대비 연산 비용 증가가 비효율적

9. EfficientNet (2019)

  • 성능을 높이면서 모델 크기를 최소화
  • 복합 스케일링(compound scaling) 도입
    👉 단순히 레이어를 깊게 하거나 필터를 늘리는 게 아니라, 너비, 깊이, 해상도를 동시에 최적화한 모델

복합 스케일링 수식

 

복합 스케일링은 다음과 같은 수식으로 정의:

 

$$depth = \alpha ^\Phi  , width = \beta ^\Phi  , resolution = \gamma ^\Phi $$

  • $ \Phi $= 전체 모델 크기를 조정하는 스케일링 계수
  • α,β,γ = 각각 depth, width, resolution 증가 비율
  • 학습을 통해 α, β, γ 값을 최적화

구조:

  • MBConv (MobileNet 구조 기반) 사용
  • 모델 크기에 비해 성능 우수
  • ReLU 대신 Swish 사용 →  Swish는 비선형성이 더 풍부

 

📌 MobileNet이란?

더보기

모바일 및 임베디드 기기에서 낮은 연산량으로 높은 성능을 달성하기 위해 설계된 경량화 모델 

 

Depthwise Separable Convolution

 

Width Multiplier

 

Resolution Multiplier

 

등을 사용해 연산량을 줄였다고 하네요~ 

 

성능:

 

✅ 적은 파라미터로 높은 성능 달성


10. ConvNeXt (2022)

구조:

  • ResNet-like 구조 + 트랜스포머에서 배운 기법 적용
  • Swish 대신 GELU 활성화 함수 사용
  • 성능 향상 + 계산 효율성 증가

성능:

✅ SOTA 성능 달성


 

References

https://wikidocs.net/137252

 

3) ResNet, ResNet의 확장(레이어 152개 이하)

## ResNet ![](https://wikidocs.net/images/page/137252/IMG_62347E9C6248-1.jpeg) CNN을 연구하면서 기존 모델들…

wikidocs.net

 

728x90