RPN이란
이미지 상의 수많은 anchor boxes에 대해서 lightweight binary classifier를 실행하고
object / no-object score를 산출한다
높은 objectness score를 가진 (positive) anchors는
두 번째 단계(Proposal Classification)을 거쳐서 분류된다
종종 positive anchor는 물체를 완벽히 커버하진 못 한다
그래서 RPN는 회귀를 통해 정제한다
위치와 크기에 대한 delta값이 이와 관련되었다
이를 통해 물체에 정확한 경계를 치기 위해
anchor를 이동하고 그 크기를 조정할 수 있게 되었다
+) Faster R-CNN 안에 사용되었음
Anchor란?
파란색은 ground truth (실제 사진에 그려진 bounding box)
빨간색은 anchor
anchor와 ground truth가 겹치는 범위가 일정 범위를 넘겨야
object로 인식
아래 예시에서 anchor는 바로
40x60 = 2400개의 sliding window의 location
(IoU = Intersection over Union)
object 존재 여부는 binary classifier로.
bounding box에 대해서
(x,y)는 box의 중심점 좌표, width와 height는 각각 가로와 세로 길이
Anchor의 종류
왼쪽 상단을 보시다시피 다양한 크기와 모양이 있음
(Faster R-CNN은 9개의 anchor box를 사용) => (40x60x9 = 21,600 anchors)
여기서 튀어나가는 anchor를 무시한다면 대략적으로 6000개 제외
그 이후에 NMS (Non-Max Suppresiion)을 적용하면 2000개 제외
RPN Loss Function
log 안의 값이 커질 수록 결과적으로 작아지는데
그럴 수록 object 임이 분명해진다
predicted box와 ground truth box 간 사이 오차를 줄이는 게 목표
RPN Target
== RPN에서의 training values.
target을 생성하기 위해, 서로 다른 scale로 커버하는 anchor들을 전체 이미지에 적용한다
(anchor box들은, 서로 다른 class를 분류해낼 수 있는 합리적은 가로/세로 비율을, 데이터를 탐색하여 선택된다)
(예로, 선택된 5개의 anchor box들을 통해 80개의 서로 다른 물체로 구분할 수 있게 됐다라든가)
이후에는 ground truth object를 가진 anchor들의 IoU를 계산한다
Positive anchor는 IoU >=0.7.
negative anchor는 어떤 물체도 커버하지 못했음을 의미하며 IoU < 0.3이다
0.3~0.7 사이의 anchor는 중립으로 고려되거나 훈련 시 제외된다
+) Non-Max suppression
box가 너무 많이 생겼을 때
불필요한 상자를 걷어내기 위해 사용
(같은 대상에 여러 개의 box가 겹쳐져 있을 때 하나 선택하기)
논문 : https://arxiv.org/pdf/1506.01497.pdf
사진 출처 : https://www.youtube.com/watch?v=X3IlbjQs190
'Machine Learning > 논문\코드 정리' 카테고리의 다른 글
Fast R-CNN (0) | 2022.01.21 |
---|---|
Numpy(matrix 생성) & Pandas(dataframe 생성) (0) | 2021.11.17 |
[Weights&Biases] how to integrate Weights & Biases with Keras (0) | 2021.11.16 |
[논문][Activation] Mish Activation Function (0) | 2021.11.07 |
[TF] Resnet152V2로 토마토 병해충 이미지 분류 (0) | 2021.10.07 |