
안녕하세요. 오늘은 슬라이딩 윈도우와 영역 추정에 대해 공부하려고 합니다.
앞으로 공부할 내용이지만, Object Detection이 이뤄지는 원리를 표현하면 다음과 같습니다.

모든 모델이 같은 메커니즘을 가지는 것은 아닙니다.
(오히려 최근 모델은 Region Proposal이 모델 자체에 들어가 있는 경우가 많습니다.)
이런 메커니즘은 Object Detection 영역에서 처음으로 딥러닝을 적용한 RCNN 모델의 메커니즘입니다.(초기 메커니즘)
오늘은 "Object가 있을만한 위치를 추정하는 방법"에 대해 공부하려고 합니다.

슬라이딩 윈도우는 이미지에서 일정 크기의 Window를 이동시키며, Window내에서 Object를 찾는 방식입니다.

슬라이딩 윈도우는 영역 추정이라고 할 수 없으며, 많은 이미지를 만들어 내기 때문에 비효율적입니다.
이렇게 슬라이딩 윈도우 방식을 적용하면 Object의 크기가 저마다 다르므로 고정된 윈도우의 한계가 생깁니다. 이러한 경우 윈도우의 크기를 조절하거나, 이미지의 크기를 조절할 수 있습니다.
아래는 이미지 크기를 조절하는 방법을 시각적으로 잘 표현한 블로그에서 가져온 자료입니다.

윈도우의 크기를 조절하는 것은 반대로 윈도우 사이즈를 여러 종류로 매핑해서 사용하는 것입니다.
당연히 두 가지 방법을 합쳐서 사용할 수도 있습니다.
슬라이딩 윈도우의 가장 큰 문제중 하나는 연산량이 많아 시간이 오래 걸린다는 점입니다.
아무래도 필요없는 부분까지 윈도우가 탐색하기 때문입니다.
앞서, 슬라이딩 윈도우는 모든 영역을 다 탐색하여 데이터로 만들었습니다.
이는 연산량을 증가시키며, 시간이 오래 걸린다는 단점이 있었습니다.
이미지의 모든 부분을 다 탐색하는 것이 아니라 이미지에서 Object가 있을만한 부분만 Bounding Box를 만들어 주는 방식이 Region Proposal입니다.
Selective Search는 대표적인 영역 추정 방식입니다.
Selective Search는 이미지의 색상을 근거로 Object가 있는 부분을 예상합니다. 이는 반복적으로 수행되어 최종적으로 남아있는 Object 부분을 데이터로 만듭니다.(Crop 합니다.)

Selective Search는 이후에 많은 모델에 사용됩니다.
슬라이딩 윈도우 방식에 비해 만들어지는 데이터가 적을 뿐더러 연산량도 적어 추정 시간도 단축됩니다.
Selective Search를 손쉽게 구현하도록 만들어진 모듈이 있습니다.
저도 공부할 때, 아래 링크를 통해 배웠으니 참고해보시면 좋을 것 같습니다.
https://github.com/AlpacaTechJP/selectivesearch
[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
https://pyimagesearch.com/2015/03/23/sliding-windows-for-object-detection-with-python-and-opencv/
Selective Search for Object Recognition Paper