전통적인 관점에서의 사물/사람 검출 기술
1. Rule based learning: Deep learning의 Data Driven과 반대되는 개념
2. Hand Craft Feature: 사람이 직접 추출한 feature
HoG 기반 사람 검출 기술
Human Detection
- 주어진 영상으로부터 사람을 검출하기 위한 연구
- 다양한 분야에 활용 가능하기 때문에 CV 기술에서 가장 중요한 문제이다.
- CCTV 등 보안 감시 시스템, 가상현실/증강현실, 사람과 컴퓨터와의 상호작용(HCI)
- 훈련 시스템 구성
- Hand Craft: HOG/SIFT/SURF를 이용하여 feature 추출
- 추출된 feature는 (x0,x1,⋯,xn) 벡터 형태이다.
- Descriptor: 특징이 추출된 vector로 환경 변화가 있어도 특징이 잘 나타나야 한다.
- Classifier: SVM을 이용하여 사람인지 아닌지 구분한다.
![](https://velog.velcdn.com/images/hyeon-ii/post/ec928577-3ba7-47e3-ba4b-f4c230794b35/image.png)
- Rule: 사람은 머리, 몸, 팔, 다리로 이루어지고 histogram은 ⋯와 같이 생겼다.
DB 구축
- 학습 == 데이터를 구분하는 경계 찾기
- 데이터는 특정 class 편향이 없어야 한다.
- 대용량 데이터에 기반한 영상 검출 방식이 대세이다.
- 딥러닝 이전에도 대용량 데이터를 수집하기 위한 노력이 있었다.
- 카메라 보급, 클라우드 시스템, 대용량 저장장치, 병렬처리 기술 발전에 따라 폭발적인 양의 데이터를 처리할 수 있는 환경으로 바뀌었다.
영상으로부터 사람 검출(Test)
![](https://velog.velcdn.com/images/hyeon-ii/post/4ee93a4d-41c5-4126-8c30-dc9f94440118/image.png)
- 입력 영상으로부터 윈도우 sliding 하는 방법
- 주어진 영상을 일정 크기로 crop 한 후 크기를 정규화 한다.
- 크기를 정규화한 영상의 특징이 사람과 유사한지 비교한다.
- 윈도우가 움직이는 stride가 촘촘할수록 정확도는 높아지지만 오래 걸린다.
- 윈도우가 개체의 scale을 적절히 나타내지 못할 수 있으므로 해상도를 바꾸어가며(pyramid image) sliding 한다.
![](https://velog.velcdn.com/images/hyeon-ii/post/335f23e5-1808-490a-8ab8-886eedce2d8a/image.png)
- 윈도우마다 feature 추출, classify 과정을 거치기 때문에 시간 소요가 매우 크다.
HoG 특징 검출
- 영상으로부터 추출할 수 있는 사람의 특징
- 컬러: Camera에서 얻을 수 있는 가장 좋은 정보이지만 조명 한경에 매우 민감하기 때문에 Pattern 인식에 좋지 않다.
- 형태: 조명 환경에 강인하다.
다양한 pose에 따른 변화는 대용량 DB로 대응한다.
- Scale: 화면에 큰 사람과 작은 사람을 검출하기 어렵다.
Pyramid image를 통하여 개선하지만 처리 시간이 많이 걸린다.
- 움직임: 2장 이상의 영상에서 움직이는 정보를 활용한다.
안 움직이는 사람을 검출하기 어렵다.
- 깊이: 앞에 있는 사람과 뒤에 있는 물체 분류 후 검출
2대 이상의 카메라가 필요하며 3D, 2D 변환으로 인한 정보 손실이 발생한다.
- 한 대의 영상으로 조명 환경에 강인한 사람 검출 기술이 필요하다.
- 사람의 특징을 더 잘 자타내고, 컴퓨터에 부담을 줄여줄 수 있도록 특징을 검출하는 방식을 활용하면 처리 시간을 줄일 수 있다.
- Histogram of Gradient: 에지 성분 검출 후 이에 대한 히스토그램으로 표현한다.
- 명암 차이를 벡터화하여 Edge 정보를 사용한다.
- HoG 특징 검출: Image → Gradient → Cells → Blocks → Descriptor
- 윤곽선 움직임(Edge Rotation) 방향 정보로 Image를 표현할 수 있다.
- Gray Scale Image를 X 축 및 Y 축 방향으로 미분하여 edge를 구한다.
- [−1,0,1],[−1,0,1]T(filter) Sobel edge 또는 canny edge 활용 가능
- 8×8 셀에서의 gradient 방향을 계산한다.
- Vote weight = magnitude와 angle 계산 (arctan(dy/dx))
- HoG는 방향 정보만 사용한다.
- Blocks
- Feature Vector를 classifier에 넣는다.
![](https://velog.velcdn.com/images/hyeon-ii/post/2dbbcc1a-d633-4aba-9373-78da13e2b907/image.png)
HoG feature variation
Image Capture
- Gaussian smoothing: noise를 줄이는 전처리
- Color vs. Gray
- Color 영상이 흑백 영상을 사용하는 것보다 성능이 조금 더 우위에 있다.
- Gradient smoothing
Gradient
- Alternative mask
- 어떤 edge를 활용하는가에 따라 성능에 영향을 미친다.
Cell
Block
Classifier
Support Vector Machines
- 2000년대 초반부터 2010년 초반까지 매우 인기 있던 Classifier
- 1980년대에 Neural Network는 컴퓨팅 환경, 알고리즘, 데이터의 부족으로 인기가 없었다.
Linear Classifier
- 주어진 데이터에 대한 직선의 방정식 기반 classifier
Linear Margin
Nonlinear Classifier
- 전통적인 linear classifier로 분류하지 못하는 문제가 있다.
- Kernel을 이용하여 데이터에 가중치를 부여하여 linear한 공간으로 변환한 후 linear SVM을 적용한다.
![](https://velog.velcdn.com/images/hyeon-ii/post/3ce8cc1d-328c-469a-9295-30f8ccf90fb5/image.png)
- Non-linear 문제였으나 3D linear로 해결
Overfitting 문제
- Underfitting: high bias
- Good compromise: Data의 특성을 모르면 적절한 Kernel을 직접 찾아야 한다.
- Overfitting: high variance