Object Category Detection
•
물체가 이미지 속에 있는지 + 있다면 어디에 있는지
•
이미지에서 물체가 있을 법한 많은 영역을 뽑고, 그 영역이 관심있는 물체인지 Classification 하는 방법이 있음.
•
다음과 같은 이유들 때문에 어려움
◦
Ilumination
◦
Object Pose
◦
Clutter
◦
Occlusion
◦
Intra-Class Appearance
◦
Viewpoint
General Process of Object Detection
1.
Specify Object Model
2.
Generate Hypotheses
3.
Score Hypotheses
4.
Resolve Detections
Specifiying an Object Model
•
Statistical Template Approach
◦
자전거 검출을 위해 자전거 Template 를 만듬.
◦
하나의 사진으로 Template 을 만드는 것이 아닌, 많은 자전거 사진을 활용하여 + Feature Extraction 을 통해 Template 을 정의함 (HOG feature 등)
•
Articulated Parts Model
◦
관절이 있는 물체들에 대해서 Parts Model 을 사용함. (범용적으로도 사용됨.)
◦
여러 개의 부분으로 이루어져 있고, 각 부분이 어떠한 공간적인 배치를 따를 때 사용할 수 있음.
▪
Ex. 눈과 눈 사이의 특정 거리를 정의하고 그것보다 길어지면 탄성력이 작용
◦
각각의 Parts 들은 False Alarm 이 많을 수 있지만, 여러 가지 Parts Detection 이 어떠한 Geometry Layout 을 만족한다면 정말 원하는 물체가 있을 확률이 높다고 볼 수 있음.
•
Hybrid Template / Parts Model
◦
Template Model + Parts Model 를 합친 모델
•
3D-ish Model
◦
3차원 모델을 가지고 있다면, 그 모델을 활용해 임의의 view 에서 물체의 모습을 알 수 있음. → 이를 활용해 물체의 인식률을 높일 수 있음.
◦
사전에 주어진 물체에서만 가능하고 복잡도가 높은 단점이 있음.
Generate Hypotheses
•
물체가 있을 법한 영역을 이미지로부터 많이 찾아내는 과정
•
Sliding Windows
◦
보행자 검출을 원한다면, 길쭉한 Window 를 정의하고 마치 convolution 하듯이 훑어 내려가면서 보행자가 있는지를 찾음.
◦
보행자가 가까이 있는지, 멀리 있는지에 따라 크기가 다르기 떄문에 Template Size 를 바꾸던지 Image Size 를 바꾸던지 해서 여러번 Sliding 이 필요함.
•
Voting from Patches / Keypoints
1.
Interest Points 를 뽑고 해당 위치에서 Patch 를 만듬.
2.
만든 Patch 와 가장 유사한 codebook 상의 patch 를 찾음.
3.
Center Voting 이 많이 되는 지점에 실제로 보행자가 있을 가능성이 높음.
•
Region-based Proposal
◦
여러 version 의 segmentation 을 수행하고, segments 들의 여러 조합을 고려하면 상대적으로 쉽게 물체가 있을 위치를 알 수 있음. (High Level idea 를 활용함)
Sliding Window vs. Region Proposals
•
Sliding Window
◦
단순하게 다 찾아보는 approach
◦
계산이 비쌈 (100K 후보군)
◦
구현 자체는 간단함.
◦
Convolution 을 통해 Speed Boost 가 될 수는 있음.
◦
Repeatable → Stride, Scale 등의 세팅이 정해지면 여러 번 돌려도 동일한 결과를 얻을 수 있음.
◦
매우 많은 후보군을 찾음에도, Scale 이 맞지 않으면 아예 찾을 수 없을 수 있음.
•
Region Proposal
◦
Contours, Segment Result 들을 활용해 있을 법한 영역을 한정함.
◦
2-10K 후보군만 존재함.
◦
Random (Not Repeatable) → 알고리즘마다 다르긴 하지만, stochastic 한 특성에 의해 일부만 찾는다면 재시행에 동일한 결과를 얻지 못할 수 있음.
◦
Region Proposal 알고리즘을 따로 돌려야 해서 preprocessing 이 필요함.
◦
각각의 patch 를 원하는 size 로 바꾸어야 할 수도 있음.
◦
Sliding Window 에 비해서 상대적으로 최근 approach 임.
Score Hypotheses
•
Classification 알고리즘을 수행하여 물체가 있는지 확인함.
•
HOG feature, CNN feature 등을 이용해 Classifier 를 돌릴 수 있음.
Resolve Detections Scores
•
Non-Max Suppression
◦
Maximum 이 아닌데 근처에 Bounding Box 들이 존재하면 제거함.
◦
Heuristic 한 방법인데 비해서 실제로 Detection 성능에 큰 영향을 줌.
•
Context / Reasoning
◦
Context 등을 활용하여 score 를 조정하는 과정
◦
Ex. 사람과 유사하지만, 공중에 떠 있는 경우 Context Reasoning 을 통해서 confidence 를 낮춰줄 수 있음.
Dalal-Triggs Pedestrain Detector
•
HOG feature 를 처음 제안함.
1.
이미지에서 특정 position 과 scale 로 고정된 크기의 patch 를 뽑음.
•
pixel 의 크기로 window 를 추출하고, 위 아래로 4 pixel 의 margin 을 설정함.
•
pixel 의 남은 영역을 Cell 로 나누어 개의 Cell 을 얻어냄
2.
Patch 를 HOG feature 를 사용해 표현함.
•
Patch 에 대해서 gradient 를 계산함. (간단한 filter 를 사용하는 것이 도움이 되었다고 함.)
•
Unsigned Angle 범위를 가지는 9 개의 orientation 영역에 대해서 각 영역에 속하는 gradient orientation 을 가지는 픽셀의 gradient magnitude 를 더한 값을 이용해 histogram 을 구성함.
•
Cell 하나에 의, 한 Patch 에 대해서 의 크기를 가지는 feature 를 설정함. (4 는 Normalization 방법론을 4 가지 다르게 한 것임.)
3.
Linear SVM Classifier 로 각 window 를 scoring 함.
•
각 Patch 에서 추출한 dimension feature 에 대해서 classificaiton 을 진행.
•
Positive Sample 같은 경우 SVM weight 가 Head-Shoulder detector 와 같은 양상을 보임.
4.
Non-Maxima Suppresion 을 통해서 overlapping detection 을 제거함.
R-CNN (Girshick et al. CVPR 2014)
•
전반적인 pipeline 은 Dala-Triggs 것과 거의 동일함.
◦
Sliding Window → [Selective Search] Region Proposal
◦
HOG features → Fine tuned CNN features
•
이후 발전을 통해 Faster R-CNN 이 나왔음.
Pros and Cons of Statistical Template Approach
•
Strengths
◦
Non-Deformable Object, Rigid Object 에 대한 detection 이 잘 됨.
◦
Detection 이 빠름.
•
Weaknesses
◦
사람과 같은 Deformable Object 에 대해서는 잘 동작하지 않을 수 있음.
◦
Occlusion 에 대해서 robust 하지 않음.
◦
많은 Training Data 가 필요함.
Tricks of the Trade
•
Feature Engineering really matters
◦
사용하는 feature 가 중요함. (R-CNN 의 예시에서는 파이프라인 관점에서 개선보다는 feature 측면에서의 개선이 중요했음.)
•
Template Size
◦
가장 작은 Sliding Window 가 detect 할 수 있는 물체의 크기의 한계임.
•
Augmentation to create synthetic positive examples
◦
Positive Example 에 대해서 augmenation 을 통해 양을 늘리는 것이 중요함.
◦
Rotation, Scaling, Mirroring
•
Bootstrapping to get hard negative examples
◦
Negative Example 중 너무 쉬운 것만 존재하면 Margin 이 Negative 쪽으로 갈 수 있음.
◦
어려운 Negative Example 을 넣는 것이 중요함. (ex. 사람과 비슷한데 사람이 아닌…)
Deformable and Compositional Objects
•
Deformable Object: 사람처럼 변형이 되는 물체
•
Compositional Object: 의자처럼 구성요소들의 위치가 어느정도 정해져 있는 물체
Parts-based Models
•
Object 를 Parts 의 모음으로 정의할 수 있음.
◦
Parts 의 Appearance 와 Parts 간의 Spatial Configuration 을 중심으로 Modeling 할 수 있음.
How to Model Spatial Relations?
•
Bag of Words approach 는 단순히 frequency 만 고려하는, Spatial Relation 을 고려하지 않은 모델링임.
•
Star-shaped Model
◦
Parts 가 Object Center 하고만 연결되어 있고, Object Parts 하고는 연결이 되어있지 않은 모델
•
Tree-shaped Model
◦
Star 도 Tree 의 일종임.
◦
두 Node 에 대한 Path 가 유일한 경우 Tree 라고 부름.
◦
Random Variable 이 Tree 구조로 이루어져 있다면, 이들의 추론 과정이 Polynomial Time 으로 가능함.
Pictorial Structures Model
•
Appearance Likelihood (Parts 가 학습 데이터에서 본 것과 비슷한지) 와 Geometry Likeliihood (인접한 Parts 들이 학습 데이터에서 본 relation 범위에 있는지) 로 detection
Deformable Part Model (DPM)
•
Statistical Template Model + Parts Model 이 합쳐진 형태
•
Source Code 가 굉장히 잘 유지/보수 되어 있음.
•
5년 정도 Object Detection 의 대표 모델이었기 때문에 variants 가 많음.
•
두 가지 Model 과 Spatial Cost 로 이루어져 있음.
◦
Root Filter Model
▪
Coarse 한 appearance 를 detection 하는 Model
◦
Parts Filter Model
▪
Fine 한 scale 로 detection 하는 Model
◦
Spatial Costs
▪
Detection 결과가 Training 데이터의 모습과 Gemoetry Relation 이 비슷한지를 판단함.
DPM: Computing Object Score
1.
전체 이미지를 HOG feature 로 만듬.
•
Resolution 을 2배한 이미지도 HOG feature 로 만듬.
2.
Root Filter 를 HOG feature 와 convolution 함.
•
High Response 영역에 사람의 Root Filter 처럼 생긴 부분이 존재함을 알 수 있음.
3.
Resolution 2 배한 HOG feature 에 Part Model 을 돌림.
•
Head 가 있을 법한 부분에 High Response 가 생김.
•
Head 가 있을 때, 사람 몸체가 있을 확률이 높은 영역을 뽑아줄 수 있도록 Generalized Distance Transform 을 적용함.
4.
만들어낸 Response Map 들을 더해 Score Map 을 만들어 냄.
•
최종적인 Score 가 높은 영역은 Root 와 Part 모두 잘 검출된 영역
DPM: Mixture Model
•
관심 있는 Class 하나당 여러 개의 Model 로 구성되어 있음.
◦
사람의 상반신만 나와 있을 수도, 전체가 나와있을 수도 있기 때문
◦
자전거도 앞모습, 옆모습 등의 Model 이 있음.
•
Test 때는 관심있는 Object 가 20 개고 각 Object 당 2 개의 Model 이 있다면, 40 개 중 Score 가 가장 높은 Object 를 선택하면 됨.
Design Challenges
•
Likely 한 Object 를 어떻게 찾을 것인지
•
Feature 를 어떻게 design 하고 scoring 을 할 것인지
•
서로 다른 viewpoint 에 대한 처리를 어떻게 할 것인지
•
Implementation Details - Window Size, Aspect Ratio, Translation/Scale Step Size, Non-Maxima Suppression 등등을 어떻게 설정할지