LeNet-5 (1998)
Yann LeCun에 의해 개발된 이 초기 CNN 아키텍처는 손글씨 숫자 인식 문제를 해결하는 데 사용되었다. 이 모델은 복수의 convolutional layer와 pooling layer, 그리고 마지막에 fully connected layer를 사용하는 형태를 제안했다. 이는 현대의 CNN 아키텍처가 따르는 주요 패턴의 초석을 놓았다.
AlexNet (2012)
Alex Krizhevsky에 의해 개발된 AlexNet은 2012년 ImageNet Large Scale Visual Recognition Challenge(ILSVRC)에서 우승한 모델이다. AlexNet은 LeNet의 구조를 확장해서 더 깊고 복잡한 네트워크를 만들고, ReLU 활성화 함수, 드롭아웃, 데이터 증강 등과 같은 새로운 기법을 사용하여 성능을 향상시켰다.
VGGNet (2014)
VGGNet은 모델의 깊이를 늘리는 것이 성능에 얼마나 영향을 미치는지를 보여주는 중요한 모델이다. VGGNet은 16 또는 19 계층으로 구성된 모델을 제안했고, 모든 컨볼루션 레이어에서 3x3 필터를 사용하는 것으로 통일성을 가지고 있다.
GoogLeNet / Inception (2014)
GoogLeNet은 인셉션 모듈이라는 복잡한 블록 구조를 도입했다. 인셉션 모듈은 여러 크기의 필터와 풀링 연산을 병렬로 수행하는 구조로, 이로 인해 네트워크는 다양한 스케일의 특징을 캡처할 수 있게 된다. GoogLeNet은 22 layer로 이루어져 있다.
* 1 x 1 convolution
1 x 1 conv를 통해 채널의 수를 중간에 한번 줄였을 때, 파라미터 수가 줄어든다. 기본적으로 conv layer는 입력 채널수 x 필터 사이즈 x output feature 수(필터수)로 계산된다. 예를 들어 입력이 3채널에 11x11 필터, output(필터수)이 48인 경우 파라미터 수는 11 x 11 x 3 x 48 이다.
ResNet (2015)
ResNet은 "Residual Block"이라는 개념을 도입하여 네트워크의 깊이를 대폭 증가시켰다. 일반적으로 네트워크가 길어질 경우 vanishing / exploding gradients 문제가 발생한다. ResNet에서는 residual connection을 사용함으로써, 100계층 이상으로 깊어진 모델에서도 그래디언트 소실 문제를 완화하고, 높은 성능을 달성했다. 아직까지도 자주 보이는 모델이다.
Residual connection은 어떤 입력에 대해 출력이 나오면, 그 출력에 입력을 더하는 방식이다. 입력과 출력은 Dimension은 맞아야한다.
DenseNet (2017)
DenseNet은 모든 이전 레이어의 출력을 현재 레이어의 입력으로 사용하는 "Dense Block"을 도입해서 특징 재사용과 그래디언트 전파를 개선했다. Dense Block은 input을 모든 layer에 대해 concat한다.
SENet (2017)
SENet은 "Squeeze-and-Excitation Network"의 약자로 SENet의 핵심 아이디어는 "channel-wise" feature 재조정 메커니즘인 "Squeeze-and-Excitation (SE) block"을 도입한 것이다.
SE 블록은 각 채널의 정보에 가중치를 부여하여 중요한 특징을 강조하고, 중요하지 않은 특징을 약화시키는 역할을 한다. 이는 공간적인 정보를 압축(squeeze)하고, 채널별 정보를 조정(excitation)하는 과정을 통해 이루어진다.
Squeeze : Global Average Pooling을 통해 각 채널의 평균값을 계산하고, 이를 통해 각 채널의 전역 정보를 하나의 값으로 압축한다. 이렇게 하면 공간적 차원을 제거하고, 채널별 정보만 남게 된다.
Excitation : Squeeze 과정을 거친 후, Fully Connected layer를 통과시켜서 각 채널의 중요도를 학습한다. 이 과정은 신경망이 채널 간의 복잡한 상호작용을 캡처하도록 돕는다.
SE 블록은 기존의 Convolutional Neural Network(CNN) 아키텍처 (예: ResNet, Inception 등)에 쉽게 추가할 수 있으며, 이를 통해 해당 아키텍처의 성능을 향상시킬 수 있다.
EfficientNet (2019)
EfficientNet은 컨볼루션 레이어의 깊이, 너비, 그리고 입력 이미지 해상도의 규모를 동시에 조정하는 "Compound Scaling" 개념을 도입하여 효율성을 크게 향상시켰다.
EfficientNet[1]은 Google Brain 팀에서 제안한 Convolutional Neural Network(CNN) 아키텍처다. 이것은 Neural Architecture Search(NAS)라는 기술을 이용하여 효율적인 신경망 아키텍처를 찾고 거기서 수동적으로 성능을 향상시킬 방법을 추가했다. EfficientNet은 비교적 적은 파라미터와 연산량으로 높은 성능을 보여주는 것이 특징이다.
이 아키텍처의 핵심 아이디어는 'Compound Scaling'이라는 개념을 도입한 것이다. 이전에는 네트워크의 깊이(레이어의 수), 네트워크의 너비(레이어의 채널 수), 그리고 입력 이미지의 해상도 중 하나만 조절하여 네트워크의 크기를 조정하곤 했는데 EfficientNet은 이 세 가지 요소를 모두 함께 조정함으로써, 네트워크의 크기와 성능, 그리고 효율성을 균형있게 향상시킨다.
따라서 EfficientNet은 기본 모델(B0)을 먼저 찾고, 그 다음 이 모델을 Compound Scaling을 이용하여 여러 가지 다른 크기의 모델(B1, B2, ..., B7)로 확장한다. 이렇게 함으로써, 작은 모델에서는 계산 효율성을, 큰 모델에서는 높은 성능을 얻을 수 있다.
'Computer Vision' 카테고리의 다른 글
MixNet 논문 리뷰 (Text Detection) (0) | 2023.09.10 |
---|---|
ConvNext 논문 리뷰 (0) | 2023.08.17 |
3D Object Recognition : Point Cloud(Lidar)와 뎁스이미지(Depth-Camera) 데이터에 대한 이해 (0) | 2023.07.15 |
딥러닝 Optimizer의 역할과 종류 (0) | 2023.07.13 |
Text Detection : DBNet++ (0) | 2023.07.13 |