deep learning/computer vision

Classficiation Model Outline

문과 열등생 2024. 2. 10. 21:38

 Conputer Vision에 있어 주요 Classification Model들의 탄생 배경과 특징, architecture 구성과 의의 및 한계에 대해서 간단하게 요약해보고자 한다. 주요 model에 대해서는 paper review를 통해 자세하게 분석하고, 코드 리뷰까지 해보려고 한다.

 

Annotiation

  • 데이터 집합의 데이터 정보 또는 레이블을 추가하는 프로레스 (데이터에 대한 추가 정보를 제공하는 것)
  • 종류 : bounding box, keypoint, segmentaiton
    • bounding box : 이미지 내 개체의 위치 및 크기를 정의
    • keypoint : joint 혹은 landmark와 같은 개채 내의 특정 관심 지점을 표시
    • segmentation : 이미지 내 객체의 경계를 포함하는 것으로, 픽셀 수준에서 가공

 

CNN (Convolution Neural Network)의 키워드

  • convolution layer를 사용하여 feature extraction을 하고, pooling layer를 통해 차원을 줄이고, non-linear activation function을 사용, fully connected layer를 통해 classificatino 수행
  • kernel = receptive field

 

Classification Model

LeNet-5 (1998) : Yann LeCun (★★★★★)

  • 이미지 분류 및 인식 작업을 위해 설계된 최초의 딥러닝 모델 중 하나로, CNN Architecture
  • Convolution - SubSampling(MaxPooling) - Convolution - SubSampling - FCNN으로 구성
  • CNN의 Basic model Architecture

 

AlexNet (2012) : Alex Krizhevsky (★★★★★)

  • 이미지 분류 및 인식 작업을 위한 CNN 기반의 architecture로 ImageNet Dataset에 상당한 성능 향상을 달성한 최초의 딥러닝 모델
  • Convolution(ReLu) - MaxPooling - Convolution(ReLu) - MaxPooling - Convolution(ReLu) - Convolution(ReLu) - Convolution(ReLu) - MaxPooling - FCNN(ReLu) - FCNN(ReLu) - FCNN(softmax)
  • MaxPool의 용어가 사용되었으며, Conv layer와 Pooling layer의 반복적인 사용을 통해 성능 향상
  • CV에 대한 딥러닝 모델의 효과를 입증했다는 점에서 큰 의의

 

VGGNet (2014) : Karen Simonyan, Andrew Zisserman (★★★★★)

  • Convolution과 MaxPooling layer의 여러 스택과 여러 FCNN으로 구성된 간단하고 균일한 architecture로 빠른 훈련이 가능하다는 장점이 있음.
  • Convolution - FCNN
  • Convolution
    • 여러 개의 Stack으로 구성되어 있으며, 각 스택에는 2~3개의 Convolution Layer와 MaxPooling Layer로 구성
    • 각 Convolution Layer에서의 filter 사이즈는 동일 (3 * 3)
  • 단순하면서도 효과적인 구조를 갖고 있어 이해가 쉬우며, 대규모 Dataset에서 학습된다는 점에서 사전 학습 모델로 많이 사용되며, 전이 학습에 적합
  • 이후 다양한 모델의 Backbone 모델로 사용되고 있음
  • VGG 뒤에 붙은 숫자는 layer의 갯수

 

Inception Net (2014) : Chistian Szegedy (aka. GoogleNet) (★★★★★)

  • 여러 스케일로 정보를 캡처하고 특징 간의 복잡한 관계를 학습할 수 있는 모델로, 여러 Inception 모듈로 구성
  • Convolution Layers
    • filter 사이즈가 다른 여러 병렬 Convolution Layer를 사용
    • (1*1) : 채널 간의 선형 조합을 수행하여 입력의 차원을 줄이거나 증가시키는 역할 수행
    • (3*3) : 공간적인 구조를 감지하는 역할 수행
    • (5*5) : 넓은 영역에서의 패턴 감지 역할 수행
  • MaxPooling Layer : 이전 layer의 주요 특징을 추출하고 공간 차원을 줄이기 위한 layer
  • Concatenation : Convolution Layer와 MaxPooling Layer의 출력값을 연결하여 다음 네트워크 계층으로 전달
  • Inception 모듈의 경우, 네트워크가 여러 스케일의 data feature를 학습(다양한 feature를 동시에 고려 가능)하고, 그 결과 값이 차원 축소된 결과값과 함께 다음 계층으로 전달된다는 점에서 다양한 feature 학습이 가능

Inception Architecture

 

ResNet (2015) : Kaiming He (★★★★★)

  • 모델의 성능 향상을 위해 Layer의 depth를 확장하는 동시에, 이로 인해 발생하는 degradation problem(Vanishing / Exploding Gradient Problem)을 해결하기 위해 등장한 network model
  • Residual Network인 ResNet은 심층 architecture와 신경망에서 발생하는 gradient vanishing 문제를 해결하는 네트워크로, 입력값과 출력값의 Residual Mapping을 학습하는 ‘Residual Learning’이라는 개념을 기반으로 깊은 신경망 모델 구축이 가능
  • 이를 위해 Residual Block 개념을 추가
    • residual learning : 이전 layer의 결과를 다시 이용하여 학습을 진행하는 것
    • 잘 학습된 shallow model에 identity mapping된 layer를 추가하여 network를 깊게 구성하는 layer block
      • Shallow model : 적은 수의 layer로 구성된 층으로, 적은 parameters를 갖고 있어 간단하고 직관적인 모델 구조를 갖고 있음
      • identity mapping : 입력값을 그대로 출력값으로 매핑하는 것으로, f(x) = x를 의미
      • identity mapping을 추가하는 이유 : 네트워크를 깊게 만들면서 발생하는 gradient vanishing 문제를 해결하기 위한 것으로, identity mapping은 input과 output 간의 shortcut 역할을 하여, residual(잔차)를 학습시켜 gradient vanishing을 완화
        ResNet Architecture
        • Plain Network의 경우 input x에 대해 output y = H(x)이고, 모델의 학습은 H(x)를 최적화 하는 것
        • ResNet은 identity layer를 shortcut connection으로 추가하여 input과 output을 연결하고, H(x) = F(x) + x (F(x) = H(x) - x를 최적화하는 것으로 변경하고, 이 때 x는 상수이므로 결과적으로 F(x)를 최적화하는 Layer로 간주하는 것
          • 이를 통해 graident 계산에 있어서도 원본 x가 유지되어 vanishing 문제 극복

ResNext (2016) : Saining Xie

  • ResNet의 architecture를 확장하고 network의 용량과 다양성을 높여 성능을 향상시킨 모델로,
  • 네트워크의 병렬 경로 수를 늘려 네트워크가 기능 간의 더 복잡한 관계를 학습할 수 있도록 하는 것
  • 그룹화된 convolution layer를 사용하고, 이를 병렬적으로 적영되어 여러 스케일의 불변 특징을 학습할 수 있음

 

MobileNet (2017) : Andrew G. Howard (★★★★★)

  • 계산 효율적으로 설계되어 계산 리소스가 제한된 모바일 및 임베디드 장치에 배포하는 데 적합한 CNN 모델
  • 깊이별 분리가 가능한 Convolution Layer를 사용하여 네트워크의 parameter를 절약
    • 깊이 분리가 가능한 Convolution layer (Depth-wise Separable Convolution)
      • Convolution 연산을 두 단계로 분리하는 기법으로, 채널과 공간 차원을 분리할 수 있다는 idea에서 출발 (일반적인 Convolution에서는 채널 방향과 공간 방향의 convolution을 동시에 수행)
      • Depth-wise Convolution과 Point-wise Convolution으로 구성
      • Depth-wise Convolution은 각 입력 채널에 대해 3*3 convolution filter가 하나의 feature map을 형성 (각 채널에 대한 독립적으로 연산을 수행) (spatial correlation 계산)
      • Point-wise Convolution은 Depth-wise Convolution이 생성한 feature maps에 대해 1*1 convolution fiter를 적용 (cross-channel correlation 계산)
  • filter의 크기와 작동 방법을 조정하여 parameter를 줄여 연산의 효율성을 높이는 것이 핵심 목적

 

DenseNet (2017) : Gao Huang

  • 각 계층이 feed-forward 방식으로 다른 모든 계층에 연결되어, 각 layer의 기능을 재사용하여 정보 손실을 줄이는 방법을 적용한 network
  • 연산 과정에서의 정보 손실을 줄이기 위해 ResNet의 아이디어를 활용하여 layer를 연속적으로 concatenate하고 잔차를 학습하는 등의 방법을 사용
  • 연산량이 많다는 단점이 있으나, 복잡한 관계를 정보 손실을 최소화하며 학습할 수 있고 과적합의 위험을 줄일 수 있다는 점에서 딥러닝 애플리케이션에 널리 사용

 

ShuffleNet (2018) : Xiangyu Zhang

  • 계산 효율적 설계를 통해 계산 리소스가 제한된 모바일 및 임베디드 장치에 배포하는데 적합한 모델
  • feature recording의 한 유형인 channel shuffling을 통해 네트워크 계층 간 정보 흐름을 개선하는 것으로, 복잡한 관계의 학습을 위해 feature map의 채널을 재정렬

 

SE-NET (2018) : Jie Hu (★★★★★)

  • Squeeze-and-Excitation Network
  • 입력의 전역 정보를 기반으로 네트워크의 feature map을 동적으로 재보정하여 CNN의 성능을 향상시키는 모델
  • Squeeze-and-Excitation block을 사용하여 네트워크의 feature map에 가중치를 부여하는 것
    • feature map의 공간 차원을 줄여 전역 정보 벡터를 계산하고,
    • 이 벡터를 사용하여 가장 중요한 feature를 강조하는 방식으로 feature map에 가중치를 부여
  • 표준 CNN Architecture에 residual block과 squeeze-and-excitation block이 추가
    • squeeze-and-excitation block은 FCNN과 activation function을 사용하여 전역 정보 벡터를 계산하고 특징 맵의 가중치를 부여하는 network block

 

EfifcientNet(2019) : Mingxing Tan, Quoc V. Le (★★★★★)

 

Outline Summary

 

★ Degradation Problem

  • model의 Layer depth가 깊어짐에 따라 Vanishing / Exploding Gradient 문제가 발생하여 성능이 더 약화되는 현

★ Skip connection (U-NET)

  • 두 Layer 사이에서 일어나는 연결로, 두 Layer의 출력을 Concatenate하는 연결을 의미
  • 네트워크의 여러 층을 건너뛰어 짧은 경로를 형성함으로서 Gradient가 빠르게 전파되도록 하는 역할

★ Residual Connection (ResNet)

  • 하나의 Layer에서 입력과 출력 간의 차이(Residual)을 학습하는 방식을 강조하는 것으로,
  • 입력이 층을 거치며 변형된 값을 출력에 더하는 방식으로 구현
  • 층을 거치면서 발생하는 gradient vanishing 문제를 극복하기 위한 방법