일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 서포트벡터머신이란
- svdd
- 논문분석
- computervision
- SVM 이란
- yolov3
- libtorch
- pytorch
- cs231n lecture5
- Object Detection
- Computer Vision
- yolo
- fast r-cnn
- EfficientNet
- 데이터 전처리
- self-supervision
- RCNN
- pytorch c++
- CS231n
- TCP
- SVM hard margin
- Faster R-CNN
- SVM margin
- pytorch project
- CNN
- darknet
- support vector machine 리뷰
- DeepLearning
- Deep Learning
- cnn 역사
- Today
- Total
아롱이 탐험대
Fast R-CNN 본문
Fast R-CNN
-Ross Girshick Microsoft Research-
1. Introduction
지난 시간 R-CNN논문에 이어 이번에는 더욱 향상된 network인 Fast R-CNN에 대해 분석을 하겠다. 우선 기존 R-CNN에서는 몇 가지의 단점들이 존재를 했는데 Fast R-CNN에서는 이 problems들이 존재했는지 한번 보자
1) 기존 R-CNN에서는 CNN part에서 Alex net을 그대로 사용했기 때문에 pixel size를 224*224로 warping하는 과정에서 이미지 손실이 생긴다.
2) Selective search를 통해 나온 2000개의 region image를 모두 CNN에 넣기 때문에 시간적인 측면에서 효율성이 아주 낮다.
3) Selective search와 SVM은 GPU에 적합하지 않은 기법들이다.
4) Backpropagation이 불가능하다.
과연 Fast R-CNN에서는 이 문제점들을 어떻게 해결하였는지 지금부터 살펴보자
2. Network
1) CNN
우선 전체적인 모습을 보면 CNN 부분에서 크게 달라진 점이 보인다.
원래 R-CNN에서는 selective search를 통해 각각의 약 2000개의 feature map을 뽑아낸 후 Alex net에 input으로 넣는 구조였지만 Fast R-CNN에서는 selective search를 통해 region proposal을 나눈 단 1장의 image만 CNN을 통해 feature map을 뽑고 Roi projection (region of interest)을 하는 방법이다. 이를 통해 약 2000개의 input으로 들어갔던 CNN 구조를 단 1개의 input으로 들어가는 CNN구조로 변경하였다. 이 과정에서 시간적인 부분에 매우 향상되었다고 한다.
2) Roi pooling
다음은 CNN을 거치고 나온 여러 개의 Bounding 된 box들을 Roi pooling을 해주는 과정이다. 각 box들이 FCs(Fully Connected Layer)에 들어가려면 size가 같아야 되는데 이 problem을 Roi pooing 과정을 통해 모두 동일한 7*7 size로 변형시켜준다.
이는 8*8 feature map을 roi pooling하는 과정을 보여준다. 각각의 size가 다른 bounding box들을 Max pooling을 stride를 다르게 하여 7*7 size인 Fixed Length Feature vector로 만들어준다.
3) soft max & bbox regressor
Roi pooling을 통해 나온 vector들을 FCs에 넣어 마지막엔 soft max를 통해 loss를 얻고, bbox를 통해 bound box의 영역을 조절한다.
기존 R-CNN과는 다르게 Fast R-CNN에서는 Loss function으로 multi-task loss를 사용한다. 이를 통해 Fast R-CNN에서는 동시에 loss function을 학습할 수 있다.
Classification에서는 Log loss를 사용했고, Bounding box regression에서는 smooth L1이라는 loss를 사용했다. 이를 통해 Backpropagation을 가능하도록 했다.
3. result
Fast R-CNN은 우선 단 1장의 image를 CNN의 input으로 넣음으로써 기존 R-CNN에 비해 49초->2.3초로 매우 성능이 좋아진 모습을 보인다. 하지만 2.3초도 real time에는 적용할 수 없는 시간이다. 또한 2.3초에서 region proposal에 해당하는 시간이 2초씩이나 차지한다고 한다. 이 문제는 추후 faster R-CNN에서 기능을 향상했다고 한다. 또한 이 방식을 통해 저장 용량의 측면에서도 크게 향상되었다. 정확도 측면에서는 mAP기준으로 약 5% 성능이 더 좋아졌다. 이는 backpropagation이 가능해졌기 때문에 향상되어 보인다.
위에서 언급한 것처럼 많은 부분이 개선되었지만 중요한 부분 중하나인 시간을 줄이기 위해 이로부터 1년 뒤 faster R-CNN이라는 기술이 나온다. 이 논문은 다음 시간에 분석하겠다.
4. reference
Fast R-CNN (논문)