김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 깃허브데스크탑
  • GitHubDesktop
  • KMU_WINK
  • 로컬저장소
  • local저장소
  • 원격저장소
  • ㄱ
  • Remote저장소

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[컴퓨터비전#16/11-28] CNN모델 알아보기 AlexNet,VGG,GoogLenet,ResNet
•Compter Science/Computer Vision

[컴퓨터비전#16/11-28] CNN모델 알아보기 AlexNet,VGG,GoogLenet,ResNet

2022. 11. 29. 16:44
 

[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization

[컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization [컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride) [컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사

devforyou.tistory.com

본 포스팅은 2022-11-23(수), 2022-11-28(월) 국민대학교 김장호 교수님의 컴퓨터 비전 수업을 통해 배운내용을 정리하기 위한 게시글입니다.


# 시작하며

 이번시간에는 저번 인공지능 시간에 배웠던거와 같이 CNN모델(네트워크)들에 대해서 공부했다. 

AlexNet, VGG, GoogLeNet, Residual Networks 이렇게 4가지에 대해서 공부했다.

 

# AlexNet

AlexNet은 5개의 Convolutional layer와 MaxPooling, 3 Fully-Connected Layer를 사용해서 구현한다. 두개의 GPU를 활용해서 모델을 분리하여 훈련시킨 특징이 있다. 

위와 같 각 Layer를 지날때마다, 결정되는 OutputSize와 파라메타들이 존재하는데, OuputSize의 H/W 는 저번에 배웠던 ( H - K + 2P ) / S + 1의 공식을 활용하면 손쉽게 구할 수 있다. 추가적으로 매개변수의 갯수를 곱하는건 딱히 공식을 외운다기보다는 커널의 넓이*input채널의 갯수*아웃풋 채널의 갯수로 구할 수 있다.

AlexNet의 파라메타를 살펴보면, 대부분이 FC레이어에서 생김을 알 수 있다. 

 

# VGGNet

VGGNet은 3*3 conv(stride 1, padding 1, 3*3) 을 계속해서 쌓아주는 형태이다. 해당 레이어가 끝나면 double pooling을 해준다. 이렇게 구성함으로써 층을 거듭할 수록 채널의 갯수는 많아지고 이미지 사이즈는 작아지는 형태로 구성 된다. 

 3*3 conv을 사용하는 이유는, 5*5를 사용했을때도 동일한 크기를 보게 돼지만, 파라메타의 수가 많아지기 때문에 3*3을 사용한다.

앞서 살펴본 AlexNet에 비해 모델이 커지고 깊어졌기때문에 훨씬 많은 파라메타와 연산 속도를 보임을 알 수 있다. 그러나 그만큼 분류 능력이 더 좋아졌다.

# GoogLeNet

 

GoogLeNet은 3가지 주요 특징을 가진다.

  • Inception module
  • Global Average Pooling
  • Auxiliary Classifiers

 

## Inception module

첫번째 특징은, 병렬적인 특징을 가진다는 것이다. 모든 레이어를 연결 시키지 않고, 병렬의 모양을 띈다.

 

## Global Average Pooling

다음과 같이 분류기의 역할을 하는 단계에서, Global Average Pooling을 사용한다는 것이다. FC Layer를 사용하게 되면 파라메타가 급격히 증가하기 때문에, avg-pooling을 사용한다. 

 

## Auxiliary Classifiers

중간중간층마다, 보조분류기를 사용해서 학습이 저하되는 효과를 없앤다. backward단계를 거쳐 gradient가 전파 될텐데, 끝단에 가면 이 gradient가 미비해질 수 있다. 그렇기 떄문에 중간에 보조 분류기를 사용해서 이문제를 해결 할 수 있도록 한다.

 

# Residual Networks

 모델이 커진다면, 당연히 학습률이 좋아야 할 것이다. 오버피팅이 나더라도. 근데 위처럼 일반적으로 모델을 깊이 쌓았을때, 언더피팅, 즉 학습이 잘 되지 않는 것을 알 수 있다. 못해도 20-layer의 성능보다는 좋아야하는데 말이다.  그래서 나온게 Residual Networks이며 일반적으로 이 모델만 칭한게 아니라 Residual 방법을 많이 활용한다.

shorcut을 구성하여 최소 성능을 보장할 수 있도록 한다. 만일 해당 conv가 다 0이라면 X의 값이 그대로 나올 것이기 때문이다.

 

## Bottleneck Block

 Layer를 거듭하면서 계속해서 채널의 갯수를 늘리고 싶을때 사용하는 방법이다.

1*1 Conv를 사용해서 채널의 개수를 줄여주고, 다시 내보낼때 채널의 개수를 늘려준다.

 

## Pre-Activation

ReLU를 블럭 안에 넣어줌으로써, X가 말그대로 그대로 통과 할 수 있도록 해준다.

 

## ResNeXt

병렬과 같은 구조로 만들어 준다. Concate이 아닌 Sum을 사용해야 한다.

 

## SE

채널별로도 어떤 의미를 더 자세히 보기 위해서 사용한다.

 

# 분류 성능

저작자표시 (새창열림)

'•Compter Science > Computer Vision' 카테고리의 다른 글

[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization  (2) 2022.11.22
[컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization  (0) 2022.11.21
[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)  (1) 2022.11.16
[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop  (0) 2022.11.08
[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화)  (0) 2022.10.31
    '•Compter Science/Computer Vision' 카테고리의 다른 글
    • [컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization
    • [컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization
    • [컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)
    • [컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바