작성자: 15기 박지우
object detection은 더 많은 challenging task -> multi stage pipelines 모델들이 많다 (느리고 inelegant)
detection은 물체의 정확한 localization / 물체 지역에 대한 수많은 후보지를 처리해야하고 후보지들은 rough한 localization을 제공해서 더 정확한 것을 도달하기 위해 처리가 필요하다
R-CNN(Region-based Convolutional Network method)
깊은 ConvNet을 이용하여 물체의 proposal를 분류하여 object detection을 성공한 모델
selective search(region proposal) - region proposal 후보지들을 뽑아서 모두 CNN 모델에 집어 넣는다
conv fine tuning - SVM classification - Bounding_box regression
특징
1> multi-stage pipeline
first fine-tunes ConvNet (log loss)이용하여
SVMs ConvNet 피처들에 fit 시킨다 -> SVMs는 object detector의 역할을 한다
bounding -box regressors 학습 시킨다
2> training is expensive in space and time
SVM bounding box regressor 훈련하는 데 있어 features들은 각각 이미지마다 물체 후보군들로부터 뽑히는 데 이것을 처리하는 것이 매우 시간이 오래 걸린다 + test 하는데 있어도 각각의 이미지마다 피처를 뽑아야 하기 때문에 시간이 걸린다.
3> 피처를 뽑는데 AlexNet을 사용하는 데 후보지 bounding box가 227*227 warping되어 정보의 손실이 생긴다
SPPnet은 전체 input 이미지의 CNN 작업을 하고 feature map을 만든다. 그리고 각각 물체 후보군을 feature map에서 region proposal 방식으로 똑같이 뽑아 boudning box 후보지(RoI)를 선별한다. 여기에서 Spatial Pyramid Pooling layer(SPP) layer은 max-pooling을 사용하여 작은 spatial bin을 얻는다. 이를 fc layer에 전달하는 과정이다
-> 훈련시간을 매우 단축시켰다 (피처 뽑는 것에 있어서 훨씬 빠르게 만들었기 때문)
하지만 단점은 여전히 존재하였다
- multi-stage pipeline (extract feature / fine-tunes / training SVMs / fitting bounding box - regressors
- spatial pyramid pooling 전에 있는 convolutional 층에서는 fine tuning정보가 업데이트가 되지 않는 단점도 있다
Fast R- CNN 구조
전체 image와 물체의 후보지 set을 input으로 받아들인다
먼저 selective search로 RoI 영역을 구합니다
그리고 동일하게 이미지 자체를 convolution layer를 통과시키고 feature map을 뽑습니다
이 feature map에 RoI 영역을 적용시켜서 RoI pooling 을 진행하여 fixed length feature vector
feature vector들은 fc layer으로 output layer로 전달
output layer들은 1) softmax probability 측정치(K object classes)
2) four real-valued numbers for each of the K object classes -> bounding box positions (K claases중 하나)
# RoI pooling layer의 역할
관심이 있는 feature들을 작은 small feature map으로 만든다 (H, W ) -> hyper parameter
윈도우의 역할이라고 생각하면 된다
max pooling 작업을 하면서 각각의 feature map을 만드는 것
selective search를 통해 구해진 RoI 영역은 각자 다른 크기를 가지고 있다 그래서 이 크기를 맞춰주기 위해서 RoI pooling을 수행한다 - 크기가 다른 feature map의 region을 stride에 따라 max pooling 진행하는 것
# back-propagation
이전 SPPnet의 단점은 weight를 update하지 못하는 단점을 가지고 있었다
-> 다른 이미지가 왔을 때 훈련하는데 있어서 비효율적이었다
그래서 훈련하는 동안 feature sharing을 하여 효율적인 훈련을 하고자 한 것이다
Fast R-CNN은 SGD으로 된 미니배치들은 계층적으로 sampling합니다
같은 이미지에서 온 RoI들은 계산을 공유하는 방식으로 효율적으로 훈련을 시킬 수 있다.
하지만 같은 이미지에서 온 RoI는 correlated하다는 단점이 있을 수 있지만 이는 실제에서는 일어나지 않았다.
+ fine tuning (classifier and bounding box regressors 한번에 최적화를 시행한다)
# loss
두 가지의 output layer가 존재
# mini batch
각각의 SGD 미니 배치는 2개의 이미지를 추출합니다. R=128라 할 때 64개의 Roi를 샘플링하게 된다 - 이미지마다
물체 후보지의 25% roi를 뽑는데 이것들은 적어도 실제 bounding box와 0.5 이상 겹치는 것이 있는 true인 영역이고 0.1 05 사이는 배경이라고 합니다 이것들은 배경의 예시들로 되고 u=0이라 라벨링 됩니다.
여기서 0.1은 경험적으로 얻어진 낮은 값의 임계값이라고 합니다.
1.
-> 무조건적으로 fast RCNN이 더 좋다고 할 수는 없다
2.
-> 훈련시간 테스트 시간 모두 기존의 모델들보다 매우 빨라진 것을 볼 수 있다
3.
무차별 대입 학습(brute-force learning)과 이미지 피라미드 기법이다. 무차별 대입 학습은 단일 스케일(single scale) 훈련을 말하고, 이미지 피라미드 기법은 멀티 스케일(multi-scale) 훈련을 말한다.
scale을 다르게 한다고 해서 유의미한 효과를 보지 못하고 있다 -> 단일 스케일 방법을 사용하는 것이 더 추천 ...!
(scale은 픽셀을 어떤 크기로 다룰지는 정하는 것)
4.
후보영역을 많이 늘리면 순간 높아지는 것도 있지만 그치만 너무 많이 늘리게 되면 오히려 떨어지는 것을 볼 수 있다
-> 따라서 적정한 영역의 개수를 선택하는 것이 옳은 방법
1. Intersection over Union(IOU)
: object detection의 정확도 측정하는 데 이용되는 평가지표
- ground-truth bounding box(testing set에서 obeject 위치를 라벨링한것)
- predicted bounding box(model이 출력한 object 위치 예측값)
2. MNS 비-최대 억제
object detector가 예측한 bounding box 중에서 정확한 bounding box 선택하게 하는 것
3. mAP
precision recall, average precision 익히 머신러닝에서 배울 수 있는 내용인 precision과 recall
-> precision-recall 그래프에서 아래 면적을 총 더한 것이 average precision
컴퓨터 비전 분야에서 성능을 평가할 때 이 AP로 평가를 많이 한다
-> 물체 클래스가 여러가지인 경우 각 클래스당 AP를 구한 다음 클래스의 개수로 나눠준 것이 mean average precision
average precision의 평균이 mAP라고 생각하면 된다 -> 합성곱 신경망 평가 지표로 많이 쓰인다
참고 문헌
mAP(Mean Average Precision) 정리 (tistory.com)
논문 리뷰 - Fast R-CNN 톺아보기 (tistory.com)
댓글 영역