15
AdaBoost를 이용한 Face Recognition 한국산업기술대학교 인공지능연구실 2007152025 신요섭

Adaboost를 이용한 face recognition

Embed Size (px)

DESCRIPTION

AdaBoost를 이용한 Face Recognition 랩 세미나용이라 디테일하게 모든 정보가 들어있지는 않음. 참고논문 P.Viola & M.Jones, Rapid Object Detection using a Boosted Cascade of Simple Features, 2011 외 다수

Citation preview

Page 1: Adaboost를 이용한 face recognition

AdaBoost를 이용한 Face Recognition

한국산업기술대학교 인공지능연구실

* ᯕ❭ᯝᮡ��3(#�❭ᯝᯕʑ�ভྙᨱ�⪩⟹ᯕḡ�ᱽ᯲ᬊᮝಽอ�ᔍᬊ⧕�⦽݅�

2007152025 신요섭

Page 2: Adaboost를 이용한 face recognition

00Introduction

어떠한 대상을 인식하기 위해서는 먼저 인식할 대상에 대한 특징이 입력되어야 함 대상에 대한 공통적인 특징을 찾아내기 위해서 ‘학습’과정이 필요함

AdaBoost는 이러한 학습과정을 통해 정확한 분류기를 만들기 위한 알고리즘

영상 인식

Page 3: Adaboost를 이용한 face recognition

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

Page 4: Adaboost를 이용한 face recognition

01AdaBoost?

적응형 부스팅 알고리즘

Boosting Algorithm약한 분류기를 반복적으로 이용해 강한 분류기를 만들어내는 알고리즘

Adaptive Boosting Algorithm

잘못 검출된 데이터에 가중치를 주어 정확도를 높이는 부스팅 알고리즘

AdaBoost

Page 5: Adaboost를 이용한 face recognition

01AdaBoost

h 약분류기

α 가중치(신뢰도)

T 분류기의 개수

f(x) 강분류기

Page 6: Adaboost를 이용한 face recognition

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

Page 7: Adaboost를 이용한 face recognition

02Haar Filter

edge

line

4-rectangled

‣ Haar Filter

• Haar Filter를 다양한 크기로 변화시켜 영상에서 비교를 수행

• Haar like Feature 는 검정영역의 밝기와 흰 영역의 밝기 차이를 의미함.

•예를 들어, 필터를 통과한 경우 1, 그렇지 않은 경우 0으로 분류할 수 있음

•필터를 통과한 영상의 부분을 feature라고 지칭함.

•이 feature들은 해당 부분을 인식할 수 있는 하나의 기준이 됨.

Page 8: Adaboost를 이용한 face recognition

02Haar-like Feature

Sub-windowSub-window

•영상의 특징을 검출해내기 위한 feature 선택

edge

line

4-rectangled

24*24 크기의 이미지에서 5개의 필터를 이용하여 학습하기 위한 Sub-window의 개수는 180,000개 이상이고 학습에 매우 오랜 시간이 걸리므로 검출에 필요한 적절한 적은 수의 필터를 선택하는 것은 매우 중요함.

Page 9: Adaboost를 이용한 face recognition

03Integral Image

‣ 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

Page 10: Adaboost를 이용한 face recognition

04Cascading

1 2 3 4T T T

F F F F

T

Reject Sub-window

All Sub-windows

Further Processing

Page 11: Adaboost를 이용한 face recognition

05OpenCV에서 AdaBoost의 활용

‣ feature 학습영상에서 원하는 부분을 검출해내기 위해서는 positive 이미지와 negative 이미지를 이용한 학습을 수행해야 함. -> OpenCV에서 제공되는 createsamples 프로그램 이용

얼굴을 검출하기 위한 Positive 이미지와 Negative 이미지의 예

학습된 데이터는 xml 형식으로 추출됨.

Page 12: Adaboost를 이용한 face recognition

05OpenCV에서 AdaBoost의 활용

‣ 인식OpenCV에는 학습과 인식에 관한 AdaBoost 알고리즘이 모두 라이브러리로 구현되어 있으므로, 학습후 추출된 xml형식의 분류기를 이용하여 비교적 쉽게 원하는 부분을 인식하는 프로그램 제작이 가능함.

Page 13: Adaboost를 이용한 face recognition

05OpenCV에서 AdaBoost의 활용

‣ OpenCV에 기본적으로 포함되어 있는 분류기:

Page 14: Adaboost를 이용한 face recognition

06결론

Viola가 제안한 이 방법은 학습에 시간이 많이 소요된다는 단점이 있으나 그에 반해 인식속도는 굉장히 빠른 방법으로, 실시간으로 영상에서 특징을 검출하기 위해 사용할 수 있는 매우 좋은 방법임. "진행해야 할 프로젝트는 큰 영상에서 얼굴을 검출하고 눈을 검출하는 일련의 과정이 필요하지 않고 오직 영상에서 눈을 검출하고 눈의 감긴정도만을 알아내야 하므로 이 방법을 사용하면 더욱더 빠른 수준의 검출이 가능할 것으로 예상됨. "OpenCV에 학습부터 인식까지의 알고리즘이 전부 라이브러리로 구현되어 있으므로, 적절한 학습데이터를 얻을 수 있다면 인식 자체는 비교적 어렵지 않게 구현할 수 있을 것으로 생각됨.

Page 15: Adaboost를 이용한 face recognition

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, “얼굴인식 기술을 소개합니다!”