Day69 - 케라스(12) 22.12.05.월/금

류소리·2022년 12월 5일
0

케라스

목록 보기
10/11

CNN

완전 연결 네트워크의 문제점으로부터 시작

  • 매개변수의 폭발적인 증가
  • 공간 추론의 부족
    • 픽셀 사이의 근접성 개념이 완전 연결 계층에서는 손실됨
  • 합성곱 계층은 입력 이미지가 커져도 튜닝해야 할 매개변수 개수에 영향을 주지 않음
  • 또한 그 어떠한 이미지에도 그 차원 수와 상관없이 적용될 수 있음

https://medium.com/@pechyonkin/key-deep-learning-architectures-lenet-5-6fc3c59e6f4

컨볼루션 연산

  • 필터 연산
    • 입력 데이터에 필터를 통한 어떠한 연산을 진행
    • 필터에 대응하는 원소끼리 곱하고 그 합을 구함
    • 연산이 완료된 결과 데이터를 특징 맵이라 부름
  • 필터
    • 커널이라고도 하며 흔히 사진 어플에서 사용하는 '이미지 필터'와 비슷한 개념
    • 필터의 사이즈는 '거의 항상 홀수'
    • 짝수이면 패딩이 비대칭이 되어버림
    • 왼쪽, 오른쪽을 다르게 주어야함
    • 중심위치가 존재, 즉 구별된 하나의 픽셀(중심 픽셀)이 존재
    • 필터의 학습 파라미터 개수는 입력 데이터의 크기와 상관없이 일정, 따라서 과적합을 방지할 수 있음

An example of convolution operation

https://www.researchgate.net/figure/An-example-of-convolution-operation-in-2D-2_fig3_324165524

  • 일반적으로 합성곱 연산을 한 후의 데이터 사이즈는 (n - f + 1) x (n - f + 1)

  • 패딩과 스트라이드

    • 필터(커널) 사이즈와 함께 입력 이미지와 출력 이미지의 사이즈를 결정하기 위해 사용
    • 사용자가 결정할 수 있음
    • 패딩은 입력 데이터의 주변을 특정 값으로 채우는 기법. 주로 0으로 많이 채움
    • 출력 데이터의 크기 : (n + 2p - f +1) x (n + 2p -f + 1)
    • valid(패딩을 주지 않음) 와 same(패딩을 주어 입력 이미지와 연산 후의 이미지가 같게 함), 패딩의 크기는 (k-1)/2 (단, stride=1)
    • 스트라이드는 필터를 적용하는 간격을 의미

https://kingnamji.tistory.com/24

https://m.blog.naver.com/jevida/221841296542

풀링(Pooling)

  • 필터 사이즈 내에서 특정 값을 추출하는 과정
  • Max Pooling : 출력 데이터의 사이즈 계산은 컨볼루션 연산과 동일
  • 특징맵의 크기를 절반으로 줄임
  • 모델이 물체의 주요한 특성을 학습하도록 해주며 컨볼루션 신경망이 이동 불변성 특성을 가지게 해줌
  • 모델의 파라미터 개수를 줄여주고 연산 속도를 빠르게 해줌

https://cs231n.github.io/convolutional-networks/

LeNet-5

  • LeNet-5는 복잡하지 않은 망을 이용하여 (당시 기준)높은 성능을 보여주었을 뿐만 아니라 Convolutional layer와 pooling의 조합을 반복하는 현대적인 CNN 구조를 제안했다는 점에서 의미가 있는 모델

https://velog.io/@woojinn8/CNN-Network-1.-LeNet

Visual Geometry Group Net(VGGNet)

  • 활성화 함수로 ReLU 사용, Dropout 적용
  • 합성곱과 풀링 계층으로 구성된 블록과 분류를 위한 완전 연결계층으로 결합된 전형적인 구조
  • 인위적으로 데이터셋을 늘림
    • 이미지 변환, 좌우 반전 등의 변환을 시도
  • 몇 개의 합성곱 계층과 최대 풀링 계층이 따르는 5개의 블록과 3개의 완전 연결계층으로 구성
  • 모든 합성곱과 최대 풀링 계층에 padding='SAME' 적용

https://buomsoo-kim.github.io/keras/2018/05/02/Easy-deep-learning-with-Keras-8.md/

  • 합성곱 계층에는 stride=1, 활성화 함수로 ReLU 사용
  • 특성맵 깊이를 증가 시킴
  • 척도 변경을 통한 데이터 보강(Data Augmentation)
  • 3x3 커널을 갖는 두 합성곱 계층을 쌓은 스택이 5x5 커널을 갖는 하나의 합성곱 계층과 동일한 수용영역(ERF)을 가짐
  • 11X11 사이즈의 필터 크기를 가지는 AlexNet과 비교하여 더 작은 합성곱 계층을 더 많이 포함해 더 큰 ERF를 얻음
    -이와 같이 합성곱 계층의 개수가 많아지면 매개변수 개수를 줄이고 비선형성을 증가시킴
  • VGG-19 아키텍쳐는
  • VGG-16에 3개의 합성곱 계층을 추가
  • LeNet-5, AlexNet, VGG-16, ResNet, Inception Network

https://wooono.tistory.com/233

VGG-19 아키텍쳐

  • VGG-16에 3개의 합성곱 계층을 추가

<img src="https://neurohive.io/wpcontent/uploads/2018/11/vgg16.png%22%3E >

VGG-16 아키텍쳐
[이미지 출처] https://neurohive.io/en/popular-networks/vgg16/

  • (참고) ILSVRC의 주요 분류 metric 중 하나는 top-5

상위 5개 예측 안에 정확한 클래스가 포함되면 제대로 예측한 것으로 간주

일반적인 top-k metric의 특정 케이스

       =====================================================================

GoogLeNet, Inception 모듈

  • VGGNet을 제치고 같은 해 분류 과제에서 1등을 차지

  • 인셉션 블록이라는 개념을 도입하여 인셉션 네트워크라고도 불림

  • Inception Module은 layer에 1x1 Convolution layer를 추가해 bottleneck layer를 구현함으로써, channel 수를 감소시키며, 연산량을 줄이는 구조입니다. 이것이 inception module의 기본 아이디어이며, Inception Network는 이러한 Inception Module의 집합입니다.

GoogLeNet, Inception 모듈

  • VGGNet을 제치고 같은 해 분류 과제에서 1등을 차지

  • 인셉션 블록이라는 개념을 도입하여, 인셉션 네트워크(Inception Network)라고도 불림

<img src="https://miro.medium.com/max/2800/0*rbWRzjKvoGt9W3Mf.png%22%3E

[이미지 출처] https://medium.com/analytics-vidhya/cnns-architectures-lenet-alexnet-vgg-googlenet-resnet-and-more-666091488df5%3C/sub%3E

특징

  • CNN 계산 용량을 최적화하는 것을 고려

  • 전형적인 합성곱, 풀링 계층으로 시작하고, 이 정보는 9개의 인셉션 모듈 스택을 통과
    해당 모듈을 하위 네트워크라고도 함

  • 각 모듈에서 입력 특징 맵은 서로 다른 계층으로 구성된 4개의 병렬 하위 블록에 전달되고, 이를 서로 다시 연결

  • 모든 합성곱과 풀링 계층의 padding옵션은 "SAME"이며 stride=1,
    활성화 함수는 ReLU 사용

  • 기여

    • 규모가 큰 블록과 병목을 보편화

    • 병목 계층으로 1x1 합성곱 계층 사용

    • 완전 연결 계층 대신 풀링 계층 사용

    • 중간 소실로 경사 소실 문제 해결

<img src="https://norman3.github.io/papers/images/google_inception/f01.png%22%3E

[이미지 출처] https://norman3.github.io/papers/docs/google_inception.html%3C/sub%3E

profile
새싹 빅테이터 개발자

0개의 댓글