728x90
반응형
나의 정리
- Faster R-CNN은 region proposal을 gpu를 사용하여 진행하기 위해 RPN을 사용하였다.
RPN로 region proposal을 구하고 Fast R-CNN으로 detector를 진행해 두 개의 module로 한 개의 network를 만들었다. - RPN은 anchor box의 개념을 도입하여 러닝 타임을 줄이고 image, filter pyramid와 같은 성능을 냈다.
feature map에서 3x3 window sliding → 1x1 object score, bbox regression 각자 계산 - RPN은 객체의 존재 여부 분류, Fast R-CNN 은 배경을 포함한 classification 진행
- RPN과 Fast R-CNN은 같은 conv layer를 공유하는데 이는 학습 과정에서 처음엔 독립적으로 학습한 뒤 Fast R-CNN network로 RPN을 초기화하고 고유 RPN layer만 fine tuning 하고 동일한 conv layer로 Fast R-CNN의 고유 layer fine tuning을 진행한다.
결과적으로 같은 conv layer를 계속 공유하면서 학습을 진행하여 backpropagation, SGD를 이용해 학습이 가능하다.
Abstract
- Fast R-CNN 까지 region proposal을 Selective search을 통하여 구했는데 faster R-CNN에서는 Region Proposal Network(RPN)을 사용하여 한번에 진행한다.
- RPN은 전체 이미지의 Convolutional feature map을 detection network와 공유해 cost를 줄이고 region proposal을 가능하게 한다.
- RPN, Fast R-CNN은 서로 attention을 이용해 conv feature를 공유하며 single network로 합쳐진다.
Introduction
- Fast R-CNN도 region proposal을 selective search를 이용하여 진행하는데 이는 CPU에서 진행이 되어 2초정도 걸려 느리다.
EdgeBoxes도 정확도와 시간이 trade off 관계이고 이는 0.2초 정도 걸린다. - Region proposal을 CPU가 아닌 GPU로 계산하는 방법이 없을까?
cost-free에 근접하게 detection network에서 proposal을 진행하는 방법을 소개한다. (RPN) - Conv feature에 약간의 conv layer를 추가해 RPN을 구성해 region regression과 object score를 학습한다.
→ conv feature map을 region proposal에도 사용한다. (cost를 줄이는 방법) - RPN을 이용하여 다양한 크기와 가로세로 비율에 대해 region proposal이 가능하다.
- anchor boxes의 개념 도입으로 다양한 스케일 aspect ratio proposal 가능
- 속도 때문에 single-scale을 사용하여 train, test를 진행한다.
- 학습 시에 region proposal에 대한 fine tuning, object detection에 대한 fine tuning을 번갈아 가며 진행한다. 이 결과 accuracy, running time 둘 다 좋아졌다.
Related Work
- Object Proposals
- Selective search, sliding windows(edgeboxes) 등의 방법이 있다.
- Deep Networks for Object Detection
- R-CNN은 classifier 학습은 하지만 object bound를 prediction하지 않는다.
따라서 region proposal module의 성능에 종속될 수밖에 없다. - Overfeat에선 single object를 추정하기 위해 localization을 수행하기 위해 FC layer를 학습했다.
- Adaptively-sized pooling (SPP) → Fast R-CNN end-to-end detector training
- R-CNN은 classifier 학습은 하지만 object bound를 prediction하지 않는다.
Faster R-CNN
- 2개의 모듈이 합쳐진 1개의 network를 가진다.
- FCN : region을 제안하는 module
- Fast R-CNN : 1로 제안된 region으로 detection을 하는 module
- RPN module이 Fast R-CNN이 어디를 봐야할지 attention과 같은 개념으로 알려준다.
Region Proposal Networks
- input - any size image
output - object proposal + score
- 두 network가 공통된 conv layer를 공유한다.
- region proposal을 생성하기 위해 n*n window를 conv feature map위에 슬라이딩한다.
각 슬라이딩은 저차원의 feature로 매핑된다.
여기서 나온 feature는 2가지 FC layer (box regression layer, box classification layer)의 input으로 사용된다.
- n*n conv layer를 거치고 2가지 FC layer로 들어가기 전 각각의 1x1 conv를 통과한다.
(Fully Convolutional Network를 만들기 위해 사용한 이유와 같은 이유)
이러한 1x1 conv를 cls layer, reg layer라 한다.
- Anchors
- 각각의 window에서 여러개의 region proposal k개를 예측한다.
reg에선 1개당 4개의 극좌표가 output으로 나오고 cls에선 1개당 2개의 score가 나온다.
- 각 window마다 default 값으로 3개의 scale, 3개의 aspect ratio로 총 k=9의 anchor를 추출한다.
- Translation-Invariant Anchors
- Translation-Invariant 속성이 매우 중요한데, Image에서 object가 이동하면 proposal도 다른 위치에서 예측이 되어야 한다는 점인데 Faster R-CNN은 보장된다.
- MultiBox는 K-means를 사용해서 translation-Invariant가 보장되지 않는다.
- Model의 size도 줄일 수 있고 small dataset에서 overfitting의 위험을 줄여준다.
- Multi-Scale Anchors as Regression References
- Faster R-CNN과 같이 anchor pyramid를 사용하는 게 효율적이다.
- anchor를 사용하면 하나의 feature map과 3x3 window만을 가지고 multi scale and aspect ratio를 가지는 proposal을 만들 수 있다.
- 각각의 window에서 여러개의 region proposal k개를 예측한다.
- Loss function
- 각각의 anchor에 object가 맞는지 아닌지 binary label이 할당된다.
IoU가 가장 높거나 0.7 이상이면 positive label 할당 IoU가 0.3 이하이면 negative label 할당 - notation
i : mini-batch내의 anchor의 index
pi : i번째 anchor가 object일 확률
pi*: GT label (anchor가 positive면 1, negative면 0)
ti : 예측된 bbox의 좌표 xywh
ti* : positive anchor의 GT 좌표 값
Lcls : 물체가 있는지 없는지
log loss Lreg(ti, ti*) : R(ti - ti*)로 실제 ground truth와의 차이에 대한
smooth L1 loss (Fast R-CNN과 동일)
N에 의해서 둘 다 normalization 되고 lambda로 두 term 사이의 균형을 맞춰준다.
Ncls: mini-batch size (여기선 256)
Nreg: 앵커 개수 (WHk로 여기선 ~ 2400)
- 각각의 anchor에 object가 맞는지 아닌지 binary label이 할당된다.
x, y : cx, cy
wh: width, height
x: 예측된 box xa: anchor box x*: GT box
k개의 anchor들은 각각 single-scale + aspect ratio를 담당하고 있어 서로 가중치를 공유하지 않는다.
- Training RPNs
- RPN은 backpropagtion과 SGD로 end-to-end 학습이 가능하다.
- positive, negative를 1:1 비율로 sampling 해준다.
- 평균 0인 가우시안 분포로 가중치를 초기화시켜준다.
- LR : 0.001 (60k mini-batch동안) 다음 20k mini-batch에선 0.0001
- momentum : 0.9, weight decay : 0.0005
Sharing Features for RPN and Fast R-CNN
- RPN과 Fast R-CNN은 서로 다른 방법으로 독립적으로 학습한 뒤 conv layer를 공유한다.
Network 학습 방법 3가지- Alternating training
RPN 학습 → RPN으로 만든 proposal을 이용해 Fast R-CNN 학습 → Fast R-CNN으로 fine-tuning 된 network를 RPN 초기화에 사용
⇒ 이것을 반복한다. - Approximate joint training
RPN과 Fast R-CNN을 학습 동안 하나의 network로 합친다.
RPN loss와 Fast R-CNN loss가 둘 다 공유된 layer에 영향을 끼친다.
방법은 쉽지만 proposal box 좌표 값이 반영 안 된다. - Non-approximate joint training RPN의 결과 bbox가 input으로 사용된다.
Fast R-CNN의 pooling layer는 conv feature map과 예측된 bbox 좌표를 input으로 받기 때문에 역전파를 위해선 bbox 좌표의 미분 또한 필요하다.
RoI warping을 통해서 해결이 가능
- Alternating training
- 4-step Alternating Training
- 공유하는 conv layer를 학습시키기 위해 실용적인 4-step training 사용
- RPN을 학습한다. (pre-trained imagenet으로 초기화 후 fine tuning)
- 1의 RPN을 이용한 proposal로 detection net의 Fast R-CNN을 학습한다. (pre-trained imagenet으로 초기화)
여기 까진 서로 conv layer를 공유하지 않는다.
3. detector network를 RPN 초기화에 사용한다. 하지만 shared conv layer는 고정하고 RPN 고유 layer만 fine tuning 한다.
4. shared conv layer는 고정하고 R-CNN 고유 layer만 fine tuning 한다.- 결과적으로 두 network는 conv layer를 공유하게 되고 하나의 network를 형성한다.
Implementation Details
- 짧은 쪽이 600 pixel이 되게 single-scale로 진행
- multi-scale이 정확도는 좋았지만 느렸다.
- 1:1, 1:2, 2:1, 128, 256, 512로 진행했지만 이 값들이 중요하지는 않다. → 러닝 타임은 줄이고 image pyramid와 같은 효과를 얻었다. multi ratio, scale을 이용하여
- 이미지 영역을 벗어나는 anchor는 잘 처리해야 한다. 그렇지 못하면 수렴이 잘 안 될 수 있다. 논문에서는 벗어나면 그냥 무시해 loss의 영향을 주지 않았다.
- 몇몇의 RPN proposal은 다른 것과 많이 겹쳐 NMS를 cls score에 사용한다. 0.7로 고정 그 결과 정확도는 그대로, proposal의 개수만 줄어들었다.
Conclusion
- RPN을 이용해 효율적이고 정확한 region proposal을 생성할 수 있다.
- Conv feature를 detection, region proposal network가 공유하여 cost-free 하다.
- real-time에 가까운 object detection이 가능하다.
728x90
반응형
'Paper review > 2D Object detection' 카테고리의 다른 글
[논문 리뷰] (RetinaNet) Focal Loss for Dense Object Detection (0) | 2022.07.01 |
---|---|
[논문 리뷰] SSD: Single Shot MultiBox Detector (0) | 2022.06.30 |
[논문 리뷰](YOLO)You Only Look Once:Unified, Real-Time Object Detection (0) | 2022.06.28 |
[논문 리뷰] Fast R-CNN (4) | 2022.06.24 |
[논문 리뷰] R-CNN: Rich feature hierarchies for accurate object detection and semantic segmentation (2) | 2022.06.23 |