파이썬/딥러닝

[광주인공지능학원] CNN (합성곱 신경망)

취준생코린이 2021. 8. 16. 00:00
728x90

스마트인재개발원이라는 광주인공지능학원에서 딥러닝을 배울 수 있습니다.

오늘은 광주인공지능학원에서 진행된 CNN강의 내용을 설명해볼겁니다.

 

 

영상자료를 처리하기 위한 신경망은 일반 신경망과 다르게 다음과 같은 특징이 있어야한다.

  1. 고차원 입력벡터를 처리하는 것 -> 영상자료가 고차원 입력벡터로 표현될수 있기때문
  2. 2차원 또는 3차원 영상자료를 처리하는 것 (흑백영상은 2차원, 컬러영상은 3차원)
  3. 조명이나 잡음 또는 위치변환, 크기 변환 및 회전 변환에 강건하거나 불변해야한다

이러한 특징을 가지는 신경망이 합성곱 신경망(CNN)이다.

즉, CNN은 영상자료를 처리하기에 적합하다

 

 

MLP 이미지 분석

  • MLP은 층이 깊어지고 뉴런의 수가 많아지면 가중치 수가 급격히 늘어난다.
  • MLP 신경망을 이미지 처리에 사용한다면 이미지의 어떤 특정 패턴이 존재하는 위치에 민감하게 동작하며 패턴의 위치에 종속적인 결과를 얻는다.
  • MLP는 아래 세 개의 5는 패턴이 다르다고 판단한다.
  • MLP로 이러한 숫자 인식을 하려면 숫자의 크기를 비슷하게 맞추어야 한다.

 

 

CNN (Convolution Neural Network)

  • 1998년 Yann Lecun 교수에 의해 1950년 대 수행했던 고양이의 뇌파 실험에 영감을 얻어 이미지 인식을 획기적으로 개선 할 수 있는 CNN 제안
  • 고양이의 눈으로 보는 사물의 형태에 따라 뇌의 특정영역 (뉴런)만 활성화 된다는 결과를 기반으로 제안

 

CNN구조 

 

 

CNN (Convolution Neural Network)

  • CNN(합성곱)은 입력된 이미지에서 특징을 추출하기 위해 마스크(필터)를 도입하는 방법
  • 이미지 전체 영역에 대해 서로 동일한 연관성(중요도)로 처리하는 대신 특정 범위에 한정해 처리한다면 훨씬 효과적일 것이라는 아이디어 제시
  • 합성곱 계층의 입출력 데이터를 특성맵(feature map)이라고 한다.
  • 특성맵은 평면을 구성하는 2차원로 구성된다(채널이라고도 부른다)
  • 흑백으로 코딩된 경우 (MNIST처럼) 흑백의 그레이 스케일만 나타내면 되므로 깊이는 1이 된다.
  • 입력신호가 RGB 신호로 코딩된 경우, 깊이 축의 차원은 세가지 색을 각각 나타내는 3이 된다. (데이터의 형상 정보를 유지 할 수 있다.)

과적합 문제를 해결하기 위한 방법

  • 과적합 문제를 해결하기 위한 방법은 드롭아웃(훈련에서 일부 노드를 사용하지 않는것), 벌점화 등이 있다.
  • 이중에서 CNN은 가중치의 개수를 줄여 과적합 문제를 해결하기 위해 가중치 공유, 국소연결, 풀링을 사용한다
    1. 가중치 공유: 노드끼리 연결은 모두 되어있지만 가중치는 일부(앞 노드의 수)만 사용
    2. 국소연결: 인접한 층에 있는 노드끼리 서로 연결되지 않는 노드가 있는것을 의미한다.
    3. 풀링: 합성곱층 특징도의 크기를 줄일 수 있다. 그리고 합성곱층 특징도가 이동과 왜곡에 강하도록 하는 효과가 있다.

 

패딩(Padding)

  • 필터의 크기는 5x5나 7x7 등 임의의 크기로 정할 수 있다.
  • 필터의 크기로 인해 가장자리 부분의 데이터가 부족해서 입력과 출력의 크기가 달라지게 되는데
  • 이를 보정하기 위해서 입력신호의 가장자리 부분에 0을 미리 채워넣는 것을 패딩(padding) 이라고 한다.
  • Conv2D 계층에서는 padding 인자를 사용하여 패딩을 지정할 수 있다. valid로 설정하면 패딩을 사용하지 말라는 뜻이다.
    • same을 지정하면 출력의 차원이 입력과 같아지도록 적절한 수의 패딩을 자동
      으로 입력하라는 것이다.

 

축소샘플링

  • 합성곱을 수행한 결과 신호를 다음 계층으로 전달할 때, 모든 정보를 전달하지 않고 일부만 샘플링하여 넘겨주는 작업을 축소 샘플링 (subsampling)이라고 한다.
  • 축소 샘플링을 하는 이유는 좀 더 가치 있는 정보만을 다음 단계로 넘겨주기 위해서이다.
  • 커널 수를 늘리면 특성맵의 숫자가 점차 커지게 된다. 머신러닝의 최종 목적은 정보를 결국 줄여나가야 하며 따라서 핵심 정보만 다음 계층으로 전달하는 장치가 필요하다.

 

스트라이드(Stride)

  • 축소 샘플링에는 크게 나누어 스트라이드(stride)와 풀링(pooling)등 두 가지 기법이 있다.
  • 스트라이드는 합성곱 필터링을 수행할 때 패치를 (예를 들면 3x3 크기)를 한 픽셀씩 옆으로 이동하면서 출력을 얻지 않고, 2 픽셀씩 또는 3 픽셀씩 건너 뛰면서 합성곱을 수행하는 방법이다.
    • 이를 스트라이드 2 또는 스트라이드 3이라고 하는데, 이렇게 하면 출력 특성맵의 크기를 1/4 또는 1/9로 줄일 수 있다.

스트라이드

 

풀링(Pooling)

  • 풀링이란 CNN에서 합성곱 수행 결과를 다음 계층으로 모두 넘기지않고, 일정 범위내에서 (예를 들면 2x2 픽셀 범위) 가장 큰 값을 하나만 선택하여 넘기는 방법을 사용한다.
  • 이렇게 지역내 최대 값만 선택하는 풀링을 최대풀링(max pooling)이라고 한다.
    • 최대 풀링을 하면 작은 지역 공간의 대표 정보만 남기고 나머지신호들을 제거하는 효과를 얻는다.

 

 

 


 

 

 

Conv2D ( filters = 32, kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘, strides = (2, 2) )

 

Conv2D 인자 설명

  • 첫번째 인자(filters) : Convolution 필터의 수
  • 두번째 인자(kernel_size) : Convolution 커널의 (행, 열)
  • padding : 경계 처리 방법을 정의
    • ‘valid’ : 유효한 영역만 출력. 따라서 출력 이미지 사이즈는입력 사이즈보다 작다.
    • ‘same’ : 출력 이미지 사이즈가 입력 이미지 사이즈와 동일하다.
  • input_shape : 샘플 수를 제외한 입력 형태를 정의
    • 모델에서 첫 레이어일 때만 정의.(행, 열, 채널 수)로 정의
    • 흑백영상인 경우에는 채널이 1이고, 컬러(RGB)영상인 경우에는 채널을 3으로 설정
  • activation : 활성화 함수 설정
    • ‘relu’, ‘sigmoid’, ‘softmax’, ‘linear’
  • stride : stride 크기 지정 (행, 열)

 

MaxPooling2D ( pool_size = (2, 2), stride = (2, 2) )

MaxPooling2D 인자 설명

  • pool_size : max pooling 크기 지정 (행, 열)
  • stride : stride 크기 지정 (행, 열)

 

Flatten ( ): 1차원으로 변경하는 함수



 

 

더 자세한 설명은 광주인공지능에서!!!

 

스마트인재개발원(광주인공지능학원)에서 진행된 수업내용입니다.

 

[광주인공지능학원 링크]

https://www.smhrd.or.kr/

728x90