Perception/Object Detection

[Object Detection] Sliding Window

고집호랑이 2023. 3. 4. 07:30

개요 

2개 이상의 객체를 찾아야하는 Object Detection은 feature map이 복잡하게 나타나 객체의 위치를 잘 찾을 수 없었습니다.

 

단순하게 생각해본다면, 이는 전체 입력 이미지를 작은 영역들로 나누고 각각의 작은 영역 내에서 객체의 위치를 찾는다면 해결할 수 있습니다.

 

입력 이미지를 작은 영역으로 나눌수록 feature map도 간단해지기 때문이죠.

 

이러한 방식을 Sliding Window라고 합니다.

 

Sliding Window

Slinding Window 기법일정 크기의 window를 이동시키며, window 내에서 object를 detection하는 방식입니다.

 

이때 window는 마치 CNN에서 커널이 입력 이미지와 연산하며 움직이는 것처럼 왼쪽 상단에서부터 오른쪽 하단으로 이동합니다. 

 

Sliding Window 방법
Sliding Window 방법

하지만 만약 window의 크기보다 객체의 크기가 훨씬 크다면 window에 들어온 객체의 일부분을 가지고는 객체를 잘 인식하지 못할 것입니다. 

 

또한 서 있는 사람은 대부분 세로로 길쭉한데 이를 정사각형 모양의 window로 찾기란 어려울 것입니다. 

 

sliding window의 문제점
문제점

 

이를 위해서 여러 형태의 window를 사용하거나, window 형태는 고정하되 입력 이미지의 크기를 변경하는 방식을 사용합니다. 

 

아래 그림이 후자에 해당하는 방식을 사용한 Sliding Window입니다.

 

이미지 scale을 바꾸며 Sliding Window 사용
이미지 scale을 바꾸며 Sliding Window 사용

 

Sliding Window의 문제점과 Region Proposal 

이 Sliding Window 방식의 가장 큰 문제점 계산량이 많아 시간이 오래 걸린다는 것입니다.

 

찾는 객체가 없어도 모든 영역을 sliding하며 살펴봐야할 뿐더러 여러 형태의 Window와 여러 Scale을 가진 이미지를 스캔해서 검출해야 하므로 수행 시간이 오래 걸릴 수 밖에 없죠.

 

일일히 모든 이미지에서 객체를 찾아보는 것이 아니라 객체가 있을만한 위치를 미리 찾고, 그 위치에서 객체를 찾는다면 연산량은 줄고 속도는 훨씬 빨라질 것입니다.

 

이렇게 객체가 있을만한 후보 영역을 미리 찾아주는 것Region Proposal(영역 추정) 방식이라고 합니다. Sliding Window는 이 Region Proposal의 등장으로 거의 사용되지 않고 있습니다. 

 

다음 포스팅에서는 이 Region Proposal의 대표적인 방법 중 하나인 Selective Search에 대해서 설명하도록 하겠습니다.

 

Reference

https://pyimagesearch.com/2015/03/23/sliding-windows-for-object-detection-with-python-and-opencv/

 

 https://www.inflearn.com/course/딥러닝-컴퓨터비전-완벽가이드/dashboard - 인프런 강의