[Faster Rcnn] Towards Real-Time Object Detection with Region Proposal Networks

lena_log·2022년 8월 18일
2

PapersRiveiw

목록 보기
7/9
post-custom-banner


faster rcnn이 인식해준 귀여운 고양이 사진과 함께 시작해 볼게요!
Figure 2부터 그 아래에 해당하는 부분이 Faster R-CNN의 핵심내용이에요.

논문 링크: https://arxiv.org/pdf/1506.01497.pdf


Abstract

  • 최신의 object detection networks는 객체 위치를 가정하기위해서 region proposal algorithms에 의존한다
  • SPPnet과 Fast R-CNN같은 네트워크는 러닝타임이 줄어왔지만 병목현상이 일어난다
  • 그래서, Region Proposal Network을 소개한다
  • RPN은 디텍션 네트워크와 함께 이미지의 합성곱 핏쳐를 공유하기 때문에 region proposals에서 거의 연산 비용이 들지 않는다

    *Resion Proposal: 이미지 안에 객체가 있을 후보 영역을 먼저 찾아주는 작업

  • RPN은 고퀄리티의 region proposal을 만들기 위해서 엔드투엔드로 훈련되었고 디텍션을 위해서 Fast RCNN이 사용되었다
  • RPN과 Fast-RCNN을 합치고 단일의 네트워크에 넣기때문에 앞의 두개가 합성곱 핏쳐를 공유하게된다(합성곱 피쳐는 attention방법을 사용한다)
  • 디텍션 시스템이 5fps를 가지면서 PASCAL VOC 2007, 2012, MS COCO 데이터 셋에서 이미지 당 300개를 제안하면서 최신의 객체 인식 정확도를 성취했다
  • ILSVRC와 COCO 2015 대회에서 Faster RCNN과 RPN이 몇번의 트랙 동안 1등을 했고 code는 이용가능하게 만들었다

    Faster RCNN Code | pytorch로 작성되어있음
    https://github.com/chenyuntc/simple-faster-rcnn-pytorch/blob/367db367834efd8a2bc58ee0023b2b628a0e474d/model/faster_rcnn.py


Introduction

  • Region proposal methods는 전형적으로 저비용 핏쳐들과 경제적인 추론 스켐에 의존한다
  • Selective Search는 cpu에서 이미지당 2초가 걸려서 굉장히 느리다

    Selective Search
    가공된 저수준 핏처에 기반해 슈퍼픽셀을 합치는 것
    과정
    1) 입력 영상에 대해 segmentation을 실시해서 이를 기반으로 후보 영역을 찾기 위한 seed를 설정
    2) 초기에 엄청나게 많은 후보들이 만들어지고 이를 적절하게 통합해 나가면 segmentation은 후보 영역의 갯수는 줄에들게 되기 때문에 결과적으로 box의 후보 갯수도 줄어들게 됨

  • edgeboxes도 퀄리티와 속도 사이에 트레이드 오프이다
  • Region proposal이 CPU에선 러닝타임이 많이 걸리기때문에 GPU에서 연산하는게 효과적인 방법이겠지만 다운 스트림 디텍션 네트워크를 무시하기 때문에 연산을 공유하는 기회를 놓친다
  • 그래서 나온게 합성곱 층과 객체 감지 네트워크를 공유하는 Region Proposal Networks(RPNs)이다
  • 리젼 바운드와 objecness score가 동시에 회귀 연산이 되는 컨브 층 역할이 추가됨으로서 rpn이 만들어지기 때문에 이 rpn이 일종의 fully convolutional network가 되고 객체인식 문제에서 엔드투엔드 방식으로 훈련될 수 있다

Figure 1


1. 이미지와 피쳐맵의 피라미드를 짓고 분류기를 모든 스케일에서 적용한다
2. 다양한 스케일과 사이즈가 있는 필터들의 피라미드를 피쳐맵에서 작동시킨다
3. 예상 박스의 피라미드를 회귀 함수에서 사용한다

  • 이전에 사용했던 방법인 figure1 1,2번
  • 앵커박스는 다양한 스케일과 측면 레티오에서 추론을 제공하는데 우리의 방식이 회귀 추론의 피라미드로써 생각되어질수 있기 때문에(figure1 3번) 이는 이미지 또는 필터가 반복되는 걸 피할 수 있다
  • 즉, 이 모델은 단일 스케일의 이미지에서 훈련/테스트로 사용할때 좋은 퍼포먼스를 가지고 그 때문에 러닝타임도 오래걸리지 않는다

Related Work

Object Proposals

  • 넓게 사용되는 방법은 Grouping super-pixcels(Selective search, CPMC, MCG) 그리고 Sliding windows(objectness in windows, EdgeBoxes)이다
  • 객체 제안 방법은 감지기의 외부 독립적인 모듈로써 채택되었다(Selective Search, Rcnn, Fast Rcnn)

Deep Networks for Object Detection

  • Rcnn은 주로 분류기로써 역할을 했지 object bounds로써 예측하진 않았다
  • 정확도가 지역 제안 모듈의 퍼포먼스에 의존하기 때문에 여러 논문에서는 객체 bbox 예측을 위해 deep network사용한다
  1. OverFeat
    • 단일 객체에 박스 coordinates를 예측했다
    • 그리고 나서 완전 연결층이 conv 층으로 다중 클래스를 감별하기 위해서 들어갔다
  2. MultiBox
    • 네트워크로부터 Region proposals을 만들면서 동시에 다중 class agnostic boxes들을 예측했다
    • 위의 class agnostic boxes는 Rcnn에서 사용되었다
    • 멀티박스는 단일의 잘린 이미지 또는 많은 크게 잘린 이미징에서 적용되었다
    • proposal과 detection 네트워크 사이에서 피쳐들을 공유하지 않는다
  3. DeepMask
    • 박스가 아닌 객체 모양을 제안하는 학습을 위해 딥마스크 방법을 발전시켰다
  • overfeat 논문에서 분류, 지역화, 객체 감지를 위한 이미지 피라미드에서 합성곱 피쳐들을 계산했다
  • 공유하고 있는 합성곱 피쳐에서 Adaptively-sized pooling이 지역에 기초한 객체인식과 의미론적 분할을 위해 이번 모델에서 발전 시켰다
  • Fast Rcnn은 엔드투엔드 감지기 훈련이 가능했다 공유된 conv 피처들에서, 그리고 정확도와 속도를 불러오는 것을 보여준다

Figure 2

  • faster R-CNN은 객체 인식을 위한 단일, 통합된 네트워크이다. RPN 모듈이 통합된 네트워크에서 attenion으로써 역할을 한다

Faster R-CNN

  • fater rcnn은 2개의 모듈로 되어있다
  1. deep fully convolutional network
    • 객체가 있을만한 위치들을 제안함
  2. fast Rcnn 디텍터
    • 제안된 위치들을 사용한다
  • 요즘 핫한 'attention'의 매커니즘을 사용하는 건데 RPN 모듈이 fast rcnn이 어디를 봐야할지 알려준다

[RPN] Region Proposal Networks

  • rpn은 정사각형의 객체가 어디에 있는지 보여주는 이미지와 objecness 점수를 가져온다
  • 우리는 이과정을 conv network와 함께 모델로 만든다
  • 그리고 fast RCNN 객체 감지 네크워크와 연산하는 걸 공유한다 즉, RPN과 fast RCNN 네트워크를 컨브층의 공통부분을 공유한다는 것이다

Anchors

Figure 3_Region Proposal Nework 과정

  • 어디위치에 있는지 제안하는 걸 만들기위해서 공유된 conv층의 출력된 conv 피쳐맵에 작은 네트워크(빨간 네모칸)를 슬라이딩한다
  • 256차원의 피쳐가 만들어지고 이 피쳐는 2개의 fc층(box regression layer=reg layer, box classification layer=cls layer)에 넣는다
  • reg layer는 k개의 박스의 coordinates를 인코딩하는 4k 점수를 가지고 cls layer는 객체의 가능성을 추측하거나 객체가 없다고 알려주는 2k 점수를 출력한다
  • k 참조 박스들롸 관련해 k 제안을 매개변수화하는데 이게 앵커라고 부른다
  • 즉 앵커는 슬라이딩 윈도우의 중심이고 스케일과 화면의 가로 세로 비율과 관련이 있다

Translation-Invariant Anchors

  • trnaslation invariant는 MultiBox와 비교했을때 모델의 사이즈를 줄이기때문에 Pascal VOC같은 작은 데이터 셋에서도 과적합의 리스크를 덜 가진다

Multi-Scale Anchors as Regression References

  • 다중 스케일 예측을 위한 인기있는 2가지 방법이 있다.
  1. image/feature pyramid
    • 다양한 스케일에서 이미지의 사이즈를 바꾸고 각각의 스케일에서 피처맵을 연산한다
    • 단점으로는 시간이 너무 오래 걸린다
  2. 피처맵에서 멀티플 스케일의 슬라이딩 윈도우를 사용하는 것이다
    • 다양한 화면 비율의 모델을 다른 필터 사이즈를 사용해서 각각 훈련시키는데 이걸 멀티플 스케일에서 사용한다면 pyramid of filters처럼 생각되어진다
    • 그래서, 첫번째 방법과 결합되어 두번째 방법이 보통은 채택되었다
  • 우리의 방법은 멀티플 스케일과 aspect ratio를 추론하면서 바운딩 박스를 분류하고 회귀하는 것이다
  • 이게 단일의 스케일에서 이미지와 피처맵에 의존하고 단일사이즈의 필터를 사용하기 때문에 멀티플 스케일과 사이즈에서 효과적이고 컴퓨팅 연산 비용면에서도 더 좋다

Loss Function

  • i는 미니배치 안에서의 앵커 값
  • pi는 앵커 i가 객체인지에 대한 예측 확률

    ground truth 라벨이고 1, 0으로 표시됨
  • ti는 예측된 바운딩 박스에서 coordinates를 나타내는 벡터

    positive 앵커와 관련된 gt box

Training RPNs

  • RPN은 역전파와 SGD에 의해 엔드투엔드로 훈련되었다
  • rpn 네트워크를 훈련시킬 때 image centric 샘플링 전략을 가져왔다
  • positive anchor와 negative anchors가 있는 이미지를 미니배치에서 증가시켰는데 이게 모든 앵커에 로스 함수가 최적화하는게 가능했는데 negative anchors로 편향이 생기는게 문제였다
  • 그래서, 무작위로 256개의 앵커를 샘플링하고 로스함수를 연산했다 이 비율은 1:1까지 가졌다

  • 또한, 랜덤으로 모든 새로운 레이어를 초기화했다
  • 초기화 한 방법은 표준편차가 0.01인 제로 평균 가우시안 분포를 가중치로 사용했고 앞에 초기화된 레이어가 아닌 다른 모든 레이어는 사전학습된 이미지넷 분류 모델로 초기화 시켰다
  • learning rate 0.001, 60k mini-batches를 PASCAL VOC 데이터 셋에서 사용했다
  • momentum 0.9, 가중치 감소 0.0005를 Caffe를 사용해 적용했다

Sharing Feature for RPN and Fast R-CNN

  • Fast rcnn을 디텍션 네트워크에 사용했는데 RPN의 통합된 네트워크와 fast rcnn의 공유된 conv 층을 학습시켰다
  • Fast rcnn과 RPN을 convolution layers를 공유해야했기 때문에 아래 3가지 방법을 핏쳐를 공유하면서 네트워를 학습시키는 방법으로 의논했다

1. Alternation training

  • RPN을 학습시키고 Fast R-CNN을 훈련시켜서 proposal을 사용한다
  • 네트워크가 Fast RCNN에 의해 튜닝되고나서 RPN을 초기화 한다 그리고 이 과정이 반복된다
  • 이 방법은 이번 논문에있는 모든 실험에서 사용되었다

2. Approcimate joint training

  • RPN과 Fast RCNN 네트워크를 훈련하는동안 하나의 네트워크로 합쳤는데 각각의 경사하강 안에서 순전파가 region proposals을 만들었고 Fast RCNN이 학습할때 proposals이 계산되었다
  • 역전파는 역전파된 시그널(RPN loss+Fast RCNN loss)이 있는 공유된 층이 합쳐진다
  • 이 방법은 쉽게 이용할수 있지만 w.r.t 미분(the proposal boxes coordinate)이 무시된다
  • 위에 Alternation training과 비교했을때 훈련시간이 감축되지만 닫힌 결과를 생산하는게 문제다

3. Non-approximate joint training

  • RPN으로 예측된 바운딩 박스는 입력 함수였고 그 Fast RCNN에서 Roi 풀링 층이 합성곱 피쳐와 예측된 바운딩 박스를 입력으로 받았다
  • 그래서, 이론적으로 역전파는 box coordinates의 경사를 포함했어야한다
  • 이러한 경사들이 joint trainind에서 무시되었고 우리는 box coordinate를 구분하기 위해서 Roi 풀링 레이어가 필요했다

4-step alternating Training

1) RPN을 학습시킨다. 이 네트워크는 ImageNet pre trained 모델과 초기화 되고 엔드투엔드로 region proposal task가 튜닝된다.

2) Fast Rcnn에 의해 분리된 네트워크를 학습시키는데 이 Fast Rcnn은 RPN으로 만들어진 the proposals을 사용한다. 그리고 이 감지 네트워크가 ImageNet Pre Trained 모델에 의해 초기화 된다. 이때는, 두 네트워크가 conv 층을 공유하지는 않는다.

3) 감지 네트워크를 초기화 하기위해 RPN 훈련을 시작하지만 공유된 conv 층과 오직 파인튜닝된 층을 RPN에 고정시켜서 사용한다. 이때, 2개 네트워크가 conv 층을 공유한다.

4) 공유된 conv 층을 고정을 유지하려고 Fast Rcnn의 특정 층에 파인튜닝한다. 두개의 네트워크가 같은 conv 층을 공유하고 하나의 네트워크 형태를 가진다.


Conclusion

  • RPN은 region proposal 생성에서 효과적이고 정확하다
  • conv 피쳐를 공유하는 것은 비용이 효율적이다
  • 거의 실시간 프레임으로 사용이 될정도로 좋기 때문에 학습된 RPN은 또한 region proposal 퀄리티와 전반적인 객체 인식 정확도가 높아진다
profile
안녕하세요. 기억보다 기록을 믿는 레나입니다!
post-custom-banner

0개의 댓글