일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DP
- dfs
- 머신러닝
- MySQL
- Python
- machine learning
- dropout
- BFS
- 강화학습
- Reinforcement Learning
- image processing
- C++
- Mask Processing
- canny edge detection
- edge detection
- deep learning
- MinHeap
- 그래프 이론
- sklearn
- AlexNet
- object detection
- r-cnn
- opencv
- eecs 498
- overfitting
- exists
- dynamic programming
- CNN
- 백준
- 딥러닝
- Today
- Total
JINWOOJUNG
Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN)...(1) 본문
Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN)...(1)
Jinu_01 2025. 1. 11. 21:07Research Paper
Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN)
Selective Search for Object Recognition
Diagnosing error in object detectors
0. Abstract
PASCAL VOC dataset에 대한 Object detection 성능은 지난 몇년간 정체되어 있었으며, 기존 최고 성능의 모델은 여러 저수준 특징(SIFT, HOG 등)을 결합하고 고수준 정보(Context)를 활용한 복잡한 앙상블 시스템(Deformable Part Models)이었다.
본 논문에서는 다음 2가지 Key를 결합한 R-CNN(Regions with CNN features)를 통해 기존 대비 30% 이상 성능이 향상된 Simple and Scalable Detection Algorithm을 제안한다.
- CNN을 bottopm-up region proposlas에 사용
- Localize and Segment objects
- Supervised pre-training $\to$ domain-specific finde tuning
- 부족한 Labeled training data
1. Introduction
Feature는 매우 중요하며, 다양한 시각 인식 Task에서 SIFT, HOG 같은 저수준 특징들이 많이 사용되었지만, PASCAL VOC object detection에서의 성능은 낮고, 소폭 성능의 향상만 존재하였다.
PASCAL VOC Challenge
PASCAL VOC Datset을 기반으로 한 Classification, Detection, Segmentation Challenge.
PASCAL VOC Dataset은 20개의 Class, 22,591개의 작은 Image Dataset.
ILSVRC(ImageNet Large-Scale Visual Recognition Challeng)
ImageNet의 일부를 이용한 Classification, Detection Challenge
ImageNet Datset은 22,000개의 Class, 1500만개가 넘는 Labeled 고해상도 Image Dataset.
대회에서 활용되는 ImageNet Dataset의 Subsample은 1,000개의 Class, 120만 개의 Train Dataset, 5만개의 Validation Dataset, 15만개의 Test Datset으로 구성.
SIFT, HOG는 blockwise orientation histograms인데, 이는 전체 영상에 대하여 local region(block)을 나누고 각 block에 대하여 독립적으로 특징들이 추출되기 때문이다. 이는 사람의 Complex Cell이 정보를 처리하는 방식과 유사하나, 실제로 Recognition(인식)은 더 많은 Downstream 작업이 존재하고, 더 유용한(고차원) Feature를 계산하는 단계가 존재한다.
생물학적 영감을 받아 계층적이고 방향 불변한 모델인 Fuckushima's의 "neocognitron"은 지도 학습 알고리즘의 부족으로 한계가 존재하였다. 이후 LeCun LeNet5와 같이 CNNs을 학습시켜 다양한 인식 문제에 활용되는 방향으로 확장되어 왔다.
2012년에 AlexNet이 나와 ILSVRC에서 놀라운 성능을 보이면서 Classification Task에 큰 충격을 안겨줬다. 여기서 대두되는 문제는 "ImageNet을 기반으로 학습한 CNN classification이 PASCAL VOC Challenge에 일반화가 될까?" 였다. 본 논문에서는 CNN이 Feature based Model과 비교하여 PASCAL VOC Dataset에 대한 Object Detection 성능을 매우 향상시킬 수 있음을 증명한다.
증명을 위해선 2가지 문제를 해결해야 한다.
- Localizing with a deep network
Classification Task와 달리 Object Detection은 객체의 위치화(Localization)이 요구된다. 한가지 접근법은 Localization을 Regression 문제로 설정하는 것이지만, 이는 실무적으로 효과적이지 않음이 입증되었다. 다른 접근법은 Sliding Window 검출기를 구축하는 것이다. CNN은 Sliding Window 검출기를 통한 많은 연구가 이뤄졌지만, 본 논문에서 제안하는 네트워크는 기존(2개의 Conv)과 달리 5개의 Conv Layer를 가지며, Input Image에 대한 매우 큰 Receptive Field와 Stride를 가지기에 해결하기에 효과적이지 않다.
본 논문에서는 CNN Loclization Problem을 "recognition using regions"를 통해 해결한다. 테스트 과정에서 다음과 같은 순서를 기반으로 region proposals를 CNNs와 결합하여 Localization Problem을 해결하였기에, 이를 R-CNN(Regions with CNN features)라 칭한다.
- 2.000개의 클래스와 무관한 Region Proposals 추출
- CNN을 통한 고정된 길이의 Feature Vector 생성
- 각각의 Region Proposals에 대한 Feature Vectors에 대하여 클래스 특화된 linear SVMs를 통한 Classification 및 BBox Regression 진행
- Localizing with a deep network
PASCAL VOC Dataset은 CNN을 학습시키기에 충분한 Labeled Dataset을 포함하고 있지 않다. 본 논문에서는 ILSVRC에서 사용하는 Large Datset(ImageNet의 Subsample)을 기반으로 Supervised Pre-training을 진행한다. 이후 PASCAL VOC Dataset에 대하여 Domain-specific Fine-tuning을 진행 함으로써 적은 데이터 셋에 대하여 Capacity가 큰 CNNs(Model)을 학습시키는 효과적인 Paradigm을 제안한다.
본 논문에서 제안하는 시스템은 각 클래스별로 특화된 연산은 작은 Matrix Multiply와 greedy NMS 밖에 존재하지 않고, CNNs Network를 통해 모든 클래스에 대한 features(weights, filters)가 공유되기에 계산 효율적이다.
본 논문에서 제안하는 시스템의 성능 평가는 단순한 mAP 성능지표로는 Error의 정확한 원인을 해석할 수 없기 때문에, " Diagnosing error in object detectors" 논문에서 제안하는 검출 분석 도구를 활용한다. 이를 통해 간단한 Bounding Box Regression이 오검출을 효과적으로 줄임을 확인하였다.
또한, R-CNN은 Region Proposals를 기반으로 진행되기에 Semantic Segmentation Task로 확장시킬 수 있다.
2. Object detection with R-CNN
R-CNN은 3가지 Moduls로 구성되어 있다.
- 클래스와 무관한 Region Proposals 추출
- 각각의 Region Proposal에 대한 고정된 Feature Vector 추출
- 각각의 Class에 대한 Linear-SVM
2.1 Module design
- Category-independent Region Proposals
다양한 Class(Category)와 무관한 Region Proposlas를 추출하는 방법이 존재하지만, 본 논문에서는 Selective Search기법을 활용한다.
Selective Search는 Object Recognition에 이용할 수 있는 Object Location 후보(Region Proposals)를 추출하는 방법이다.
- Input Image에 대하여 Sub-segmentation 수행
- 색상, Texture 등 Local Feature를 기반으로 유사한 Pixel 끼리 그룹화하여 후보 Regions 생성
- 생성된 Regions에 대하여 가장 유사한 2개의 영역을 반복적으로 결합
- 결합된 Regions를 기반으로 객체가 존재할 가능성이 높은 Region Proposlas를 생성
이를 통해 클래스와 무관한 Region Proposlas를 생성할 수 있다.
하나 생각 해 볼만한 주제는 이렇게 되면 Instance Segmentation이 아니라서 동일한 클래스의 객체가 Occlusion 된 상황에 대해서는 Region Proposal이 단일 객체에 대해서 생성되지 않을텐데..
- Feature Extraction
R-CNN은 4096 차원의 Feature Vector를 각각의 Region Proposal에서 추출한다. 이때, R-CNN의 기본적인 Network의 구성은 AlexNet을 기반으로 하며, 5개의 Convolutional Layers와 2개의 FC Layers로 구성된다. 이때, Region Proposals는 Network를 통해 Forwarding 해 가면서 Feature Vector가 계산되는데, 이때의 Input은 mean-subtracted 227x227 RGB Image이다.
하지만, Region Proposals는 서로 다른 크기, 비율을 가지기 때문에 전처리 과정이 요구된다. 본 논문에서는 각 Region Proposal에 $p$ 픽셀만큼 Region Proposal를 둘러싸는 Context를 추가한 뒤, 가장 tight 한 Square BBox를 생성하여 고정된 크기의 Input인 227x227 Size로 Rescale 한다.
위 그림에서의 (A)는 원본 Region Proposal, (B)는 변형된 Region Proposal, (C)는 $p$ 만큼 인접한 Context가 확장되지 않은 변형된 Region Proposal 이다. (B), (C)의 차이를 통해 $p$ 만큼 Context를 확장하는 방법을 확인할 수 있다.
2.2 Test-time Detection
Test 과정은 다음과 같이 진행된다.
- Test Image에 대한 약 2,000개의 Region Proposals 추출
- "fast mode" Selective Search 사용
- Warp each proposal and forward propagate
- Region Proposals의 개수를 M개라고 했을 때, Mx4096의 Feature Vectors 생성
- 각각의 Feature vector에 대한 점수 계산
- 각각의 Class에 대하여 학습된 SVM 사용
- SVM의 Weight는 4096xN의 크기를 가짐(N = Number of Classes)
- Greedy NMS(Non-Maximum Suppression)
- 점수가 더 큰 다른 Region에 대하여 IoU가 Threshold 보다 큰 경우 해당 영역 삭제
- 동일한 객체에 대하여 중복된 검출을 제거하기 위해
R-CNN의 객체 검출은 매우 효율적이다. 먼저 CNN paramter가 모든 클래스에 대하여 공유 즉, Filter(Weight)는 Input Image의 Class에 따라 다른 것이 아니라 공유되기 때문에 연산량이 작다. 또한, R-CNN의 Feature Vector는 4096 차원으로, Selective Search를 기반으로 고차원의 특징을 활용하는 Object Detection System인 UVA System과 달리 저차원이다.
이러한 효율적인 R-CNN의 특성은 매우 적은 메모리와 빠른 연산 속도를 보인다. 특히, UVA system과 비교하면 100k개의 클래스로 확장하였을 때, UVA는 고차원의 특성을 활용하여 134GB의 메모리가 요구되지만, R-CNN은 1.5G 밖에 요구되지 않는다. 또한, DPMs의 경우 10k 클래스에 대하여 각 이미지에 대하여 5분 정도의 run-time이 요구되지만, R-CNN은 1분 정도 밖에 요구되지 않고, mAP역시 59%로 16%에 비해 성능이 매우 뛰어나다.
2.3 Training
- Supervised pre-training
먼저 CNN을 Large Auxiliary Dataset(ImageNet Subsample)을 이용하여 Pre-training을 진행한다. 이때, BBox 정보 없이 오직 Image-level에서의 Annotations만 포함하여 학습된다. 즉, Classification Task처럼 학습됨을 의미한다.
이러한 단순화 된 구조로 Pre-training 된 CNN은 AlexNet보다 Top-1 Error가 2.2% 높게 측정된다. 이는 학습 과정에서 매우 단순화 되었기에 발생하는 약간의 성능 저하로 판단된다.
- Domain-specific fine-tuning
사전 학습된 CNN을 Warped Proposal Windows에 대하여 Detection Task를 수행할 수 있도록 적응시키기위해, Warped Region Proposals 만 이용하여 CNN Parameter를 SGD Training 한다. 이때 발생되는 Network의 변형은, 기존 AlexNet에서는 N(Class 개수)이 1,000이었기에, 이를 각 데이터 셋에 맞는 N+1(1은 배경)로 변형한 것 외에는 없다. 이때, Region Proposal이 Ground Truth(GT) BBox와의 IoU가 0.5를 넘기는 경우 Positive, 나머지를 Negative로 처리하였다.
SGD의 Learning Rate는 0.001로, Pre-training의 $\frac{1}{10}$으로 설정하여 쵝화 된 가중치를 손상시키지 않으면서 Fine-tuning 될 수 있도록 하였다. Learning Rate를 작게 설정하면 새로운 도메인(Warped Region Proposals)을 기반으로 Fine-tuning 시 초기화 된 가중치를 최대한 유지하면서 조금씩 새로운 Domain에 적응할 수 있다.
각 SGD 과정에서 32개의 양성 Windows, 96개의 배경 Windows로 구성된 128개의 Mini-batch를 구성한다. 실제로 대부분은 배경이고 양성인 샘플은 적고 이는 $\frac{32}{128}$의 비율보다 적다. 따라서 128개 중 32개를 양성 샘플로 하여 더 적은 데이터에 대하여 자주 학습하도록 편향되게 구성하였다.
- OBject category classifiers
Region Proposals가 객체를 완벽히 포함하거나, 포함하지 않으면 Positive, Negative를 구분하기 쉽지만, 일부만 겹치는 경우 문제가 생기기에 본 논문에서는 IoU가 overlap threshold보다 작은 경우 Negative로 구분한다. 본 논문에서는 Threshold를 0.3으로 설정하였다.
각 클래스 당 Linear SVM을 최적화하기 위해서 본 논문에서는 standard hard negative mining method를 활용한다. 이는 Large Dataset에 대하여 더 빠른 수렴 속도를 가지며, 실제로 모든 이미지를 한 번만 처리한 후에도 mAP가 더 이상 증가하지 않는다.
2.4 Results on PASCAL VOC 2010-12
PASCAL VOC 2007을 활용하여 Fine-tuning을 위한 Hyperparameter 및 설계 결정을 진행하였다. 이를 기반으로, pre-trained CNN을 VOC 2012 Train Dataset에 대하여 Fine-tuning 하였으며, SVM 최적화를 위해 VOC 2012 trainval을 활용하였다.
R-CNN의 성능은 기존 Feature based Model을 훨씬 앞도하는 mAP를 보여주며, 각각의 Class에 대해서도 월등한 성능을 보인다. 특히, Bounding Box Regression을 활용한 결과 더 높은 성능을 보이는 것을 확인할 수 있다.
AP, mAP의 개념이 부족하다면, 아래 포스팅을 참고하기 바란다.
https://jinwoo-jung.tistory.com/93
2.5 Results on Results on ILSVR2013 detection
POSCAL VOC Dataset이 아닌 Large Dataset에 대하여 성능 평가를 한 결과, 2등인 OverFeat의 24.3% mAP와 약 7% 높은 31.4%를 보임을 확인할 수 있다. 하나 흥미로운 점은, 대부분 CNNs를 사용하였는데, CNNs를 어떻게 사용하는지에 따라 확연한 성능 차이를 보임을 확인할 수 있다.