[논문 리뷰] Faster R-CNN
논문 : https://arxiv.org/pdf/1506.01497
이번 포스팅에서는 Faster R-CNN의 논문을 리뷰하겠습니다.
해당 포스팅을 참조했습니다.
https://herbwood.tistory.com/10
Faster R-CNN 논문(Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks) 리뷰
이번 포스팅에서는 Faster R-CNN 논문(Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks)을 읽고 정리해봤습니다. 기존 Fast R-CNN 모델은 여전히 Selective search 알고리즘을 통해 region proposals
herbwood.tistory.com
3) Faster R-CNN
## 네트워크 구조 Faster R-CNN의 핵심 아이디어는 Region Proposal Network입니다. 기존 Fast R-CNN의 구조를 그대로 가져오면서 Selecti…
wikidocs.net
https://oi.readthedocs.io/en/latest/computer_vision/object_detection/faster_r-cnn.html
Faster R-CNN — Organize everything I know documentation
Faster R-CNN의 가장 중요한 아이디어는 RPN (Region Proposal Network)이다. RPN은 Region proposal을 만드는 Network로 마치 Attention처럼 Faster R-CNN이 어디에 주목해야 하는지 알려주는 역할을 한다. RPN의 목적은 생
oi.readthedocs.io
Faster R-CNN
Fast R-CNN 에서는 Selective search 알고리즘으로 발생한 네트워크 병목현상이 존재하고
해당 부분은 성능 저하에 대한 원인이 되었습니다.
Faster R-CNN에서는 해당 문제를 Region Proposal Network(RPN)으로 해결하였습니다.
RPN은 region proposals를 정교하게 추출하기 위해서
크기와 종횡비(가로세로비)를 가지는 Anchor box 개념을 도입합니다.
간략하게 Faster R-CNN의 아키텍처를 살펴보겠습니다.
1. 입력 이미지를 pre-trained 된 CNN를 통과해 feature maps를 추출합니다.
2. feature maps는 RPN에 전달되고 적절한 region proposals를 얻습니다.
3. region proposals와 feature map를 ROI Pooling을 수행해 고정된 크기의 feature map을 얻습니다.
4. Fast R-CNN 모델에 고정된 크기의 feature maps를 입력하고 Classificaion, Bounding box regression을 수행합니다.
1. Anchor box
Faster R-CNN에서의 핵심 역할을 하는 아이디어입니다.
논문에서는 3가지의 scale(128, 256, 512)과 aspect ratio(1:1, 1:2, 2:1)을 가지는
총9개의 서로 다른 anchor box를 사전에 정의합니다.
scale은 anchorbox의 너비, 높이입니다.
aspect ratio는 종횡비 (width, height의 비율)을 말합니다.
예를들어 위 수식은 aspect ratio를 이용한 w,h을 구하는 식을 정의합니다.
aspect ratio가 1:2(높이 1, 너비 2의 비율)라면
해당 수식으로 w, h를 구할 수 있습니다.
Anchor box가 생성되는 과정에 대한 설명 전에 grid cell과 Dense sampling, sub-sampling ratio에 대한 설명을 하겠습니다.
Faster R-CNN에서는 원본이미지를 일정 간격의 grid로 나눠 grid cell을 만들어 줍니다.
위 사진을 보면 8x8개의 grid cell을 생성해줬습니다.
원본 이미지가 800x800이고 sub-samplig ratio가 1/100라면 CNN모델을 거친
feature map 하나의 크기는 8x8이 됩니다. (800 * 1/100 x 800 * 1/100)
이때 feature map의 grid cell은 원본 이미지의 100x100영역의 정보를 함축하고 있습니다.
anchor box는 원본 이미지의 각 grid cell 중심을 기준으로 생성합니다.
만약 위 사진처럼 (800,600)의 원본 이미지에 sub-samplig ratio가 1/ 16으로 주어졌다면
grid cell은 800/16 * 600/16 = 1900개가 생성됩니다.
이 grid cell의 중심에 각 anchor box가 9개씩 생성되므로
원본이미지에서의 생성되는 총 anchor box의 개수는 1900 *9 = 17100개가 됩니다.
2. RPN(Region Proposal Network)
RPN은 원본 이미지에서 region proposals을 추출합니다.
먼저 전체적인 네트워크를 구체적으로 살펴보자면
1. 원본 이미지를 pre-trained된 VGG-16 모델에 입력해서 feature map를 얻습니다.
( 예시- 원본이미지의 크기는 800x800x3이며, sub-sampleing ratio가 1/100 이고 channel 수가 512라면
CNN을 거친 후 8x8x512의 feature maps을 얻습니다. )
2. 위에서 얻은 feature map에 대해서 3x3 conv연산을 적용하고 각 연산에서
feature map의 크기가 유지되도록 padding을 적용합니다.
( 예시- padding이 적용되었고 channel수는 512로 동일하므로 8x8x512 feature map이 출력됩니다.)
3. class score를 구하는 용도의 feature map을 생성하기 위해 1x1 conv연산을 적용합니다.
여기서 말하는 class score는 해당 class가 어떤건지를 구하는게 아닌
후보 영역에 객체가 포함되는지의 여부만 분류합니다.
때문에 channel 수는 2 x 9 (객체가 포함됬는지 여부 개수 , anchor box 개수) 입니다.
( 예시- 8x8x512 크기의 feature map은 1x1 conv를 통과하며 8x8x2x9 로 출력됩니다.)
4. bounding box regressor를 구하는 용도의 feature map을 생성하기 위해 마찬가지로 1x1 conv연산을 합니다.
이때는 channel수가 4x9 (bounding box정보(x,y,w,h) , anchorbox 개수) 입니다.
( 예시- 8x8x512 크기의 feature map은 1x1 conv를 통과해서 8x8x4x9로 출력됩니다 )
+) 1x1 conv연산을 하는 이유는
3가지로 나타낼 수 있습니다
1. channel 수 조절 가능
2. 연산량 감소
3. 비선형성 증가
여기서 1x1conv를 사용하며 연산량을 감소시키며, 비선형성을 증가시키기 위해 activation 함수를 사용할 수 있으며,
가장 중요한 channel 수 조절이 가능합니다.
최종적으로는 RPN의 출력결과는
객체가 있는지 없는지를 판단하는 feature map과
bounding box regressor의 입력에 들어갈 feature map으로 생성된 것을 확인할 수 있습니다.
이후
Anchor box들과 RPN에서 반환한 class socre, bounding box regressor를 사용해서
region proposals를 추출하는 작업을 수행합니다.
수행된 후 Anchor 정보들을 NMS(Non Maximum Suppressor)를 적용해서 부적절한 객체를 제거하고
Fast R-CNN 모델로 전달합니다,
2. Multi -task loss
loss 입니다. RPN의 Classificaion과 Bounding box regression을 수행하는데 사용되는 loss입니다.
두 가지의 작업을 하나의 로스로 수행하므로 Multi-task loss를 사용합니다
i: mini-batch로 나뉜 anchor의 index
pi : anchor i에 객체가 포함되어 있을 확률
pi* : anchor의 객체가 있는경우 1, background인 경우 0 을 나타냄
ti : 예측 bounding box(x,y,w,h) 정보
ti*: ground truth(x,y,w,h) 정보
Lcls : classification loss(Log Loss(Binary Cross-Entropy)사용 )
Lreg: regression loss (smooth L1 Loss사용)
Ncls : mini-batch 크기 (논문에서는 256)
Nreg : anchor 위치정보 개수
: classification과 regression의 벨런스를 맞춰주기 위한 parameter(default = 10)
즉, mini batch마다 수행되는 객체가 포함된 확률과 bounding box가 얼마나 일치하는지에 대한 확률을 더해주는
loss라고 생각하면 될 것 같습니다.
3. 4-Step Alternative training
논문에서는 Faster R-CNN을 학습시키기 위해 RPN과 Fast-R-CNN을 번갈아 학습시키는
Alternating Traning 방법을 사용합니다.
해당 방법은 총 4가지 Step으로 진행됩니다.
1. Step-1 : pre-trained된 CNN에서 추출된 feature maps로 RPN을 진행.
2. Step-2 : 위 Step-1에서 얻어진 RPN으로 Fast R-CNN을 학습시킴.
이때 Step-1 의 pre-trained된 CNN도 학습됨.
3. Step-3 : Step-2에서 학습된 CNN은 학습시키지 않고 RPN만 fine tuning 시킴.
4. Step-4: Fast R-CNN 부분을 fine tuning시킴.
위의 도식화로 Step을 더 간결하게 확인할 수 있습니다.
각 Step 마다의 변경된 네트워크는 주황색으로 표현됩니다.
결론
Faster R-CNN은
Selective Search를 사용해서 계산한 Region Proposal단계를 Neural Network안으로 끌어와
진정한 end-to-end object detection 모델을 제시하였습니다.
해당 모델은 해당 아키텍쳐를 적용하면서
모든 단계를 다 합쳐서 5fps라는 빠른 속도,
Pascal VOC 데이터셋 기준
mAP 78.8%라는 정확도를 낼 수 있게 됩니다.