Faster R-CNN 논문을 간단하게 리뷰해보았습니다. Faster R-CNN은 이름에서도 알 수 있듯이 기존의 R-CNN과 Fast R-CNN에 비해 더 빠른 R-CNN을 의미합니다. 본 논문은 Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun에 의해 작성되었으며, 다음 링크를 통해 볼 수 있습니다.
본 논문의 접근법 : 앵커와 앵커에 관련된 proposal을 계산하는 함수 모두 translation-invariant함
객체를 변환하는 경우, proposal도 변환해야 하며, 두 위치에서 모두 동일한 기능으로 proposal을 예측해야 함
MultiBox 방법은 k-means를 사용하여 800개의 앵커 생성 → translation-invariant X
⇒ 객체를 번역할 때 동일한 제안이 생성됨을 보장 X
translation-invariant 속성은 모델 크기 줄임
MultiBox - (4+1)800 차원의 fully connected output layer. // 출력층 매개변수 : $6.110^6$개
our Method - (4+2)9 차원의 conv ouput layer (k=9일 때). // 출력층 매개변수 : $2.810^4$개
⇒ MultiBox의 출력층 매개변수 크기의 2배 작은 크기를 가짐.
feature projection layer를 고려하면, 본 논문의 proposal layer는 MultiBox보다 훨씬 작은 매개변수를 갖고 있음 ⇒ 소규모 데이터셋에서 오버피팅 위험 적음
training RPN의 경우, 각 앵커에 객체인지 아닌지에 대한 binary class label을 할당
두 종류의 앵커에 positive label을 지정
🗨️ (groud-truth VS label) → label은 정해진 정답이지만, ground-truth는 우리가 원하는 정답임
두번째 조건은 positive sample을 확인하는데 충분하지만, 가끔 두번째 조건에서 positive sample을 발견하지 못하는 상황 발생
⇒ 첫번째 조건 채택!
IoU 비율이 모든 ground-truth box에 대해 0.3보다 작은 경우에는 negative label 할당
positive/negative 에 포함되지 않는 앵커는 training objective에서 제외
손실 함수
p*i Lreg = p*i가 1인 경우(positive anchor)에만 활성화.
p*i가 0인 경우(negative anchor)에는 비활성화
pi: Predicted probability of anchor
pi*: Ground-truth label (1: anchor is positive, 0: anchor is negative)
lambda: Balancing parameter. Ncls와 Nreg 차이로 발생하는 불균형을 방지하기 위해 사용.
cls에 대한 mini-batch의 크기가 256(=Ncls)이고, 이미지 내부에서 사용된 모든 anchor의 location이 약 2,400(=Nreg)라 하면 lamda 값은 10 정도로 설정함
ti: Predicted Bounding box
ti*: Ground-truth box
Bounding box regression(Lreg) 과정에서의 손실함수
3가지 방법 존재
4-step Alternating training
⇒ RPN과 Fast R-CNN은 같은 합성곱 계층 공유 + 단일 네트워크 구성
앵커
박스 면적이 1282, 2562, 5122 픽셀을 갖는 3개의 스케일과 1:1, 1:2, 2:1의 3개의 크기 비율을 사용
이미지 경계를 교차하는 앵커 박스는 주의해서 처리해야 함
→ 훈련할 때 boundary-crossing outliers를 무시하도록 처리함 or 훈련 속도 느리고 성능 낮음
RPN proposal의 overlap 발생
💡 Ablation Experiments란 요소를 하나씩 없애면서 해당 요소가 전체 시스템에 어떤 영향을 주는지 확인하는 분석 기법을 뜻함
RPN과 Fast R-CNN이 합성곱 계층을 공유하는 것의 효과에 대해 먼저 살펴 봄
4 step Alternating Training에서 2단계까지 진행한 결과들과 비교
→ 공유하지 않은 결과보다 공유한 결과(mAP-59.9%)의 성능이 더 높음
⇒ 3단계에서 RPN을 파인 튜닝하므로 성능이 좋은 영역 추정 bounding box를 출력했기 때문
RPN의 효과에 대해 살펴봄
cls와 reg의 영향
ZF-Net 대신 VGG 사용 ⇒ 동일한 조건을 갖고 ZF-Net을 사용한 Experiment와 비교했을 때 성능 good!(mAP : 59.2%)