RPN 기본용어 정리
Ground Truth Box(GT): 객체 탐지의 학습 데이터로 주어지는 정답 바운딩 박스 데이터셋에서 실제 객체의 위치와 크기를 나타낸다.
anchor: 후보 바운딩 박스로 RPN에서 객체가 존재할 가능성이 높은 영역을 탐지하는데 사용된다. 사전에 정의된 크기,비율,방향을 가진 고정된 바운딩 박스가 Anchor로 설정된다.
Faster R-CNN anchor:3개의 크기 [128×128,256×256,512×512] 3개의 비율 [1:1,1:2,2:1]총 9개의 anchor가 입력 특징 맵의 각 위치에 설정된다. IOU 기준으로 anchor를 Positive anchor와 Negative anchor로 분류 0.7:0.3 출력으로 객체가 존재할 확률과 Regression 값을 출력
VoxelNet anchor: 단일anchor를 사용하고 크기는 3D공간에서 정의되기때문에 [3.9,1.6,1.56] (길이,너비,높이) 크기로 정의됨 anchor의 방향은 0,90도 회전 방향만 고려함
Bird's Eye View (BEV): LiDAR 데이터를 위에서 내려다본 평면도 2D 위치 및 크기를 기준으로 IOU를 계산함
3D IOU를 계산하는것은 많은 연산을 필요로 하기때문에 BEV를 사용하여 연산을 줄이기 위해 사용됨
| 특징 | Faster R-CNN RPN | VoxelNet RPN |
| 입력 데이터 | 2D 이미지 | LiDAR 포인트 클라우드 데이터(x,y,z,l,w,h,세타) |
| Anchor 크기 | 2D 크기 및 비율 (9개) | 3D 크기 (1개) |
| Anchor 방향 | 없음 | 0,90 두 가지 방향 |
| Positive Anchor 기준 | IoU 0.70이상 | IoU 0.60 이상 (BEV 기준) |
| 출력 | 2D 바운딩 박스 | 3D 바운딩 박스 |
| 적용 대상 | 이미지 기반 객체 탐지 | LiDAR 기반 3D 객체 탐지 |
VoxelNet에서 단일 앵커를 사용하는 이유는 계산 비용을 줄이고 모델을 경량화 하는 목적과
3D 공간에서 LiDAR 포인트 클라우드에서는 대부분의 물체가 0도 90도에 가까운 방향성을 가져
단순 회전 각도로도 충분한 성능을 발휘한다고 설명됨 또한 학습 데이터가 부족하거나 특정
클래스에서 과적합이 발생할 가능성을 방지함 Voxel 단위로 데이터를 처리하므로 물체 크기와
방향이 Voxel에 의해 정규화 되기때문에 다수의 앵커가 필요하지 않음
Region Proposal Network(RPN)
이전 단계에서 Convolution layer의 output인 4D Tensor(64 x 2 x 400 x 352)를 3D Tensor로 Reshape하여 input으로 받는다.
128 x 400 x 352 로 4D Tensor를 3D Tensor로 변환한 이유는 RPN에서 2D Conv를 쓰기 때문이다.
64=Voxel 특징 차원
2: z축 방향(깊이)
400: y축 방향(높이)
352: x축 방향(너비)
Reshape--->(128,400,352)
RPN Architecture를 보면 3개의 Fully Convolutional Layers를 통과하여 다운샘플링,Conv2D X k ,업샘플링을 통해 고해상도 특징맵을 완성하는 것을 볼 수있다.
DownSampling : Conv2D(128,128,3,2,1)로 논문에 쓰였으며 stride를 2로 사용하여 해상도를 절반으로 줄인 것을 볼수있다.
DownSampling 을 사용하는 이유는 한 번의 합성곱 연산으로 더 넓은 공간 정보를 포함 할 수 있도록 수용 영역을 확장하고 해상도를 줄이면서 연산량이 줄어들고, 객체의 전반적인 구조를 더 잘 파악하고 Voxel단위의 세부 정보보다는 물체의 전체적인 형태를 학습하기 위해서 라고 논문에서는 설명하고 있다.
Conv2D(128,128,3,1,1) X k : stride=1을 사용함으로써 해상도를 유지하며 이전 연산에서 학습된 특징을 손실 없이 전달하며 Conv2D 연산을 k번 반복하여 세부적인 특징을 학습하고 정제하는 과정이다.
RPN Architecture Block 1
입력:128X400X352
첫 번째Conv2D: stride가2로 설정되어있는 것을 볼 수있다. 이 의미는 해상도를 절반으로 줄여서 128X 200 X 176 으로 만들어지게 하기위함이다. 이후에 Conv2D를 3번 반복하여 초기 특징 맵의 공간 정보를 학습하며, 세부정보를 유지하려는 목적을 알수있다.
RPN Architecture Block 2
입력:128 X 200 X 176(C x H'/2 X W'/2)
첫 번째 Conv2D:stride가 2로 설정되어있다 다운샘플링 과정을 거쳐 128 X 100 X 88로 크기가 변경되고 Conv2D를 5번 거치면서 더 깊은 레이어에서 고수준 특징을 학습한다는 것을 유추할 수 있다.
출력:128 X 100 X 88 (C x H'/4,W'/4)
RPN Architecture Block 3
입력: 128 X 100 X 88 (C x H'/4,W'/4)
첫 번째 Conv2D: stride=2 이므로 다운샘플링 과정을 거친다. 128 X 50 X 44 로 크기 변경 Conv2D를 5번 거쳐서 객체의 전체적인 구조를 학습하여 맥락 정보를 극대화
출력: 128 X 50 X 44
논문에서는 한 번의 합성곱 연산으로 더 넓은 공간 정보를 포함할 수 있도록 수용 영역을 확장한다고 설명하고 있다. 또한 Voxel 단위의 세부 정보보다는 물체의 전체적인 형태를 학습한다고 설명하고 있다.
이후 Block1,2,3의 출력 특징 맵은 다른 해상도를 가지는 것을 확인 할 수 있는데 해상도를 고정된 크기로 맞추기 위해 UpSampling 과정을 거친다
UpSampling: 각 블록의 출력 해상도를 고정된 크기로 맞춰 다른 블록의 출력과 결합할 수 있도록 준비하는 과정 논문에서는
H'/2 x W'/2--> 200 X 176으로 설정 다운샘플링 과정에서 손실된 세부 정보를 보완하고 출력 해상도를 동일하기 맞춰서 결합할 수있도록 준비하는 과정
Block3 UpSampling: 출력값(128 X 50 X 44)--->DEconv2D(256,256,4,4,0) H'/8 X W'/8 ---> 스프라이드4 커널4을 사용해 비율 4배 증가
Block2 UpSampling:출력값(128 X 100 X 88)---> DEconv2D(128,256,2,2,0) H'4/ X W'/4 ---> 스프라이드2 커널2 을 사용해 비율 2배 증가
Block1 UpSampling: 출력값(128 X 200 X176)---->DEconv2D(256,256,3,1,0) 이미 H'/2 X W'/2 이여서 스프라이드 커널1 커널사이즈 3을 사용함
채널을 128--->256으로 확장하는 이유: Block1은 세부 정보, Block3는 넓은 맥락 정보를 포함하여 이를 효과적으로 결합하기 위해 채널을 확장한다.
이후 Concat(Block1,Block2,Block3)-->768 X H'/2 X W'/2 하여서 고해상도 특징맵이 생성됨
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Score map: 각 위체에서 객체가 존재할 확률을 나타내는 지표 RPN이 Positive Anchor를 선택하고 객체 탐지 결과를 생성하는데 사용된다
입력: 고해상도 특징맵(768X200X176)
Conv2D연산(768,2,1,1,0): 고해상도 특징 맵에대해 Conv2D 연산을 진행후 Soft Max를 적용하여 확률로 변환하여 객체의 존재 확률과 미 존재 확률을 구한다.
Loss Function: 바운딩 박스를 조정하기 위한 7개의 회귀 목표(Regression Targets)를 정의하고 있다.
델타 x,y,z: 중심좌표의 차이
델타 l,w,h: 바운딩 박스의 크기(길이,너비,높이)차이
델타 세타: 회전 각도 차이
Lcls(Classification Loss): Positive Anchor와 Negative Anchor에 대해 객체 존재 여부를 학습
Pi^pos,Pi^neg: Softmax로 정규화된 Score Map 출력
Lreg(Regression Loss): Positive Anchor와 Ground Truth 간의 Residual Vector를 학습 Smooth L1 Loss를 사용하여 안정적인 학습을 지원한다.
Regression Map : 각 Anchor에 대해 x,y,z,l,w,h,세타 의 회귀 목표를 예측하는 역할이다. RPN의 최종 출력중 하나이다.
출력 크기:H'/W'X14(200X176X14)각 공간 위치에서 2개의 Anchor방향(0,90)에 대해 각각 7개의 회귀 목표값을 에측한다.
Conv2D크기가 14인 이유(7X(0,90)회전방향)
최종 출력: 200 X 176 X 14로 각 공간 위치에서 두 방향의 Anchor에 대한 회귀 값을 출력으로 가진다.
결합 과정
- Score Map에서 P_obj이 높은 Positive Anchor를 선택.
- Regression Map의 회귀 값을 적용하여 Anchor Box를 조정.
- 최종적으로 Positive Anchor를 기반으로 Prediction Box를 생성.