[분류 예측 스터디] Faster R-CNN - Towards Real-Time Object Detection with Region Proposal Networks
해당 논문에서는 RPN이라고 불리는 Region Proposal Networks를 제안한다. RPN은 어떠한 위치에 물체가 있을지 예측하는 Network이다. RPN을 통해 Fast R-CNN보다 더 빠른 Faster R-CNN 모델을 제안한다.
object detection (어떤 물체가 어디에 존재하는지 그리고 해당 물체가 어떤 물체인지 분류하는 두가지의 작업을 의미)은 CNN모델 이후, SPPnet과 Fast R-CNN이 등장하면서 성능 개선이 이루어짐. 하지만 여전히 Region proposal (물체가 어디있는지 추측하는 작업) 단계에서 상당한 시간이 소요되었는데, 해당 논문에서는 개별적인 Region Proposal Networks를 제안함으로써, 기존의 Fast R-CNN보다 더 빠른 성능속도를 보여주는 Faster R-CNN 모델을 제안한다. 기존의 Fast R-CNN의 Classifier는 유지하고 Region Proposal Network를 추가적으로 접목시킨 것이 Faster R-CNN이라고 할 수 있다. 이때, detection network와 RPN이 동일한 Convolutional Feature를 공유함으로써, 작업연산량 또한 줄였다고 할 수 있다.
참고1 ) Object Detection의 용어
Classification : 주어진 이미지 안의 객체 Object의 종류 (class, label이라고도 함) 가 무엇인지 구분하는 것
Localization : 단 하나의 Object 위치를 Bounding box로 지정하여 찾는 것
Object Detection : 여러 개의 Object들에 대한 위치를 Bounding box로 지정하여 찾는 것
Segmentation : Detection보다 더 발전된 형태로 Pixel 레벨의 Detection을 수행
여기서 Localization과 Detection은 해당 Object의 위치를 Bounding box regression (box의 좌표값 예측) 로 찾고, Bounding box 내의 오브젝트를 판별 (classification) 하는 두가지 문제를 수행한다.
참고2 )Object Detection의 역사
2012년 이전 : AlexNet이전에는 알고리즘 기반의 모델들, AlexNet 이후부터 딥러닝 기반 프레임워크를 가진 모델
One-stage detector : detection을 바로 수행 (maP 성능이 낮음)
Two-stage detector : Object가 있을만한 위치를 먼저 찾아낸 뒤, object detection을 수행 (Inference Speed가 낮아서 실시간 적용이 어려움)
1) 하나의 이미지가 주어졌을 때, 해당 이미지 내에서 물체가 있을 법한 위치를 찾아 나열(region proposal)
2) 각각의 위치에 대해 feature를 추출
FE를 바탕으로 클래스 분류(classification)와 물체의 정확한 위치에 대한 regression 수행 (regression : 이미지 내, 사물이 존재하는 bounding box의 좌표를 예측)
오늘의 논문 주제 : R-CNN 계열의 모델 들중 정점을 찍은 Faster R-CNN에 대한 리뷰
참고3 ) Region Proposal (영역추정) 방식
Object가 있을만한 후보 영역을 찾자
selective search는 빠른 detection과 높은 recall 예측 성능을 동시에 만족하는 알고리즘이다. 별도의 알고리즘이기 때문에 이후 살펴볼 R-CNN 계열의 모델에서 계산속도의 저하를 야기하는 원인이 된다. SS의 절차는 다음과 같다.
1. 입력 영상에 대해 segmentation을 실시해서 이를 기반으로 후보 영역을 찾기 위한 seed를 설정
2. 초기에 엄청나게 많은 후보들이 만들어진다.
3. 이를 적절하게 통합해 나가면,segmentation은 후보 영역의 개수가 줄어들고,과적으로 이를 바탕으로 box의 후보 개수도 줄어든다.
=> 최초의 Segmentation을 컬러, 무늬(Texture), 크기(size), 형태(shape)에 따라 유사한 픽셀(Region)을 계층적 그룹핑 방법으로 통합해나간다. 이를 통해 이미지 전체를 Convolution으로 검사하는 것이 아닌, 후보영역에 대해서만 검사가 시행되고, 최종적인 object detection 검출한다.
참고4 ) Sliding Window
Window를 왼쪽 상단에서 부터 오른쪽 하단으로 이동시키면서 object를 detect하는 방식
초기 R-CNN 모델은 이미지에 대해서 selective search를 통해, 약 2000개의 region proposal을 구한 뒤, 그것을 각각 CNN에 넣어서 classify를 수행한다. Fast R-CNN은 이미지에 대해서 feature map을 추출한 뒤, 단 한번만 Convolutional network에 넣도록 성능 개선시킨 모델. 하지만 Fast R-CNN은 region proposal을 CPU상에서 수행하기 때문에, CPU상에서 bottle neck (속도 저하)이 발생한다. 이러한 점을 해당 논문에서는 개선시킬 사항이라고 인식하고 연구를 진행한다.
해당 논문에서는 Region proposal을 GPU상에 올림으로써 성능을 개선시키는데, Region proposal을 수행하는 별도의 network를 모델의 상단에 두는 경우, 어떻게 convolutional feature를 공유할 수 있는지 (sharing computation) 에 대한 논의가 이루어진다. 결과적으로 RPN을 통해 Faster R-CNN은 성능의 정확도 뿐만 아니라 그 속도에서의 개선을 얻는다.
또한, 해당 논문의 RPN은 2가지 기능을 제공한다. 첫번째로 region bounds를 regression 하는 것, 그리고 objectness score를 산출하는 것이다. regression의 경우, 대략적으로 맞춘 물체가 있을법한 위치를 regression을 통해 조정해주고, objectness score은 해당 물체가 그 위치에 존재하는지에 대한 점수를 계산해주는 것을 의미한다.
그리고, RPN은 region proposal을 할 때, 다양한 크기와 비율의 박스를 통해 진행한다.
기존의 논문에서는 pyramids of images(Figure1 , a) 이나 pyramids of filters(Figure1, b) 방식을 사용하는데, 해당 논문에서는 다양한 크기와 비율의 'anchor box' 를 사용함으로써 속도상의 이점을 얻음. 같은 비율이라고 할지라도 다양한 크기의 필터를 사용한다.
(a) 다양한 스케일의 이미지를 생성하고 각 이미지에 대해 feature map 을 각각 적용시킴.
(b) 하나의 이미지에 대해서 다양한 크기의 feature map을 적용.
(c) 하나의 이미지에 대해서 다양한 비율과 다양한 크기의 feature map을 적용. (pyramids of anchor라고 할 수 있음)
이미지를 한번만 conv layer에 입력시켜 feature를 추출하고 sliding window를 활용하여 물체의 위치에 대한 정확한 regression을 얻을 수 있다.
object Proposal에 대한 방법론으로서 앞서 살펴보았던 selective search와 Edgebox등의 기법이 있다. 하지만, Faster R-CNN 이전에는 해당 방법을 external module로서 사용함으로써 계산 속도에 있어서의 저하를 야기했다고 할 수있다.
이미지 input에 대해서 conv layer를 통해 feature map을 추출한 뒤, 이러한 feature map을 RPN과 classifier와 동시에 공유한다. RPN은 어떠한 위치에 물체가 존재하는지에 대한 여부를 결정하고, 만약 어떠한 물체가 존재한다면 정확이 어떠한 Bounding box 내에 존재하는지 예측한다. RPN에서 예측한 결과는 classifier로 들어가서 각각의 위치에 존재하는 물체가 어떠한 물체인지 맞출 수 있도록 한다. 즉, 기존의 Fast R-CNN을 따라가면서 추가적으로 RPN을 도입한 것이라고 할 수 있다.
두가지 모듈로 구성된다.
1 : RPN (Region Proposal Network)
2 : Fast R-CNN detector
두가지 모듈을 합쳐서 하나의 네트워크로 구성한 것이 Faster R-CNN이다.
A Region Proposal Network (RPN) takes an image (of any size) as input and outputs a set of rectangular object proposals, each with an objectness score.
RPN은 하나의 이미지를 Input으로 받아서, 사각형 형태의 bounding box와 해당 bounding box에 사물이 있는지 없는지에 대한 점수 objectness score를 output으로서 출력한다.
we assume that both nets share a common set of convolutional layers.
이때, Fast R-CNN의 Detector와 Feature map을 공유하게 되는데, conv layer는 ZF net 혹은 VGG net등 다양한 back-bone network를 사용할 수 있다.
This feature is fed into two sibling fully- connected layers—a box-regression layer (reg) and a box-classification layer (cls).
backbone에서 FE (feature extraction)이 발생하고 Neck에서 Classification과 bbox regression을 수행한다.
일반적인 object detection 모델
그 과정에 대해서 자세히 살펴보면, 하나의 이미지를 convolutional layer에 넣어서 conv feature map을 추출하고, conv featuer map에 대해서 다양한 크기와 비율을 가진 anchor box를 이용해 각 위치에 대해서 prediction을 진행한다. 이러한 anchor box를 왼쪽 위부터 sliding하면서 256차원으로 mapping을 수행한다. 이후, 이러한 feature를 통해 cls layer와 reg layer에 통과함으로써 물체의 존재여부를 판단하고, 존재한다면 어느 위치에 존재하는지 (너비,높이,x,y좌표 값을 산출) 계산한다.
(k=9, we use 3 scales with box areas of 128^2, 256^2, and 512^2 pixels, and 3 aspect ratios of 1:1, 1:2, and 2:1)
기본적으로 anchor box의 크기는 특정한 비율로 고정되어있다고 할지라도, regression을 통해 특정 사물이 위치하고 있는 영역을 bounding box의 형태로 예측하기 때문에 다음 아래의 그림과 같이 anchor box의 비율을 따르지 않는다는 것을 확인할 수 있다.
At each sliding-window location, we simultaneously predict multiple region proposals, where the number of maximum possible proposals for each location is denoted as k. So the reg layer has 4k outputs encoding the coordinates of k boxes, and the cls layer outputs 2k scores that estimate probability of object or not object for each proposal.
각각의 sliding-window 위치에 대해서 다양한 region proposal을 예측한다. 즉, 각각의 위치마다 총 k개의 anchor box를 사용하는 것. 각각의 위치마다 있음,없음의 2개의 softmax 형태의 score를 산출한다.
For training RPNs, we assign a binary class label (of being an object or not) to each anchor. We as- sign a positive label to two kinds of anchors: (i) the anchor/anchors with the highest Intersection-over- Union (IoU) overlap with a ground-truth box, or (ii) an anchor that has an IoU overlap higher than 0.7 with any ground-truth box.
앞서 살펴보았듯이 RPN은 binary class label (물체가 있음, 없음)을 출력한다. 이때, 해당 anchor box가 positive label(물체가 있음)을 부여받게 되는 경우는 두가지가 있다.
첫번째로, IoU (Intersection of Union) 가 가장 높은 anchor box가 positive label을 부여받는다.
두번째로, IoU (Intersection of Union) 가 0.7 이상일 때, positive label을 부여받는다.
주의할 점 :
Note that a single ground-truth box may assign positive labels to multiple anchors.
또한, RPN은 서로 대부분의 영역이 겹치는 proposal을 출력할 수 있는데, 이를 해결하기 위해 NMS 기법을 사용했다고 한다.
We assign a negative label to a non-positive anchor if its IoU ratio is lower than 0.3 for all ground-truth boxes. Anchors that are neither positive nor negative do not contribute to the training objective.
IoU (Intersection of Union) 가 0.3 이하 일 때는 negative label을 부여했다고 한다.
참고5 ) NMS (Non Max Suppression)
Detected된 Object의 Bounding box 중에 비슷한 위치에 있는 Box를 제거하고 가장 적합한 box를 선택하는 기법
참고6 ) IoU (Intersection of Union) : Object Detection의 성능평가 Metric
모델이 예측한 결과와 실측(Ground-Truth) Box가 얼마나 정확하게 겹치는가를 나타내는 지표
IoU = 개별 Box가 서로 겹치는 영역 / 전체 Box의 합집합 영역
Loss function
우리의 모델은 기본적으로 classification network과 regression network 두개가 있는 것을 살펴보았는데, 먼저 L : cls를 살펴보자. 우선, pi*는 ground truth를 의미한다. 해당 Anchor가 positive 일때는 1을 부여하고, negative일 때는 0을 부여한다. 아래쪽의 L : reg는 해당 anchor가 negative일 때는 무시한다. ti*는 bounding box의 위치 정보(tx,ty)와 너비 및 높이 (tw,th)에 대한 정보 (4가지 정보를 포함한 튜플 데이터) 를 포함한다. classification과 regression 2개의 Loss function에 대해서 각각 가중치를 곱해 최종적인 loss function을 산출한다.
이렇게 산출된 Loss function은 모든 anchor에 대해서 적용시키지 않고, 랜덤하게 256개의 anchor만 선택하여 학습 시킨다고 한다. 또한 positive anchor와 negative anchor가 약 1 : 1 의 비율을 가지도록 설정하였다고 한다.
어떻게 RPN과 Fast R-CNN의 detector network가 Feature map을 공유하는지에 대한 방법론을 서술하고 있음.
해당 논문에서 채택한 방법은 "Alternating training" 방법.
말 그대로 번갈아가며 학습하는 방법론
4-step Alternating Training
1) RPN만 학습 진행 + End to End 방식으로 전체 네트워크에 대해서 학습이 되도록 함. (Detection network와 conv layer 공유 x)
2) RPN에서 만들어낸 region proposal을 이용해서 Fast R-CNN 학습 (RPN과 conv layer 공유 x)
3) conv layers를 동결시켜놓고(학습 가중치 frozen) RPN에 포함된 conv layer만 Fine-tuning (앞단의 conv layer 공유 o)
4) conv layers를 동결시켜놓고(학습 가중치 frozen) Fast R-CNN에 포함된 conv layer만 Fine-tuning (앞단의 conv layer 공유 o)
We train and test both region proposal and object detection networks on images of a single scale.
For anchors, we use 3 scales with box areas of 1282, 2562, and 5122 pixels, and 3 aspect ratios of 1:1, 1:2, and 2:1.
The anchor boxes that cross image boundaries need to be handled with care. During training, we ignore all cross-boundary anchors so they do not contribute to the loss. For a typical 1000 × 600 image, there will be roughly 20000 (≈ 60 × 40 × 9) anchors in total.
이미지의 경계를 포함하는 anchor box는 조심스럽게 처리할 필요성 존재. cross boundary anchor는 loss에 기여할 수 없도록 무시하는 방법을 택함. 약 20,000 개 -> 6,000개로 줄임.
With the cross-boundary anchors ignored, there are about 6000 anchors per image for training.
Some RPN proposals highly overlap with each other. To reduce redundancy, we adopt non-maximum suppression (NMS) on the proposal regions based on their cls scores.
We fix the IoU threshold for NMS at 0.7, which leaves us about 2000 proposal regions per image.
약 6,000 개 -> 2,000개로 줄임.
Backbone network로서 ZF net을 사용하고, RPN을 통한 Conv layer를 공유하는 방법론을 사용하였을 때, mAP가 크게 개선되었음을 확인할 수 있다. (mAP : mean average precision, 실제 Object가 detected된 재현율(recall)의 변화에 따른 정밀도(Precision)의 값을 평균한 성능 수치)
https://bigdaheta.tistory.com/59
[딥러닝] Object detection(Region proposal / Sliding window / Selective search)
1. Object detection 이미지 내에서 사물을 인식하는 방법에는 다양한 유형이 존재하는데, 그중 Object detection에 대해 정리하고자 한다. Object detection은 이미지내에 불특정 다수의 object가 있을때,..
bigdaheta.tistory.com
https://www.youtube.com/watch?v=46SjJbUcO-c&list=PLRx0vPvlEmdADpce8aoBhNnDaaHQN1Typ&index=25
인프런 : [개정판] 딥러닝 컴퓨터 비전 완벽 가이드
[분류 예측 스터디] 핸즈온 9장 비지도 학습 (0) | 2022.05.29 |
---|---|
[분류/예측 스터디] ImageNet Classification with Deep ConvolutionalNeural Networks (0) | 2022.05.29 |
[분류 예측 스터디] 핸즈온 8장 차원축소 (0) | 2022.05.12 |
[분류/예측 스터디] BERT (0) | 2022.05.12 |
[분류 예측 스터디] A Tutorial on Principal Component Analysis (0) | 2022.05.11 |
댓글 영역