AdaBoost를 이용한 Face Recognition
랩 세미나용이라 디테일하게 모든 정보가 들어있지는 않음.
참고논문
P.Viola & M.Jones, Rapid Object Detection using a Boosted Cascade of Simple Features, 2011 외 다수
2. 00Introduction
어떠한 대상을 인식하기 위해서는 먼저 인식할 대상에 대한 특징이 입력되어야 함
대상에 대한 공통적인 특징을 찾아내기 위해서 ‘학습’과정이 필요함
AdaBoost는 이러한 학습과정을 통해 정확한 분류기를 만들기 위한 알고리즘
영상 인식
3. 00Introduction
P.Viola & M.Jones
Rapid Object Detection using a Boosted Cascade of Simple Features, 2011
P.Viola & M.Jones
Robust Real-Time Face Detection, 2004
4. 01AdaBoost?
적응형 부스팅 알고리즘
Boosting Algorithm
약한 분류기를 반복적으로 이용해 강한 분류기를 만들어내는 알고리즘
Adaptive Boosting Algorithm
잘못 검출된 데이터에 가중치를 주어 정확도를 높이는 부스팅 알고리즘
AdaBoost
6. 01AdaBoost
"
t=1;"
강분류기 f(x) = empty;"
"
while (1 to T) {"
과정1) 모든 약분류기에 대해, 모든 학습 샘플들을 테스트한다."
과정2) 최소 에러를 보였던 약분류기 ht 를 선택한다."
과정3) 과정 1, 2에 근거하여 약분류기의 가중치 wt를 계산한다."
"
과정4) 강 분류기를 다음과 같이 업그레이드 한다."
새 강분류기 = 이전 단계의 강분류기 + wt * ht"
"
과정5) 모든 학습 샘플에 대해 강분류기의 정확도 테스트."
과정6) t++"
}"
‣ Adaboost process
7. 02HaarFilter
edge
line
4-rectangled
‣ Haar Filter
• Haar Filter를 다양한 크기로 변화시켜 영상에서 비교를 수행
• Haar like Feature 는 검정영역의 밝기와 흰 영역의 밝기 차이
를 의미함.
• 예를 들어, 필터를 통과한 경우 1, 그렇지 않은 경우 0으로 분
류할 수 있음
• 필터를 통과한 영상의 부분을 feature라고 지칭함.
• 이 feature들은 해당 부분을 인식할 수 있는 하나의 기준이 됨.
8. 02Haar-likeFeature
Sub-windowSub-window
• 영상의 특징을 검출해내기 위한 feature 선택
edge
line
4-rectangled
24*24 크기의 이미지에서 5개의 필터를 이용하여 학습
하기 위한 Sub-window의 개수는 180,000개 이상이고
학습에 매우 오랜 시간이 걸리므로 검출에 필요한 적절
한 적은 수의 필터를 선택하는 것은 매우 중요함.
9. 03IntegralImage
‣ Integral Image (적분영역)
• 영상에는 무수히 많은 영역이 존재 (24*24픽셀의 영상에 5가지의 Haar 필터를 적용한
다면 영역의 수는 180,000개에 달함)
• Haar Filter를 계산할때마다 이러한 영역의 픽셀 수를 일일이 계산한다면 연산 시간이
상당히 오래 걸리므로 각 점에서의 적분영역을 미리 계산해 두어 연산 시간을 줄임.
D 영역의 픽셀 수 :
(A+B+C+D) - (A+B) - (A+C) +A
A B
C D
P4
P1 P2
P3
0
10. 04Cascading
1 2 3 4
T T T
F F F F
T
Reject Sub-window
All Sub-windows
Further
Processing
11. 05OpenCV에서AdaBoost의활용
‣ feature 학습
영상에서 원하는 부분을 검출해내기 위해서는 positive 이미지와 negative 이미지를 이
용한 학습을 수행해야 함. -> OpenCV에서 제공되는 createsamples 프로그램 이용
얼굴을 검출하기 위한 Positive 이미지와 Negative 이미지의 예
학습된 데이터는 xml 형식으로 추출됨.
14. 06결론
Viola가 제안한 이 방법은 학습에 시간이 많이 소요된다는 단점이 있으나 그에 반해 인식
속도는 굉장히 빠른 방법으로, 실시간으로 영상에서 특징을 검출하기 위해 사용할 수 있는
매우 좋은 방법임.
"
진행해야 할 프로젝트는 큰 영상에서 얼굴을 검출하고 눈을 검출하는 일련의 과정이 필요
하지 않고 오직 영상에서 눈을 검출하고 눈의 감긴정도만을 알아내야 하므로 이 방법을 사
용하면 더욱더 빠른 수준의 검출이 가능할 것으로 예상됨.
"
OpenCV에 학습부터 인식까지의 알고리즘이 전부 라이브러리로 구현되어 있으므로, 적
절한 학습데이터를 얻을 수 있다면 인식 자체는 비교적 어렵지 않게 구현할 수 있을 것으로
생각됨.
15. 07Reference
[1] P.Viola & M.Jones, Rapid Object Detection using a Boosted Cascade of Simple Features, 2011
[2] P.Viola & M.Jones, Robust Real-Time Face Detection, 2004
[3] 정병우 & 박기영, 객체검출을 위한 빠르고 효율적인 Haar-Like 피쳐 선택 알고리즘, 2013
[4] 정종률 & 최종욱, AdaBoost 학습을 이용한 얼굴 인식, 2003
[5] http://heidi88.blogspot.kr/2014/01/boosting.html, “Boosting 알고리즘”
[6] http://en.wikipedia.org/wiki/Haar-like_features, “WIKIPEDIA: Haar-like features”
[7] http://blogs.burnsidedigital.com/2009/04/using-haar-cascades-and-opencv-in-as3/, “Using
Haar Cascades and OpenCV in AS3"
[9] http://hlena33.blog.me/30025530042, “AdaBoost로 XML만드는 방법입니다”
[8] http://cafe.naver.com/opencv/28587, “초보자도 이해할만한 AdaBoost 설명”
[10] http://readme.skplanet.com/?p=4308, “얼굴인식 기술을 소개합니다!”