[딥러닝 5강] CNN

GisangLee·2023년 10월 1일
0

대학원

목록 보기
6/17

1. Convoluition 연산

정의

한 함수와 다른 함수를 반전 이동한 값을 곱한 다음,
구간에 대해 적분하는 연산

(fg)(i)=f(τ)g(tτ)dτ(f*g)(i)=\int_{\infty}^{-\infty}{f(\tau)g(t - \tau)d\tau}
  • 1차원 Convolution

    • S(i)=(IK)(i)=nI(i+n)K(n)S(i) = (I * K)(i) = \displaystyle\sum_{n}\displaystyle\sum{I(i + n)K(n)}
    • 두 개의 행렬이 있을 때, 하나의 행렬을 이동하면서 나머지 행렬과 곱하는 연산


  • 2차원 convolution

    • S(i,j)=(IK)(i,j)=mnI(i+m,j+n)K(m,n)S(i, j) = (I * K)(i, j) = \displaystyle\sum_{m}\displaystyle\sum_{n}I(i + m, j + n)K(m,n)

Sobel Operator

주어진 이미지 A에 대해 kernel KxK_x, KyK_y를 이용하여
경계선에 대한 강도 G를 구함

  • 이미지 경계를 찾아내는 연산
  • 2개의 kernel을 이용하는 2차원 convolution 연산
  • KxK_x

    • Gx=[+101+202+101]G_x = \begin{bmatrix}+1&0&-1\\+2&0&-2\\+1&0&-1 \end{bmatrix}
  • KyK_y

    • Gy=[+1+2+1000121]G_y = \begin{bmatrix}+1&+2&+1\\0&0&0\\-1&-2&-1 \end{bmatrix}
G=Gx2+Gy2G = \sqrt{G_x^2+G_y^2}


출처: https://en.wikipedia.org/wiki/Sobel_operator


2. CNN의 기본 원리

여러 개의 학습 가능한 kernel을 가진 convolution 레이어를 이용

  • Multi-Channel 이미지 변환

특징

  • Shift Invariance

    • 이미지내에 사물이 어디에 나타나도 인식 가능
      • Parameter 공유
  • 점차적으로 high-level feature 생성

    • Loss Function을 낮추는 방향

3. CNN 기본 구성요소

  • Convolution Layer

  • Pooling Layer

  • Up-Sampling Layer

Convolution Layer의 기본 동작

Width X Height X Channels 모양의 입 력 tensor를
k_sizew_w X k_sizeh_h X Channels 모양의
kernel filter_size개로 convolution 연산한 결과

import tensorflow as tf
from tensorflow.keras.layers import Conv2D

Conv2D(
	filters=5,
    kernel_size=(3,3),
    padding="same", # 입출력 모양이 같도록 조정
    activation="relu",
    kernel_initializer="he_noral",
    kernel_regularizer=tf.keras.regularizers.L1(1e-4),
    
    # 이 레이어 후의 활성화 함수 파라미터 초기화 파라미터
  	bias_regularizer=tf.keras.regularizers.L1(1e-4),
    input_shape=(32, 32, 3) # width, height, channels 모양의 입력
)

padding = "same"

입출력의 모양이 동일해 지도록 가장자이 주변에 0을 덧붙이는 조건


Pooling Layer

  • 이미지의 해상도를 낮추는 목적

    • Kernel내의 값을 평균

      • Average Pooling
    • Kernel내의 최댓값으로 산정

      • Max Pooling
  • 역할

    • Pooling Layer는 feature 수를 축소

      • 많은 feature 수 -> Overfitting 경향
    • Feature 요약 + 추상화

from tensorflow.keras.layers import MaxPool2D

MaxPool2D(pool_size=(2,2))

profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/

0개의 댓글