Duplicate

Lecture 27 | Object Detection

수강 일자
2022/12/06

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 를 뽑음.
64×12864\times 128 pixel 의 크기로 window 를 추출하고, 위 아래로 4 pixel 의 margin 을 설정함.
56×12056\times 120 pixel 의 남은 영역을 8×88\times 8 Cell 로 나누어 7×157\times 15 개의 Cell 을 얻어냄
2.
Patch 를 HOG feature 를 사용해 표현함.
Patch 에 대해서 gradient 를 계산함. (간단한 filter 를 사용하는 것이 도움이 되었다고 함.)
Unsigned Angle 범위를 가지는 9 개의 orientation 영역에 대해서 각 영역에 속하는 gradient orientation 을 가지는 픽셀의 gradient magnitude 를 더한 값을 이용해 histogram 을 구성함.
8×88\times 8 Cell 하나에 9×49\times4 의, 한 Patch 에 대해서 [15×7]×9×4=3780[15\times 7] \times 9 \times 4 =3780 의 크기를 가지는 feature 를 설정함. (4 는 Normalization 방법론을 4 가지 다르게 한 것임.)
3.
Linear SVM Classifier 로 각 window 를 scoring 함.
각 Patch 에서 추출한 37803780 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 등등을 어떻게 설정할지