Coursera - Convolutional Neural Networks

반응형

Convolution Neural Networks

 

컴퓨터가 이미지를 인식할 때, 가장 먼저 하는 일은 이미지의 수직 엣지(vertical edges)를 검출하는 것.

또한 수평 엣지(horizontal edges) 를 검출할 수 있습니다.

수직 엣지는 이미지상에서 수직의 이미지 ( 서있는 사람, 나무 등 ) 이고 수평 엣지는 ( 난간, 가로로 뻗은 이미지 ) 입니다.

 

합성곱 연산을 통해 수직 엣지 검출기를 구현하는 방법

 

Padding 

6x6 행렬에 3x3 행렬을 곱하면 4x4 행렬이 나옵니다.

이 방법의 단점은 2가지가 있습니다.

  1. 합성곱 연산을 적용할 때마다 이미지가 축소됩니다. ( 6x6 → 4x4 )
  2. 모서리 구석에 있는 작은 픽셀의 정보가 버려질 확률이 높음. 중간에 있는 픽셀과 겹치는 3x3 영역이 많기 때문에 이미지 엣지 근처에서 많은 정보가 버려집니다.

단점 2번

 

이러한 문제를 해결하기 위해서는 합성곱 연산을 최대로 적용해야 합니다. → 이미지를 padding

 

padding = 1 을 적용하면 6x6 이미지 대신 8 x 8 이미지로 패딩을 한 것이고,

8x8 과 3x3 이미지를 컨볼브 하면 6x6 이미지가 나오게 됩니다. 원래의 이미지 크기를 유지할 수 있죠.

 

0으로 패딩하면 추가된 픽셀들을 모두 0으로 채우는 것입니다.

그리고 위의 그림은 padding = 1 입니다. 경계에서 1픽셀이 추가되었기 때문이죠.

 

이렇게 패딩이 적용된 셀은 모든 셀에 영향을 미치기 때문에 이미지의 모서리나 엣지의 정보를

버리지 않고 적게 세는 것으로 효과적입니다.

 

Padding 의 양

Valid and Same convolutions

1. Vaild 합성곱 → 기본적으로 패딩이 없는 것을 의미합니다.

(n x n) x (f x f) = n-f+1 x n-f+1

2. Same 합성곱 → 패딩을 할 때 출력 크기는 입력 크기와 동일하다는 것을 의미.

관례적으로 홀수의 필터를 사용하는 것을 권장함 ( 3x3 5x5 … )

짝수를 사용해도 되지만 일반적인 컴퓨터 비전 규칙에 충실하면 보통 홀수를 사용합니다.

 

Strided Convolution

stride = 2 적용한 결과 7 x 7 행렬을 3 x3 행렬로 컨볼브한 결과 3x3 출력을 얻게 됩니다.

 

 

3D 입체형의 합성곱

 

이미지가 흑백이 아닌 RGB 이미지는 6 x 6 x 3 으로 이루어집니다.

마지막의 3은 세 개의 색상 채널에 해당됩니다.

6x6 이미지 3개를 쌓은 것으로 생각하면 됩니다.

필터 역시 3x3x3 ( 빨강 초록 파랑 ) 을 사용합니다.

정리해보면

6 ( Height ) x 6 ( Width ) x 3 ( Channels )

3 ( Height ) x 3 ( Width ) x 3 ( Channels )

출력이미지 → 4x4

  • 이미지의 채널수와 필터의 채널수는 반드시 같아야 합니다.

3*3*3 필터를 적용하면 원본 이미지의 픽셀은 세 개의 층으로 되어있으므로 총 27번의 연산을 합니다.

 

노란색 필터는 수직 엣지를 계산하는 필터이고

주황색 필터는 수평 엣지를 계산하는 필터입니다.

합성곱한 결과로 두 개의 4x4 행렬을 얻고 이 둘을 합쳐서 4x4x2의 부피가 나오며 여기서 2는 두개의 필터를 의미합니다.

 

Pooling Layers

합성곱 레이어 외에도 합성곱 신경망은 pooling layers 를 사용하여 표현 크기를 줄임으로써 계산 속도를 높이고 특성을 훨씬 더 잘 검출해낼 수 있습니다.

 

여기에서 하이퍼파라미터인 필터 크기는 2가되고 스트라이드도 2가 됩니다.

4x4 행렬에서 2x2 필터를 기준으로 4분할을 하면 각각의 색이 칠해진 부분에서 최댓값을 뽑아서 2x2 행렬을 만들게 됩니다. 이걸 Max pooling 이라고 합니다. 많은 실험 속에서 성능이 좋습니다. ( 이유는 알지 못함 )

 

학습할 수 있는 변수는 따로 없습니다.

 

 

똑같은 방법이지만 이번에는 최대값 풀링이 아닌 평균을 구한 풀링을 사용한 방법입니다.

앞서 말했듯이 최대 풀링을 가장 많이 사용합니다.

 

Pooling 의 하이퍼파라미터

  1. f → 필터의 크기
  2. s → 스트라이드

가장 일반적인 값은 2x2 , 패딩은 거의 사용하지 않음.

계산을 했을 때, 입력의 채널과 출력의 채널은 일치하는데 풀링은 각 채널에 개별적으로 적용되기 때문입니다.

한 가지 유의할 점은 풀링에서는 학습할 변수가 없다는 것입니다.

풀링은 신경망 한 레이어에서 계산하는 고정 함수이고 학습할 것이 없습니다.

 

CNN example

CONV 레이어 , Pooling 레이어, 완전 연결 레이어 → 이것들을 합치는 것이 컴퓨터 비전 분야의 중요한 부분

 

 

 

출처 : Coursera

반응형