티스토리 뷰
3. Convolutional Networks / L2. Convolutional Neural Networks - Stride and Padding
chrisysl 2018. 9. 7. 11:21Stride and Padding
- 필터의 크기와 개수를 지정해줌으로써 convolutional layer를 제어할 수 있다는것을 앞서 다뤘다.
- 예를들어, convolutional layer의 노드의 수를 증가시키기 위해선 필터의 수를 증가시켜야 한다.
- 필터가 잡아낼 패턴의 크기(size)를 증가시키기 위해선 필터의 크기(size)를 증가시켜야 한다.
- 하지만 컨트롤 할 수 있는 하이퍼 파라미터들이 더 다양하게 존재한다.
- 이 하이퍼 파라미터들중 stride 라 불리는것이 있는데,
- stride는 필터가 이미지 상에서 이동하는 크기 를 의미한다.
- 이전에 설계했던 모델에서 stride는 1이었다.
- convolution window를 수평으로 그리고 수직으로 이미지를 따라 1의 크기로 움직였다.
- 즉, 한 회 마다 한 픽셀씩 움직였다는 의미이다. (stride 가 1 이므로)
- stride가 1인 경우 convolutional layer를 input 이미지와 대략적으로 동일하게 너비와 높이를 만들어낸다.
- 위 그림상 보라색 육면체는 stride가 1일 때의 feature map이 쌓인 convolutional layer를 나타낸 것이다.
- 만약 이 stride를 2로 두게되면, 1일때 형성된 육면체의 너비와 높이(width and height)가 대략 절반이 된다.
- 물론 edge를 어떻게 설정하느냐에 따라 그 수치가 변동될 수 있다.
- edge들이 어떤 영향을 미치는지 알아보기위해 5 by 5 그레이스케일 이미지를 예로 들어보자.
- 2 by 2 필터가 있고 stride 역시 2라고 할 때, 처음부터 순차적으로 진행하다보면 위와같이 모서리부분에서
- 필터의 크기만큼을 모두 채우지 못하는 상황이 발생한다.
- 따라서 우선은 우측 그림에서 ? 로 표시된부분은, 필터의 크기만큼의 노드 값들이 충족되지 못한 경우이다.
- 이 상황에서 두가지의 옵션이있다.
- 하나는 ?로 표시된 즉, 필터의 크기만큼의 노드가 충족되지 않은 영역에 대해 그 값을 지우는 것이다.
- 즉, 해당 값들은 무시한다는 얘기.
- 이 옵션으로 학습을 진행하면, convolution layer에 이미지의 일부 영역에 대한 정보가 없게된다.
- 위 그림에서 표시된 영역만큼만 이미지의 정보가 반영된 것임.
- 두번째 옵션은 stride의 값만큼 필터가 이동했을때 부족한(비는)영역을 0으로 채워주는것이다.
- 필터에게 움직일 수 있는 더 많은 공간을 제공해주는 개념이다.
- 이렇게 되면, 이미지상의 모든 정보를 반영하게 된다.
- 첫번째 옵션이나 두번째 옵션 모두 상황에 따라 적절하게 사용하면 된다.
- 첫번째 옵션은 이미지의 정보 일부가 패턴에 반영되지 않아도 될 경우 사용하면 되고,
- PADDING 매개변수를 'VALID' 로 지정해주면 된다.
- 반대로 두번째 옵션을 사용하려면
- PADDING 인자를 'SAME'으로 지정해주면 된다.