CNNs

스누·2023년 6월 30일

컴퓨터 비전

목록 보기
3/3

1. MLP에서 vision?

MLP는 데이터의 모든 노드들이 연결 되는 완전 연결 계층을 말한다. 이미지 데이터의 경우 height weight channel 과 같이 3차원 데이터로 이루어져 있다. 또한 각 영역 마다 특징이 있지만, MLP로 이미지를 처리하게 되면 특징이 있는 이미지를 무시하게 된다. 예를 들어 강아지를 보여주고 있는 이미지에서 우리가 머신한테 원하는 것은 강이지인지 아닌지를 출력하는 것이다. FC layer에 강아지 이미지를 넣는다면 머신은 강아지와 관련 없는 모든 픽셀 하나하나를 다 살펴 보는 문제가 발생한다.

이를 해결하기 위해 사용되는 것이 Convolution 이다.

2. Convolution

kernel(필터)이라는 특징을 띄는 필터를 사용해 해당 이미지의 값을 sliding 해서 output 결과 값을 가져오는 것이 CNN이다.

  • Convolutional Neural Network (CNN)
    Convolutional layers + Pooling operations + MLP (Fully-connected layers) 로 이루어져 있다. 이는 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나눌 수 있는데, Convolutional layers + Pooling operations여기 까지가 이미지의 특징을 추출하는 것이고, 이로부터 나온 결과를 MLP 하여 클래스를 분류한다.
  1. Convolutional layer
    위에서 말한대로 이미지에 필터를 곱하여 특징을 추출하는 것이다.
    합성곱 계층에는 반영하고자 하는 이미지의 channel만큼의 필터를 가지고 있고, 이런 필터들 조합이 합성곱 계층에 있는 수 만큼 다음 feture map의 채널이 된다. CNN에서는 필터의 매개변수가 가중치에 해당하며 bias도 존재한다.
  • padding
    합성곱 연산을 계속하면 추출된 feature map의 크기가 지속적으로 감소하게 될 것이다. 이를 방지하기 위한 방법으로 padding을 사용하며, 연산을 수행하기 전에 입력 데이터 주변에 0의 값을 둘러싸는 것을 의미한다. 이를 통해 출력 크기를 조정할 수 있다

  • Stride
    CNN은 입력 이미지를 sliding window를 통해 각 영역의 특징을 찾아가는 방법이라고 했다. Stride는 이런 sliding window의 간격을 의미한다. 다시 말해 필터 적용의 간격을 정하는 것인데, Stride를 키울수록 출력된 이미지의 크기를 작아지게 만들 수 있다.

  1. Pooling operations

풀링은 이미지 정보의 대표성을 가지고 오면서 동시엣 크기를 줄이는 것을 의미한다.
여기서 대표성이 의미하는 것은 해당 필터(커널)이 반영되어 추출된 feature map에서 가장 대표적인 특징값을 가지고 학습을 진행하는 방법이다. 이를 통해 불필요한 noise를 줄이고 일반화된 특징을 학습할 수 있게 한다.

0개의 댓글