갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network
→ 보통 R-CNN 이후 개선된 모델로 Fast R-CNN을 많이 얘기하지만 Spatial Pyramid Pooling이라는 개념 때문에 간단히 언급
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition.pdf
기존 CNN 구조가 고정된 입력 이미지 크기를 입력으로 취하는 데에서 발생한 문제점을 개선하기 위해 고안
고정된 이미지의 입력이 왜 문제?
기존 CNN에서는 고정된 입력 크기를 맞춰주기 위해 Crop, Warp을 적용
문제점
CNN은 Convolution Layers와 Fully-Connected Layers로 구성되어있음
Convolution Layers - Sliding Window 방식으로 작동 → 입력 이미지 고정 필요 x
Fully-Connected Layers - 고정된 크기의 입력이 필요한
→ 고정된 입력은 fc layers를 위한 제약일 뿐임
입력 이미지의 크기에 관계없이 conv Layer들을 통과시키고, fc Layer 통과 전에 피쳐 맵들을 동일한 크기로 조절해주는 Pooling을 적용하자!
기존 R-CNN이 모든 RoI에 대해서 CNN Inference를 한다는 문제점을 획기적으로 개선
→ 기존 R-CNN과 정확도는 비슷하지만 속도는 20~300배 가까이 빠름
입력 이미지의 scale, size 등에 영향을 받지 않음.
End-to-End 방식이 아니라 학습에 여러 단계가 필요(Fine-Tuning, SVM, BBR)
End-to-End 방식이란?
입력에서 출력까지 파이프라인 네트워크 없이 한 번에 처리한다는 뜻
어떻게 다른가?
기존 음성 파이프라인의 구조
End-to-End 방식의 구조
→ 수동적으로 생성되는 지식이 없음
→ 학습 데이터 군이 적을 때 더 안 좋게 동작할 수 있다.
→ 충분한 학습 데이터가 있을 시 정보로 인해 걸리는 제한에 방해받지 않는다.
여전히 최종 Classification에는 Binary SVM을, Region Proposal에는 Selective Search를 이용한다.
Fine-tuning 시에 SPP를 거치기 이전의 Conv Layers를 학습시키지 못한다 → Back-Propagation이 안됨