졸업작품중간보고서 주제 : 얼굴인식을통한학생출결관리시스템 소속 : 컴퓨터공학부 작성자 : 백인선, 안혜수, 하서희 담담교수 : 이창훈교수님 ( 인 ) 1
목차 1. 개요... 3 2. 개발동기... 3 1) 시장현황 2) 동기 3. 개발목표... 5 4. 관련기술... 6 1) Open CV 2) Haar Like Feature 3) Adaboost 4) Eigen & Fisher Face Face Recognition 5. 세부기능 (Face Detection & Recognition)... 15 1) Face Detection ( 얼굴검출 ) 2) Face Preprocessing ( 얼굴전처리 ) 3) Face Recognition ( 얼굴인식 ) 6. 개발환경... 23 7 개발일정... 23 8 참고문헌... 24 2
1. 개요 담당교수 이창훈교수님 이름 학번 이메일 백인선 201011336 inja923@gmail.com 안혜수 201011342 dolphinhs@naver.com 하서희 201011374 ownurlife@naver.com 주제 얼굴인식을통한학생출결관리시스템 기능 각강의실마다학생관리시스템을설치해시간별수업에대한 출결확인 학생 자신의얼굴등록 입실시간, 퇴실시간체크 자신의출결사항확인 교수 시스템을통한학생출결확인 학생의입실, 퇴실시간을통해지각, 결석확인 학생들의출결사항관리및수정 기술 Open CV Haar Like Feature Adaboost 사용언어 C/C++ 2. 개발동기 1) 시장현황 현재지문, 눈, 얼굴등생체인식을이용한시스템들이시장에많이등장하고있다. 몇년전만해도영화에서나볼수있었던생체인식시스템들이이제는우리가직접접할수있게될것이다. 한국인터넷진흥원에따르면국내생체인식시장규모는 2010 년 866억원에서 2013년 3,500억원으로성장했다고한다. 또한스마트폰등 IT 기기뿐만아니라보안기업에서생체인식기술을적극채택하고있다. 3
특히얼굴인식을통한시스템들이많이늘어나고있는추세이다. 일본에서는공항출입국심사에얼굴인식시스템을도입할것이라밝혔다. 또한얼굴인식을통해그사람의나이, 성별등을분석해음료수를추천해주는스마트자판기도등장하였다. 국내의한기업에서는스마트폰과연동되는보안시스템을선보였다. 이는자녀의안전귀가뿐만아니라범죄예방의효과도있을것으로보인다. 미국 FBI는범죄예방에얼굴인식시스템을도입한다고발표하였다. 하지만이처럼생체인식기술이상용화됨에따른문제점도대두되고있다. 누군가생체정보를임의로바꾸게되면원래주인의새생체정보를등록할수없는문제가발생할수도있다고한다. 또한미국 FBI는 12억의인구의생체정보, 지문, 홍채, DNA 프로필, 음성프로필등을수집하여생체인식데이터베이스를구축한다고밝혔다. 이에따라시민단체와소송을벌이는등사생활정보침해등인권침해등의문제점이나타나고있다. 4
2) 동기 얼굴인식을이용한학생출결관리시스템을하게된이유는보다편리하게출석을관리하면좋겠다고생각하였기때문이다. 인원이많은교양수업의경우교수님이모든학생들의출석을확인하는데너무나오랜시간이걸린다. 또한교수님은출석부르는시간을신경써야하므로수업시간을줄어드는감수를해야한다. 또한쉬는시간에는지각한학생의명단을또확인해야한다. 이런출석확인환경을바꾸고싶었다. 또한출석을부르는중에들어오는학생들의경우이름순서가빠를수록불리하다. 예를들어성이 하 씨인사람은출석을부르는중에들어와도지각처리가안되지만성이김씨일경우항상처음에부르기때문에지각처리가될수도있다. 이처럼교수님의입장과학생의입장에서생각하여이시스템을생각하게되었다. 3. 개발목표 학생출결관리시스템은한강의실에설치한후, 그강의실에서이루어지는모든수업들에대해수강생들의출결상황을체크하여데이터베이스에기록하는시스템이다. 여러수업들마다수강생리스트를만들고, 각수강생들마다입실과퇴실시에얼굴을인식해서그시간이데이터베이스에기록된다. 또한시간별각각의수업에대한정보도저장한다. 학생 모든학생은수업첫시간에본인의얼굴을학생정보시스템에등록한다. 매수업시간마다얼굴인식을통해서입실과퇴실시간을체크한다. ( 퇴실시에도얼굴인식을한후퇴실한다고가정한다.) 학생들은자신의출결상황을데이터베이스에접속해서확인할수있다. 5
교수 교수들은수업시간에출석을부르지않고도얼굴인식시스템으로부터학생들의출결상황을확인할수있다. 출결사항뿐아니라출입시간을확인해서학생의입실과퇴실시간의차이를가지고이학생이지각인지, 결석인지를판단하여출석점수를매길수있다. ( 예를들어학생의입실과퇴실시간의차이가수업시간의 2/3이하이면지각을 1/3이하이면결석처리를줄수있다. ) 교수들은자신의수업의학생들의출결상황을데이터베이스에접속하여확인하고, 수정도가능하다. 4. 관련기술 1) OpenCV(Open Source Computer Vision Library) Open CV는인텔에서개발한실시간영상처리, 컴퓨터비전과기계학습을위한소프트웨어라이브러리로, 컴퓨터가인간처럼 시각 을통해받아들이는정보로다양한기능들을구현할수있도록한다. 오픈소스이면서도 BSD 라이센스하에있기때문에연구및상업용으로이용및변경구현가능하다. 이라이브러리는수많은영상처리와이를통한기계학습알고리즘들을가지고있으며이러한알고리즘들은사람의얼굴을인식및감지, 객체및움직임추적, 전체장면을위한이미지들의연결등을가능하게하고 ( 대표적인예, 스트리트뷰 ), 이미수많은기업들도이용하고있는라이브러리이다. C와 C++ 로구현되어있고 Java, 안드로이드로도구현할수있으며윈도우, 리눅스, 안드로이드그리고 MacOS 모두지원한다. 6
* 관련라이브러리 Cxcore : 영상 / 형렬포함다양한이미지데이터구조지원함수 Cv : 컴퓨터비전, 영상처리주요알고리즘관련함수 Highgui : gui함수, 영상읽기, 창관리, 마우스 / 키보드제어, 카메라 / 동영상처리 Cvcam : 카메라관련입출력, 제어함수 Cvaux : 전문적인컴퓨터비전알고리즘관련함수 Ml : 기계학습알고리즘관련함수 2) Haar-like Feature 실시간얼굴인식을위해이미지에서얼굴의특징을찾는기법중의하나인 Haarlike Feature는, 아래그림과같은사각형흑백영역에대한픽셀값의평균차에의한임계치구분에의해특징을판단, 파악하는기법으로, 연산과정이간단하여빠른얼굴검출에적합하다. 그리고이를기반으로분별력이가장높은특징을선택하여강분류기를학습시키는것이 Adaboost 기계학습알고리즘이다. 영상인식에사용되는영상특징 (feature) 들은특징점을이용한 SIFT, 템플릿매칭을이용한 HOG, 그리고 LBP, MCT등여러가지가있지만, 그중에서도 Adaboost와주로함께쓰이는 Haar-like Feature에대해설명하면, Haar-like Feature은기본적으로영상에서의영역과영역의밝기차를이용한것으로아래있는사각형모양에따른기본 feature들에따라이것들을다수조합하여다양한위치및크기에서물체에대한특징을추출하는방법에해당한다. 위에서설명했듯, 각기본 feature들의특징값은, 사각형의흰색부분영상픽셀들의밝기합에서검은색부분의밝기합을뺀차로계산되며, 영상및이미지검색시에이값이 feature에부여된임계치보다큰지아닌지에따라서파악하고자하는대상물체라고추측하는것이다. 여기에서대상물체인지확신을하기위해서는의미있는 feature들을파악하는것이중요한데, 이는특정영역의인식대 7
상에서는비슷한값들을나타내면서대상이아닌경우에는무작위한값을내는경우를구분하는것과같다. Haar-like Feature을이용한얼굴인식의경우, 눈을예로들면눈의영역은주변보다어두운특징이있기때문에이러한특징은사람얼굴검출에의미있는특징이된다. 그리고이러한의미있는특징의선정은 Adaboost와같은 boosting알고리즘과같은기계학습알고리즘을통해이루어지는것이다. 이처럼 haar-like 특징은아래그림과같은기초 feature에의한물체의기하학적정보를가지면서단위영역의밝기차를이용하기때문에사람얼굴과같은경우에는특징적인밝기차를가지기때문에비교적적용하기적합하다고할수도있는데, 영상에있어대조변화, 광원, 밝기, 및회전도의변화에는영향을받음으로써검출이어려워지기도하는단점을가지고있다. 8
3) Adaboost Adaboost 알고리즘은단순한가설에근거한많은약분류기 (Weak classifier) 을결합하여강분류기 (Strong classifier) 를생성하는방법이다. 약분류기란 random guessing 한것과비슷한수준의결과의분류기를말한다. 여러약분류기를이용하여샘플들을인식하고, 정확히인식된샘플에대해서는가중치를감소시키고, 인식되지않은샘플에대해서는가중치를증가시켜서다음약분류기에반영시킨다. 즉, 가중치가큰필터들부터먼저사용되어얼굴이아닌이미지들을최대한먼저걸러낸후, 가중치가다음으로큰필터순으로사용하게된다. 최종적으로강분류기는각단계에서생성된약분류기들의조합으로구성된다. 9
* Adaboost 훈련 하나의강분류기를만드는과정을 boosting 이라하며강분류기들을 cascade 형태로구 성하여최종적으로 Adaboost 얼굴검출기를만들게된다. Boosting 알고리즘은아래그 림과같이 3 단계로이루어진다. 첫번째로얼굴영상즉 positive sample과비얼굴영상, negative sample로나누어데이터를수집한다. 이데이터를토대로얻은 Haar Feature들중에서만족하는얼굴검출률을얻을때까지반복하여얼굴과비얼굴을구분해낼수있는소수의값들을찾는다. 마지막으로는앞에서찾은 Haar Feature 즉, 약분류기들을모아서하나의강분류기를구성한다. 10
이후강분류기들을 Cascade 형태로연결하여여러단계로구성한 Adaboost 고속얼 굴검출기를구성하는과정은아래의그림처럼 4 단계로이루어진다. 첫번째로전체단계에서의개수및각단계에서의얼굴검출률을미리정한다. 시작단계에서는낮은검출률로시작하게되지만후반단계로갈수록검출률을높인다. 이때각단계에서의얼굴검출률은그단계의강분류기를구성하는약분류기의개수에영향을미치게된다. 두번째로는각단계에서지정된얼굴검출률에도달할때까지 Haar Feature, 즉약분류기를추가하면서하나의강분류기를훈련시킨다. 이렇게하나의단계가완성되면앞의과정을반복하면서다음단계의강분류기를훈련시킨다. 이때이전단계에서훈련에참가했던비얼굴이미지는제외시키고새로운비얼굴이미지를추가하여훈련시킨다. 그리고얼굴이미지인경우앞단계에서구분할수없었던데이터들만다음단계의훈련에참가시킨다. 위의과정을계속반복을하여원하는단계의개수와얼굴검출률을얻을때까지반복훈련을시킨다. 이렇게해서최종적으로 Cascade 형태의얼굴검출용인 Adaboost를구성하게된다. 11
4) Eigen & Fisher Face (Face Recognition) 얼굴인식의방법론은크게 3 가지가있다. 12
전체론적인얼굴인식방법에서얼굴인식시스템의입력은얼굴전체영역을사용한다. 쉽게구현할수있다는장점을가지지만, 얼굴의자세한부분까지고려하지않기때문에충분한결과를얻기는힘든단점이있다. 이중에서주성분분석기반의얼굴인식방법에는 EigenFace(PCA) 와선형판별분석기반의얼굴인식방법인 FisherFace(LDA) 가주로쓰인다. 1) EigenFace - PCA(Principal Component Analysis) PCA 방법은주요한구성요소라불리는아주적은수의관계되지않는변수를약간의관계되는변수로변경을하는수학적인절차를이용한다. 주로얼굴이미지사이에서의핵심특징을식별하기위해많이사용되고있다. 일반적으로 PCA시스템은학습과인식의두가지단계로구성된다. 학습단계에서는얼굴이미지들을하나의집합으로모은뒤 PCA를이용하여고유한값과고유한벡터를찾은후 m개의고유한얼굴을선택하고, 얼굴영역에얼굴이미지를투영한다. 아래의그림은 PCA를이용한얼굴학습단계의과정을보여준다. 13
인식단계에서는각각의새로운얼굴에대하여 PCA 를사용하여학습단계와동일한얼 굴영역에투영한다. 그리고모든알려진얼굴집단의간격을찾게된다. 아래의그림은 PCA 를이용한얼굴인식단계를보여준다. 이 PCA 방법은 Eigenface 와영상인식에응용할수있는데, PCA 가영상인식에활용되는 대표적인예로얼굴인식을들수있다. 그리고이와관련된개념혹은용어로서 Eigenface 가있다. 2) Fisher Face LDA(Linear Discriminate Analysis) LDA를사용하게되면비슷한얼굴이미지들은가깝게모여서투영되면다른얼굴이미지들은위치가아주먼곳에투영된다. 또한서로다른부류의얼굴이미지들은모두섞어서투영된다. Fisher판별분석이라고도불리는선형판별분석은클래스사이분포 (between-class) 와클래스내분포 (within-class) 의비율을극대화하여사용한다. 이러한결과로아래의그림과같이동일한얼굴이미지들은가깝게이동시키고, 서로다른얼굴이미지들은멀게이동시킨다. 14
투영하는방법은다음과같다. 첫번째로얼굴이미지는 PCA방법을통하여얼굴의부분영역에투사된다. 두번째로 PCA투영벡터들은부분공간안에선형분류를만들기위하여 LDA를사용하여투영된다. 마지막으로 LDA방법의고유한값에의해유도된측정가중거리를기반으로국부영역에대한성능을개선시켜활용하게된다. 아래의그림은 LDA방법의전체처리과정을보여준다. 15
5. 세부기능 (Face Detection & Recognition) 현재까지구현된얼굴인식프로그램 1) Face Detection ( 얼굴검출 ) 이프로그램의주요기능인얼굴인식의첫번째단계인얼굴검출의과정에서는웹캠을받아와사람의얼굴을찾아낸다. 얼굴검출의알고리즘의위에서언급한 Haar Like Feature를이용한검출방식을이용할것이다. 그리고얼굴뿐만아니라좀더정확한얼굴판별을위하여눈검출분류기도사용한다. OpenCV에서는얼굴특징검출분류기로눈, 코, 입, 눈썹등의검출기를제공하여준다. 하지만이프로그램에서는눈검출기를사용할것이다. 정면얼굴을검출할시눈은항상수평을유지하고, 다른환경변화에도눈은거의표준을유지하기때문에다른특징점검출보다더유용하다. Face Detector Eye Detector Eye Detector (with glasses) haarcascade_frontalface_alt_tree.xml haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml 16
OpenCV 에서제공하는위의세가지 Haar 분류기 XML 파일을 CascadeClassifier 함 수를통해불러온다. 이를통해검출된얼굴은전처리기과정을거쳐얼굴인식을수행 하기위한형태의이미지파일로변환한다. 2) Face Preprocessing ( 얼굴전처리 ) 얼굴인식은조명, 얼굴의방향, 얼굴의표정등의변화에대해매우취약하다. 그렇기때문에더좋은얼굴인식결과를얻기위해서는이러한차이들을없애주어야한다. 그렇지않으면얼굴인식의알고리즘은같은사람의얼굴을찾는것이아니고, 가장비슷한환경에놓여있는얼굴들을같은얼굴이라고인식해버릴수도있다. 전처리기과정은크게 4가지로나눈다. 1기하학적변형및다듬기 2왼쪽, 오른쪽의히스토그램균등화과정 3스무딩과정 4타원형의마스크과정 1기하학적변형및다듬기 (Geometrical Transformation) 이과정은얼굴이정면을향하도록변형해주는단계이다. 얼굴이잘정렬이되어있어야얼굴인식알고리즘이정확한특징점을찾아인식할수있기때문이다. 얼굴검출단계에서잘정렬된얼굴을리턴하는것같지만정확하지는않기때문에이과정을수행한다. 더정확한정렬을위해서눈검출을이용하여두눈이정확히수평이되도록얼굴을회전한다또한두눈사이의거리가항상같도록얼굴을축소시킨다. 이후얼굴이미지에서배경, 머리, 이마, 귀, 턱은잘라낸다. 2 왼쪽, 오른쪽의히스토그램균등화과정 (Histogram Equalization) 얼굴인식은조명의영향을많이받는다. 특히조명에따라왼쪽얼굴과오른쪽얼 17
굴이전혀다른얼굴처럼보일수있다. 그러므로더표준화된밝기와대조값을얻기 위해서얼굴의왼쪽과오른쪽을나누어서히스토그램균등화를시켜준다. 히스토그램균등화 (Histogram Equalization) 히스토그램이란영상안에서각레벨을가지는화소의개수 ( 빈도 ) 를그래프형식으로나타낸것이다. 서로다른조건에서생성된두영상을비교하기위해서는영상을정규화시켜야한다. 즉, 두개의영상이동일한히스토그램을갖도록만든다. 각영상의히스토그램을그레이스케일전구간에서골고루나타나도록변경하여준다. 히스토그램균등화과정은첫번째로원영상의히스토그램을생성하여준다. 이후에이히스토그램의값들을정규화하여누적합을계산한다. 누적된합을반올림하여수치화한후그값들을이전영상의위치에매핑하여준다. 그렇게하면원영상에비해균등화분포를가진히스토그램을얻을수있다. 히스토그램균등화과정을통하면어두운영상은밝게, 또너무밝은영상은조금어둡게하는등적당한명도값을유지하게해준다. OpenCV에서는히스토그램균등화를시키는 equalizehist() 함수를제공한다. 왼쪽과오른쪽을나누어서히스토그램균등화를시켜주면경계선이생기게된다. 그러므로히스토그램균등화를왼쪽에서중심쪽방향으로, 또는오른쪽에서중심쪽방향으로향하도록수행하여준다. 그리고전체얼굴을히스토그램평등화시킨이미지까지, 세개의이미지를결합하여준다. 18
3스무딩과정위의히스토그램균등화까지수행하게되면이미지의픽셀노이즈가증가할수도있다. 이픽셀노이즈를감소시키기위해스무딩과정이필요하다. 이과정에서는 Bilateral Filter를사용한다. Bilateral Filter는이미지를매끈하게만들어주면서경계선을뚜렷하게해주는필터이다. 이필터는 OpenCV에서 bilateralfilter() 함수를제공하여준다. 4타원형의마스크과정위의기하학적변형과정에서이미배경이미지등은제거를했지만이미지의코너부분의그림자때문에인식과정에서문제가생길것을방지하여타원형의마스크를씌워주는과정을수행한다. 이과정은스무딩까지된이미지에타원을그려정면을향하는얼굴만을추출한다. OpenCV에서제공하는 ellipse() 함수와 setto() 함수를이용하여타원을그릴수있다. 19
3) Face Recognition ( 얼굴인식 ) 본프로그램은 5가지작동모드를가지고영상인식및처리를수행하여얼굴검출및인식을최종수행한다. 기본적인순서적제어흐름은검출, 이미지수집, 기계 ( 분류기 ) 학습, 그리고인식순으로진행된다. 5가지작동모드는 1시작모드 2검출모드 3수집모드 4학습모드 5인식모드로나누어진다. 1시작모드시작모드에서는 Haar 분류기를통해이용할얼굴의검출, 그리고인식 (Fisherface) 처리기를불러온다. 또한초기화작업과카메라의영상초기화를하며해상도를설정한후검출모드를시작한다. 2검출모드프로그램시작이후의기본모드로서얼굴을검출하고검출되었음을실시간으로사용자에게보여주기위해사각형과원형을검출된얼굴과눈동자에각각표현하여준다. 인식된얼굴에대한실시간전처리된이미지를중앙상단에출력함으로써사용자에게보여준다. 얼굴검출은기본적으로 OpenCV에서제공하는 Haar 검출에대한 detectmultiscale() 함수를이용한다. 20
검출모드출력예시 3수집모드수집모드는얼굴검출이후에향후얼굴인식을위한기계학습용이미지데이터를수집하고축적한다. 학생추가버튼을누를경우수집모드로전화되어새로운사람을기본학생데이터리스트에추가한다. 실시간영상인식에의하여새로운학생의이미지정보를수집할경우, 흡사한이미지정보들을얻는것을피하기위하여초당, 그리고이전이미지로부터확연한변화가있는이미지가인식될경우에만이미지데이터로간주하여수집하게된다. 수집모드에서는정상적으로전처리가된얼굴이미지뿐만아니라, 더많은이미지데이터를수집하고기계학습에사용하기위해좌우반전된이미지도수집한다. 수집모드화면예시 4 학습모드 21
학습모드는수업에등록된학생들의축적된얼굴이미지데이터들을기반으로한기계학습모드이다. 얼굴검출과정에의해수집된각각의학생들의모든얼굴이미지들을기반으로얼굴인식처리기가학습을시작한다. 이프로그램에서이용하고있는얼굴인식기계학습기법인 Fisherface는수집된데이터에대한각각의사람들을상호비교한다. 그러므로 2명이상의데이터가수집된경우에만정상동작하므로최소 2명이상의얼굴데이터가모아진것을전제로한다. 얼굴인식기법에따른충분한데이터가수집된경우기계학습을수행한후에인식모드로변경한다. 그렇지못할경우다시이미지수집모드로변경하게된다. 5인식모드인식모드는출결체크를하는학생이카메라에등장했을경우등록된학생인지인식하는모드이다. 카메라에사람이등장할경우, 그사람에대한전처리된이미지를얻은후에기존에등록되어있는이미지리스트와비교하여가장유사한학생을찾아낸다. 찾은데이터와그사람에해당하는예측의정확도를계산하여준다. 정확도가최소임계값이상일경우해당사람으로인식한것으로인정하여출결사항을승인하여준다. 이예측을하는함수는 OpenCV에서제공하는 model->predict() 함수를사용한다. 정확도예측과정에서새로등장한사람에대한이미지를기존에수집된이미지들과 Reconstruction 과정을거친다. 이후 Reconstruct 된이미지와새로등장한사람의이미지를비교하고그유사도산출값을기반으로예측도를측정한다. 이미지의 reconstruct 과정은 OpenCV에서제공하는얼굴인식기의기본제공함수인 subspaceproject() 와 subspacerecontruct() 를이용한다. 22
6. 개발환경 - 시스템 : Microsoft Windows 8.1 - 개발언어 : C++ - 개발툴 : Visual Studio 2010 ( MFC GUI Library) 7. 개발일정 6 월 7 월 8 월 9 월 10 월 11 월 1/2 주 3/4 주 1/2 주 3/4 주 1/2 주 3/4 주 1/2 주 3/4 주 1/2 주 3/4 주 1 주 영상구조및카메라처리방식파악이미지분석및특징추출기법파악가상유저요구사항파악및설계얼굴인식모듈구현 얼굴인식모듈을이용한 출석체크프로그램구현 DB 연동및샘플데이터 학습 데모구현및테스팅 / 디버깅 정확도향상 디버깅및추가기능구현 최종완성및시연 23
8. 참고문헌 네이버뉴스, 얼굴인식시스템, http://news.naver.com/main/search/search.nhn?query=%be%f3%b1%bc%c0%ce%bd%c 4+%BD%C3%BD%BA%C5%DB&x=0&y=0 네이버카페, Open CV Korea, http://cafe.naver.com/opencv CCTV뉴스, 줌인 2012년 8월호, CCTV 영상에서의얼굴검출기술소개, http://www.cctvnews.co.kr/atl/view.asp?a_id=1827 논문, Haar-like feature/ LDA 를이용한얼굴인식 - 박성훈, 이재호, 김회율 - 한양대학교전자통신전파공학부영상공학연구실 논문, 객체검출을위한빠르고효율적인 Haar-Like 피쳐선택알고리즘 - 정병우, 박기영, 황선영 한국통신학회 Open CV, http://opencv.org/about.html Wiki Docs, Open CV, https://wikidocs.net/966 My Daily note about IT Study, Open CV, http://dailyitstudy.blogspot.kr/2013/03/1- opencv.html 다크프로그래머블로그, Haar Feature, http://darkpgmr.tistory.com/116 Life is Movie 블로그, Haar Feature, http://sijoo.tistory.com/75 Shervin Emami, Mastering OpenCV with Practical Computer Vision Projects, Packt Publishing, 2012 (Chapter 8) 24