티스토리 뷰

Stride 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'으로 지정해주면 된다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함