CNN(Convolutional Neural Network)

2024. 11. 5. 10:03·AI & ML/딥러닝

 

CNN은 위와 같이 특징 추출(Feature Learning)부분과 이미지 분류(Classification) 부분으로 나뉘게 된다.

 

먼저 Feature Learning 영역은 Convolution Layer와 Polling Layer을 여러 겹 쌓는 형태로 구성된다. 

  • Convolution Layer: 입력 데이터에 필터를 적용 후 활성화 함수를 반영하는 필수 요소
  • Polling Layer: Convolution Layer 다음에 위치하는 선택적인 레이어

Classification 부분에는 이미지 분류룰 위한 Fully Connecter Layer가 추가된다. 또한 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten Layer가 위치한다.

 

Convolution Layer

이미지 데이터는 (높이) x (너비) x (채널) 의 3차원 텐서(tensor)로 표현될 수 있다. 만약, 이미지의 색상이 RGB코드로 표현되었다면, 채널의 크기는 3이 되며 각각의 채널에는 R, G, B 값이 저장된다. 

 

간단하게 2차원 텐서인 흑백 이미지를 이용해서 convolution을 알아보자

위와 같이 8x8 이미지에 3x3 크기의 합성곱 필터를 적용하여 새로운 output을 만드는 것이다. convolution 연산을 각 픽셀에 대해 적용시켜서 output 이미지의 픽셀 하나하나를 계산한다.

필터(filter)은 가중치가 담긴 행렬이기 때문에 커널(kernel)이라고도 불린다. 

 

컬러 이미지에서도 같은 방법을 사용한다. 하나의 convolution layer에서는 입력되는 이미지의 채널 개수만큼 필터가 존재하며, 각.채널에 필터를 적용함으로써 output 이미지가 생성된다.

 

학습 전에 필터는 무작위로 초기화되며, loss 계산을 통해 최적의 필터 파라미터를 찾아가는 과정이 딥러닝에서 말하는 학습이라고 보면 된다. 특정한 크기를 가지는 필터로 이미지 전체를 슬라이딩 하면서 합성곱 연산을 수행하는 과정 자체가 이미지 데이터의 공간적 상관관계를 추출하는 것이다.

 

Pooling Layer

이미지의 크기를 유지한 채 계속 연산을 수행한다면 그 연산량이 기하급수적으로 늘어날 것이다.

적당히 크기도 줄이고, 특정 feature을 강조할 수 있어야 하는 데, 그 역할을 Poolint Layer에서 하게 된다.

 

많은 object 카테고리가 존재하는 복잡한 데이터셋을 가지고 CNN을 구현해 내는 경우 매우 많은 수의 필터를 필요로 하고, 각각은 이미지의 패턴을 찾아내는 데 사용된다.

 

필터가 많다는 얘기는 그만큼 feature map들이 쌓이게 됨

> 구현할 CNN의 차원이 매우 크다는 이야기

> 고차원(High dimensionality)을 구현하려면 그에 상응하는 많은 수의 파라미터들이 필요

> over-fitting 초래 가능

> 차원을 감소시킬 방법 필요 >> Pooling Layer이 필요함!!

 

처리 방법은 총 세 가지가 있다.

  • Max Pooling
    : window 상에서 포함하고 있는 픽셀들 중 최대값 선택
    CNN 등 이미지 처리 네트워크에서 주로 사용. convolution layer에서 연산된 각 지역별 피처의 특성을 강조하는 효과가 있기 때문 
  • Averager Pooling
    : 각 feature map 상의 노드값들의 펴
  • Min Pooling
    : 최소값 추출 

 

Fully Connecter Layer

앞에서 이미지의 특징을 모두 추출하였으니 이제 분류할 차럐이다.

  • Flatten Layer: 데이터 타입을 Fully Connecter 네트워크 형태로 변경. 입력 데이터의 shape 변경만 수행
  • Softmax Layer: Classification 수행 

'AI & ML > 딥러닝' 카테고리의 다른 글

LSTM을 활용한 삼성전자 주가 예측  (1) 2024.07.17
CNN 예제 (MNIST, Fashion MNIST)  (4) 2024.07.15
'AI & ML/딥러닝' 카테고리의 다른 글
  • LSTM을 활용한 삼성전자 주가 예측
  • CNN 예제 (MNIST, Fashion MNIST)
JYUN_
JYUN_
예비 개발자 성장기록
  • JYUN_
    데브 스토리
    JYUN_
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • AWS & 클라우드 컴퓨팅 (2)
        • AWS (2)
      • AI & ML (17)
        • 딥러닝 (3)
        • 인공지능 기초 (2)
        • 자연어 처리 (3)
        • 컴퓨터 비전 (8)
      • CS 지식 (9)
        • 알고리즘 (1)
        • 자료구조 (4)
        • 지식확장 (1)
        • 컴퓨터 네트워크 (3)
      • 백엔드 (22)
        • Node.js (12)
        • Spring (9)
      • 웹 프론트엔드 (21)
        • HTML (3)
        • React (7)
        • 바닐라 JavaSctipt (11)
      • 코딩 테스트 & 문제 해결 (10)
        • 코딩 테스트 연습 (9)
        • 실전 문제 풀이 (1)
      • 트러블 슈팅 (1)
      • 기타 (4)
        • 개인 지식 관리 (1)
        • 외부 활동 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
JYUN_
CNN(Convolutional Neural Network)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.