참고
영상 처리 기초 정리
1. 이미지에서 '얼굴'을 검출한다. 얼굴의 방향이나 조명 등을 고려할 수 있어야 한다.
2. 얼굴의 '특징'을 찾는다.
3. 특징을 '비교'하여 이름을 결정하여 구분한다.
참고
특징점이란, 이미지의 특징을 잘 나타낼 수 있는 부분이다.
이러한 조건을 만족하는 가장 좋은 특징점은 Corner point이다.
특징점을 선택한 후, 각 특징점을 중심으로 어떤 영역(local patch)에 대해 특징 벡터를 추출한 것을 말한다.
DoG(Difference of Gaussian) 기반으로, 인접한 가우시안 블러링 영상끼리의 차이를 이용한다.
특징점 단위 매칭으로 이루어져, 물체의 형태 변화, 크기 변화, 회전 등에 무관하게 매칭이 가능하다.
대상 영역을 일정한 크기의 셀로 분할하고, 각 셀마다 gradient의 크기(magnitude)가 일정값 이상인 픽셀들을 방향에 따라 히스토그램으로 표현한 것이다.
Gradient
방향을 갖는 벡터 (ex.어두워지는 방향으로 그려지는 화살표)
template matching으로, 물체가 회전된 경우나 형태 변화가 심한 경우 검출이 힘들다.
SIFT는 특징점 간 비교이며, HOG는 영역 간 비교이다.
영역 간의 밝기 차를 이용한 것이다. 다음과 같은 다양한 elementary feature들이 존재하며, 이를 조합하여 물체에 대한 특징을 추출한다.
영역 간의 밝기차가 거의 없는 경우, 적용하기 어렵다.
영역 내부에서의 물체의 형태 변화 및 약간의 위치변화를 어느 정도 커버할 수 있다.
하지만 contrast 변화나 광원의 방향 변화로 인한 영상 밝기 변화에 영향을 받는다.
또한 물체가 회전된 경우에는 검출이 힘들다.
얼굴에 존재하는 landmark를 찾아낸다.
눈과 입이 어디있는지 확인하였으므로, 눈과 입이 최대한 가운데로 올 수 있게 이미지를 조정한다. - 얼굴 위치 교정(Posing)과 투영(Projection)
(python dlib 사용하여 구현 가능)
컴퓨터는 이미지를 흑백으로 처리한 후 특징을 찾기 때문에, 우리가 사람을 구분하는 특징과는 전혀 다른 방식으로 얼굴을 구별한다. 따라서 딥러닝을 이용해 컴퓨터가 스스로 파악하도록 얼굴 구별을 실시한다.
ex. SVM 분류기
openCV는 오픈 소스 컴퓨터 비전 라이브러리 중 하나로, 크로스플랫폼과 실시간 이미지 프로세싱에 중점을 둔 라이브러리이다.
즉, 객체·얼굴·행동 인식, 모션 추적 등의 응용 프로그램에서 사용하는 영상처리에 관한 라이브러리이다.
참고
Haar Cascade Classifier는 특정 형태의 물체를 찾고자 할 때 사용할 수 있는 대표적인 방법 중 하나이다.
다수의 객체 이미지(positive image)와 객체가 아닌 이미지(negative image)를 cascade 함수로 트레이닝시켜 객체 검출을 달성하는 머신러닝 기반 접근방법이다.
얼굴 검출을 위해서는 얼굴이 있는 이미지/없는 이미지를 classifier에 트레이닝시켜
얼굴에 대한 특징을 추출해 데이터로 저장해두어야 한다.
딥러닝 학습은 Cafe, TensorFlow 등의 다른 딥러닝 프레임워크에서 진행하고, 학습된 모델을 불러와 실행할 때는 DNN 모듈을 사용한다.