안녕하세요! 이번에 읽어볼 논문은 Cascade R-CNN, Delving into High Quality Object Detection 입니다.
Object Detection을 수행할 때, IoU는 RPN에서 생성한 region proposals가 positive인지 negative인지 결정하는 하이퍼 파라미터로 이용합니다. 일반적으로 낮은 IoU를 설정하면 detection 바운딩 박스 위치 결과값이 부정확하고, 높은 IoU를 설정하면, 바운딩 박스 위치 결과값이 정확한 대신에 detection의 전체 성능이 감소합니다.(많은 proposals를 검출하지 못하기 때문에, recall이 감소해 AP가 감소합니다.) 이처럼 IoU는 detection의 성능에 큰 영향을 미칩니다.
Cascade R-CNN은 두 가지 문제점을 지적합니다. 1) IoU가 높으면 많은 positive sample에 사라지기 때문에 overfitting이 발생합니다. 2) train과 inference시에 작용하는 IoU가 다릅니다. 예를 들어, 0.5 IoU로 학습을 한 모델은 COCO metric에 따라 0.5~0.95 IoU 범위로 test를 진행합니다.
Cascade R-CNN은 위에서 제시한 두 문제점을 해결하기 위해서 IoU를 증가시키면서 연속적으로 detector을 학습합니다. 낮은 IoU로 학습된 detector의 출력값으로 좀 더 높은 IoU를 설정해 detector을 학습시키는 것입니다. 따라서, stage가 진행될수록 좀 더 정확한 proposal로 학습을 하게 되는 것입니다. IoU가 높게 설정한 detector은 대부분의 positive를 무시하지만, 이 논문에서 제시한 방법으로 학습을 진행하면 매 stage를 거치면서 좀 더 정확한 proposal이 생성되면서, positive가 무시되는 비율이 감소하게 됩니다.
위 그림을 보면, 입력 IoU가 높아질수록(proposal의 정확도가 높아질 수록) 출력 IoU도 높아지는 것을 확인할 수 있습니다. 즉, proposal의 정확도가 높아지면 출력값도 정확하다는 말로 해석할 수 있습니다. Cascade R-CNN은 좀 더 정확한 proposal를 생성하기 위해서 낮은 IoU로 학습된 detector이 생성한 proposal로 다음 detector을 학습시키는 것으로 이해할 수 있습니다. 매 stage가 지날 수록 proposal의 정확도는 높아지고, 설정한 IoU도 높아지므로 detector의 성능이 향상됩니다.
Cascade R-CNN
Cascade R-CNN은 0.5 IoU로 학습한 detector로 region proposal을 생성하고, 생성된 region proposal로 0.6 IoU인 detector을 학습합니다. 이 detector의 결과값으로 0.7 IoU인 detector을 학습하여 최종 출력값을 도출합니다. 3-stage로 구성되어 있으며, 이보다 더 많은 stage는 성능에 악영향을 준다고 합니다. train만 cascade 구조를 적용 하는 것이 아니라, inference 시에도 cascade 구조를 사용합니다.
Performance
출처