가입한 학회에서 논문 리뷰 스터디에 참여하게 되었다.
논문을 읽어보는 것이 처음이라 많이 겁도 났지만 한번 읽어보았다.
object detection 분야에 대해 아는 것이 없어서 더욱 어려웠던 것 같다.
나의 빈약한 집중력도...! 문제였다.
논문을 읽으면서 chat gpt를 처음 사용해봤는데, 걔 아니었으면 논문 다 읽지도 못할 뻔 했다.
앞으로도 잘 부탁해야겠다...
1주차 후기 :
사람들이 다 천잰가...?
일단 내가 젤 멍청하고 아는게 없다.
윽악
열심히 해야지 뭐,,, 할 수 있겠지..?
Rich feature hierarchies for accurate object detection and semantic segmentation
Rich%20feature%20hierarchies%20for%20accurate%20object%20detec%20f73141abbd59444cbe2751bea06db21b/1311.2524.pdf
💡 이 논문은 object detection 분야에 큰 발전을 불러온 R-CNN을 설명하는 논문입니다.
Abstract
- 본 논문에서는 localize and segment objects를 위해 Region proposals에 CNN을 활용하는 방법인 R-CNN에 대해 설명하고 있다.
- R-CNN 이라는 이름은 Regions with CNN features를 의미한다.
1. Introduction
- 당시의 상황 : object detection 분야의 기술은 최근 몇 년간 큰 진전이 없었다.
- ImageNet 대회의 개최와 AlexNet의 등장으로 CNN에 대한 관심이 높아지고 있었다.
⇒ CNN을 object detection에도 사용해보고자 함. ⇒ R-CNN의 등장
- fine tuning을 진행하였더니 성능이 더욱 잘 나왔다고 한다.
💡 핵심 1. object detection에 CNN을 사용한 R-CNN
핵심 2. fine tuning을 이용한 성능 향상
2. Object detection with R-CNN
- R-CNN은 크게 세 단계로 구성된다.
- category - independent region proposlas
- large convolution neural network
- class specific linear SVMs
2.1 Module design
Region proposals
- 다양한 방법들 가운데, selective search를 사용한다.
- 이는 prior detection work와의 controlled comparison이 가능하게 하기 위해서라고 한다.
💡 **selective search**란?
이미지를 일련의 작은 구역으로 분할한 후, 이러한 구역을 합치며 물체가 위치할 가능성이 높은 영역을 식별하는 방법.
color, texture, size, fill(유사한 주변과의 차이 정도) 4가지 특징을 사용해 유사도가 높은 공간끼리 merge 하며 bottom-up 방식으로 2000개의 Region proposals를 만들어 낸다.
![Untitled](Rich%20feature%20hierarchies%20for%20accurate%20object%20detec%20f73141abbd59444cbe2751bea06db21b/Untitled%201.png)
[http://www.huppelen.nl/publications/selectiveSearchDraft.pdf](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf)
- CNN(AlexNet)을 사용하여 각각의 region proposal에 대해 4096 dimensional의 feature vector를 추출해낸다.
- 더 자세하게는 5개의 convoutional layer와 2개의 fully connected layer를 통과하게 하여 feature를 얻어낸다.
- 이때 CNN의 input size가 227*227이어야 하므로, 각 region proposal의 사이즈를 변경해줘야 한다.
- warping을 통해 각각 region의 이미지 사이즈를 227 * 227로 변환해준다.
2.2 Test-time detection
test 과정
- selective search의 fast mode로 2000개의 region proposals 추출
- 각각의 region을 warp한 후 CNN에 입력하여 feature 추출
- 각각의 feature들을 각각의 class 하나에 대해 학습되어 있는 SVM에 넣어 점수 획득
- 이때, greedy non-maximum suppression 방법을 적용
- 이는 모든 region에 대해, 점수가 더 높은 region과의 IoU(겹치는 부분)이 특정 임계보다 클 때 해당 region을 제거하는 방법
Run-time anaysis
- R-CNN은 CNN parameter들이 모든 category에 대해서 공유된다.
- 해야 할 계산이 selective search, 그리고 SVM에서의 간단한 single matrix - matrix product 밖에 없다.
- 따라서, 기존의 방법과 달리 아주 효율적이며, 대부분의 CPU에서 빠르게 수행될 수 있다.
2.3 Training
Supervised pre-training
- 대규모의 데이터셋(ILSVRC2012 classification)에 대해 먼저 pre-train을 진행한다.
- 데이터셋에는 bounding box 에 대한 정보는 포함되어 있지 않고, image-level의 label만 존재
- pre-trained된 AlexNet을 사용한다
Domain-specific fine-tuning
- 각각 region proposals에 대해 detection을 수행하기 위해 CNN의 parameter들을 warped region proposals로 fine-tuning 시켜준다.
- CNN의 classification layer를 원래 이미지넷 데이터에 맞춰 학습되어 있는 1000-way가 아니라, (N+1)-way의 layer로 바꾸어준 후 학습을 진행하면 된다.
- 더 자세히는, lr이 0.001인 SGD를 사용하여 학습을 진행하는데, class가 존재하는 32개의 window, 96개의 class가 존재하지 않는 background window로 이루어진 mini batch를 사용하여 학습을 진행한다고 한다. background가 실제로 훨씬 많기 때문에 비율을 그렇게 구성한다.
Object category classifiers
- 물체가 부분적으로 들어가 있는 region을 해결하기 위해 IoU overlap threshold를 정하고, 그 임계값을 넘는 region만 positive로 사용한다.
- grid search를 이용해 찾은 최적의 IoU 임계값은 0.3이다.
- feature 추출과 training label 부여를 마친 후에는 linear SVM을 최적화한다.
- 이때 hard negative mining method를 사용했다고 한다.
2.4 Results on PASCAL VOC 2010-12
- PASCAL VOC : 20개 class에 대해 object detection을 수행하기 위한 데이터셋.
- 기존 최고 성능인 35.1%에서, mAP가 53.3%까지 상승하는 좋은 성능을 내었다.
- 같은 region proposal 알고리즘을 사용하는 다른 방법에 비해서도 CNN을 추가한 R-CNN의 성능이 우수하였다.
- Bounding box regression을 추가하였을 때, 그렇지 않은 경우보다 성능이 더 높게 나왔다. (추후 appendix C에서 설명됨)
2.5 Results on ILSVRC2013 detection
- 200개의 class에 대한 detection을 수행
- 24.3% mAP가 가장 좋은 성능이었으나, R-CNN을 사용했을때에는 31.4%로 좋은 성능을 내었다.
3. Visulaization, ablation, and modes of error
3.1 Visualizing learned features
- 추출한 feature, 즉 filter를 어떻게 시각화할 수 있을까?
- CNN에서 첫번째 층의 필터는 edge나 보색등을 잡아내므로 이해하기도 쉽고, 시각화도 가능하다.
- 그러나 층이 깊어질수록 filter를 이해하고 시각화하는데에는 어려움이 있다.
- 따라서 해당 filter가 어떤 특성을 학습한 것인지 확인하기 위해, 특정 filter 하나하나 각각을 object detector로 사용해 region proposal에 대해 activation을 계산한다.
- 그 후 가장 높은 점수를 보이는 region을 확인한다면, 해당 filter가 어떤 특성을 학습했는지를 시각화한 셈이 된다.
- 해당 figure는 pool5 layer중 6개 filter를 선택해 각각 높은 activation을 표시한 것이다.
- 첫번째 필터는 사람의 얼굴, 두번째 필터는 강아지, 세번째 필터는 꽃의 형태를 학습하였을 것임을 예측할 수 있다.
3.2 Ablation studies
- 모델의 구성 요소를 제거하거나 변경하여 해당 기능이 모델의 전반적인 성능에 어떤 영향을 미치는지 평가하는 실험
- fine tuning 하지 않은 모델을 사용하여 layer별 성능을 평가한 결과, fc layer를 모두 제거하고 사용하였을때 parameter의 수는 6%밖에 되지 않지만, 성능 차이가 크게 나지 않았다.
- 이를 통해, CNN의 representational power는 convolutional layer에서 온다는 것을 알 수 있었다.
- fine-tuning의 결과 mAP가 8% 상승하는 것을 볼 수 있었다.
- 이때, CNN layer에서보다 Fully connected layer에서의 성능 향상폭이 더 컸는데, 이를 통해 ImageNet에서 미리 학습된 CNN layer위에, 특정 데이터로 fine tuning 한 classifier를 사용하였을때 효율적으로 큰 성능 향상을 가져온다는 것을 알 수 있다.
Comparison to recent feature learning methods
- 당시 사용되던 다른 feature learning methods와 비교했을 때 R-CNN이 더 좋은 성능을 낸다.
3.3 Network
- AlexNet 대신 VGG16을 CNN model로 사용하였을 때 성능이 8%가량 더 좋게 나왔다.
- 그러나 연산에 소요되는 시간이 대략 7배 더 길었다고 한다.
3.4 Detection error analysis
3.5 Bounding-box regression
-
오차 분석의 결과 localization error를 줄이는 것이 필요하였다고 한다.
-
따라서 bounding-box의 위치를 linear regression을 통해 찾는 방법을 도입하였다.
-
각 region proposal을 SVM으로 점수를 매긴 후에, bounding box regressor를 통해 bounding box의 위치를 새로이 예측한다.
-
더 자세히는, 각 region proposal의 중심점 x,y좌표, 너비와 높이 정보를 가진 P와 실제 bounding box의 해당 정보를 라벨링한 G를 통해 regression을 진행한다.
-
더 자세히는,,,
- 이렇게 linear한 수식으로 표현 후, 각각의 function d가 CNN feature의 linear function이므로 이렇게 나타낸 후, ridge regression을 통해 linear regression의 weight를 구한다.
4. The ILSVRC2013 detection dataset
해당 데이터셋이 R-CNN을 적용한 결과를 살펴본다.
4.1. Dataset overview
- PASCAL VOC dataset에 비해 클래스 개수도 많고, 이미지도 많다.
4.2 Region proposals
- 앞 데이터셋에서와 마찬가지로 selective search의 fast mode를 사용하였다.
- 다만 이미지의 크기가 모두 제각각이어서 이미지의 크기를 모두 통일해주는 작업을 처음에 진행하였다.
- PASCAL 데이터셋에서는 이러한 방법으로 실제 존재하는 bounding box의 98%를 찾아낼 수 있었으나, 해당 데이터셋에서는 91%가량밖에 찾아내지 못하였다.
⇒ region proposal stage에서의 개선의 여지가 남아있다.
4.3 Training data
- CNN fine-tuning
- detector SVM training
- bounding-box regressor training
4.5. Ablation study
- CNN fine-tuning + bbox reg set이 성능이 가장 좋았다.
5. Semantic segmentation
💡 **segmentation**이란?
object detection과 달리, 이미지의 pixel 단위로 객체를 나누어 주는 것을 의미한다.
이미지 출처 : cs231n 강의자료
- R-CNN을 semantic segmentation에 사용해 보았다.
- fine-tuning 없이 진행했을 때, 기존의 방법과 유사한 정도 혹은 살짝 높은 정도의 정확도를 확인할 수 있었다.
6. Conclusion
- R-CNN 모델은 성장이 정체되어있던 object detection 분야에서 단번에 성능을 30% 높여준 알고리즘이다.
- R-CNN의 핵심은 object detection을 위해서 CNN을 사용했다는 것, 그리고 pre-trained 된 모델에 fine-tuning을 진행하여 사용하는 전이학습 방식을 사용했다는 것이다.