[AI] CNN

Bora Kwon·2022년 6월 7일
0

개발일지

목록 보기
13/14

1. CNN이란?

Convolutional Neural Networks의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 Convolution이라는 전처리 작업이 들어가는 Neural Network 모델.
DNN(Deep Neural Network)는 기본적으로 1차원 형태의 데이터를 사용하기 때문에, 2차원 데이터가 들어오는 경우 flatten 시키는 과정에서 이미지의 일부 정보가 손실된다.
CNN은 이미지를 raw input 그대로 받아 feature 계층을 빌드업한다. 이미지 전체보다는 부분을 보는 것, 이미지의 한 픽셀과 주변 픽셀의 연관성을 살리는 것이 CNN의 중요 포인트.

2. Convolution의 작동 원리

이미지는 matrix 형태로 존재한다.
CNN에는 필터(커널)이 존재. 입력으로 들어온 이미지의 모든 영역에 같은 필터를 반복 적용해 패턴을 찾아 처리하는 것이 목적이다. (행렬 inner product 연산 사용)

Zero padding

예를 들어 5 by 5 이미지에 3 by 3 필터를 적용하면 파일 크기가 3 by 3으로 줄어들고 그만큼 손실이 발생한다. 이 문제점을 해결하기 위해 0으로 구성된 테두리를 가장자리에 감싸주면 입력 데이터는 7 by 7이 되고 결과는 5 by 5가 되므로 손실이 없어진다.

Stride

필터를 얼마나 움직이느냐 하는 값. 1일 경우 한 칸씩, 1보다 큰 값이 될 수도 있다. 필터가 이미지를 건너뛰는 칸이 많아지면 그만큼 결과값 이미지의 크기도 작아진다.

3. CNN in Pytorch

Convolution Layers

  • Conv1d : Text-CNN에서 많이 사용
  • Conv2d : 이미지 분류에서 많이 사용
  • Conv3d : 3d 모델에서 많이 사용

parameters

  • in_channels : 입력 채널 수
  • out_channels : 출력 채널 수
  • kernel_size : 커널 사이즈
  • stride : stride 값 default 1
  • padding : padding 값 default 0
  • padding_mode : zeros
  • dilation : 커널 사이 간격 사이즈
  • groups
  • bias : 편향 값을 설정하는지 여부. default True
profile
Software Developer

0개의 댓글