일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- arm칩에안드로이드
- CS231ntwolayerneuralnet
- MIT
- adversarialattackonmonoculardepthestimation
- CS231nAssignments
- 백준
- ios원스토어
- 맥북원스토어
- 아이폰원스토어
- Gilbert Strang
- MacOS
- BOJ
- CS231nSVM
- pycharmerror
- Linear algebra
- RegionProposalNetworks
- monoculardepthestimation
- 선대
- gpumemory
- BAEKJOON
- 선형대수학
- CNN구조정리
- 백준알고리즘
- CS231n
- professor strang
- Algorithm
- CS231nAssignment1
- CNNarchitecture
- 맥실리콘
- ㅐㅕ세ㅕㅅ
- Today
- Total
개발로 하는 개발
Faster R-CNN: Towards Real-TIme Object Detection with Region Proposal Network 본문
Faster R-CNN: Towards Real-TIme Object Detection with Region Proposal Network
jiwon152 2024. 3. 4. 16:12Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Network 을 읽고 정리한 내용입니다.
- Introduction
기존 object detection methods :
- Selective Search (2s/image) : pixel 기준의 유사점 찾기
1. Image segmentation -> initial regions
2. Calculate similarity between neighbouring region pairs
3. Get highest similarity regions and merge
4. Recalculate similarity and add it to the set
5. Iterate 2-4
- EdgeBoxes (0.2s/image) : Edge를 사용한다는 차별점
1. Compute Edge detection
2. compute affinity based on angles, mean positions
3. use IoU to calculate score and find intersecting edge groups
Fast R-CNN (Fast R-CNN)
기존의
1) RoI (Region of Interest) 마다 CNN연산을 함으로써 속도저하
2) multi-stage pipelines으로써 모델을 한번에 학습시키지 못함
의 한계점들을
1) RoI pooling
2) CNN 특징 추출부터 classification, bounding box regression까지 하나의 모델에서 학습
을 통해 극복했다.
하지만 여전히
Real-Time object detection을 하기에는 시간이 너무 오래 걸림
why? region proposal이 CPU에서 이루어짐
그럼 GPU reimplementation을 하면 되지 않나? -> down-stream detection network가 무시되어 computation 공유가 어렵다
∴ Fast R-CNN에 RPN(Region Proposal Network)를 추가해서 Single, Unified Network인 Faster R-CNN을 구현하자!
이 제안이 나오게 된 배경 :
- Convolutional feature maps used by region-based detectors can also be used for generation region proposals
- Share test-time convolution -> marginal cost 감소(10ms per image)
Region Proposal Networks (RPN)
“anchor” boxes : reference boxes
sliding window의 중앙을 기준으로 center되어 있으며, 3 scale, 3 aspect ratio로 실험되었다. (k = 9 in this paper)
따라서 anchor k개일 때 $W\times H$ 크기의 image는 anchor가 $WHk$개이다.
cls layer는 classification score를 계산해 object/non-object일 확률을 2k개의 score로 output한다.
reg layer는 각 box별로 직사각형의 좌표 4개가 return되므로 4k개의 coordinates가 output 된다.
- references at multiple scales and aspect ratios (1:1, 2:1, 1:2, $128^2, 256^2, 512^2$ in experiments)
1. Translation Invariace guaranteed
- 같은 object가 다른 곳으로 이동(translate)된 경우 위치만 translate된 proposal을 한다.
- translation invariant해서 model-size도 감소하게 된다.
-> parameter 감소는 PASCAL VOC같은 small dataset에 overfitting할 확률이 줄어든다는 장점도 있다.
2. multi-scale anchors as regression references -> pyramid of “anchors”
- 기존의 방식은 image 전체를 scale하거나, 아니면 filter를 scale, size별로 정해서 계산하는 방법이였다.
- image와 feature map전체를 scale하는 방법은 time-consuming하다.
- pyramid of anchors를 사용하는 방법은 single-size image와 feature map을 사용하고, filter(sliding window)도 single size를 사용한다. -> more cost-efficient
- Fast R-CNN detector에서 계산한 single-scale image에 대한 convolutional feature를 추가적인 cost 없이 그대로 사용한다.
Loss Function
anchor class label = if (i or ii) 1 or 0
i. Anchor(s) with the highest IoU overlap with ground-truth box
ii. IoU overlap higher than 0.7 with any ground-truth box
if IoU ratio lower than 0.3 for all ground-truth boxes, assign negative label to non-positive anchor
$ L({p_{i}}, {t_{i}}) = \frac{1}{N_{cls}}\sum_{i}L_{cls}(p_{i}, p^*_{i}) + \lambda\frac{1}{N_{reg}}\sum_{i}p^*_{i}L_{cls}(t_{i}, t^*_{i})$
$i$ : index of an anchor in a mini-batch
$p_{i}$ : predicted probability of anchor $i$ being an object
$p^*_{i}$ : ground-truth label, 1 if the anchor label is positive, and 0 if the anchor is negative
$t_{i}$ : 4 coordinates of the predicted bounding box parameterized to an vector
$t^*_{i}$ : 4 coordinates of the ground-truth box associated with a positive anchor
$L_{cls}$ : log loss over two classes (object vs non-object)
$L_{reg}(t_{i}, t^*_{i}) = R(t_{i} - t^*_{i})$ where R is the robust loss function(smooth $L_{1}$)
$N_{cls}, N_{reg}, \lambda$는 각각 cls, reg normalization과 cls term과 reg term사이의 weight이다.
output의 경우 cls layer는 ${p_{i}}$, reg layer는 ${t_{i}}$로 각각 이루어진다.
Training RPN : 4 step alternate training
1. RPN training(SGD, backpropagation) for region proposal task
2. Fast R-CNN training using proposals from 1
3. detector network로 RPN initialize, RPN에 unique한 layer만 fine-tuning
4. Fast R-CNN에 unique한 layer fine-tuning
-> 여러번 반복할 수 있으나, 유의미한 차이는 없다고 한다.
share 안 하는 경우 2번째에서 멈추면 3번째에서 detector-tuned features 를 사용해서 RPN을 fine-tuning 하는 과정이 빠져서 정확도에 차이가 난다.
그 아래에서는 training 과정에서 RPN의 influence를 제거한 실험으로, SS proposals + ZF net을 이용해서 training 하고 test 때는 SS대신 RPN을 넣는다. 56.8을 baseline으로 해서 확인했을 때, NMS는 mAP에 악영향을 미치지 않고 false alarm을 감소시키는 효과가 보인다.
- cls layer output을 turn off하고 proposal을 randomly N개 sample 한 경우
: N이 충분히 크면 상관없지만 작으면 accuracy of the highest ranked proposals를 계산하는데 문제가 생길 수 있다.
- reg layer output turn off한 경우
: proposals = anchor boxes로 두게 된다. 이 경우 regressed box bounds가 나오지 않으므로 mAP가 drop to 52.1한다.
'Study' 카테고리의 다른 글
Adversarial Attack 논문 정리 2 - Theoretically Principled Trade-off between Robustness and Accuracy (0) | 2024.03.12 |
---|---|
Adversarial Attack 논문 정리 및 리뷰 1 (0) | 2024.03.08 |
[Linear Algebra] 23 - 28 필기한 내용 (0) | 2024.02.27 |
[Linear Algebra] 12 - 22 필기한 내용 (0) | 2024.02.27 |
[Linear Algebra] 02 - 11 필기한 내용 (0) | 2024.02.27 |