Journal Search Engine

View PDF Download PDF Export Citation Korean Bibliography PMC Previewer
The Journal of The Korea Institute of Intelligent Transport Systems Vol.11 No.4 pp.131-143
DOI : https://doi.org/10.12815/kits.2012.11.4.131

A Study on Drowsy Driving Detection using SURF

Na-Ri Choi*, Ki-Ho Choi**
*Main author: Master of Computer Science and Engineering, Graduate School of Kwangwoon University
**Corresponding author: Professor of Computer Science and Engineering, Kwangwoon University
20120731 │ 20120821 │ 20120823

Abstract


In this paper, we propose a drowsy driver detection system with a novel eye state detection method that is adaptive to various vehicle environment such as glasses, light and so forth using SURF(Speed Up Robust Feature) which can extract quickly local features from images. Also the performance of eye state detection is improved as individual three eye-state templates of each driver can be made using Bayesian inference. The experimental results under various environment with average 98.1% and 96.1% detection rate in the daytime and at night respectively and those in the opened ZJU database with average 97.8% detection rate show that the proposed method outperforms the current state-of-the-art.



SURF를 이용한 졸음운전 검출에 관한 연구

최 나 리*, 최 기 호**
*주저자 : 광운대학교 대학원 컴퓨터공학과 공학석사
**교신저자 : 광운대학교 전자정보공과대학 컴퓨터공학과 교수

초록


본 논문은 지역적 특징을 빠르게 추출할 수 있는 SURF(Speed Up Robust Features) 알고리즘을 이용해 안경과 조명 등 자동차 환경에 적응적인 새로운 눈 상태 검출방법을 제안하였다. 또한, 베이지안 추론을 이용하여 각 운전자에 대해 세 가지 고유의 눈 상태 템플릿을 실시간적으로 생성함으로써 눈 상태 검출 성능을 향상시켰다. 주·야간, 안경 착용 시, 미 착용 시 등 여러 환경에 대한 성능 실험 결과 주·야간 환경에서 각각 평균 98.1%와 96.0%의 검출률을, 공개된 ZJU데이터 베이스에 대한 실험 결과 평균 97.8%의 검출률을 보임으로써 제안된 방법의 우수성을 보였다.



    Ⅰ. 서 론

    졸음운전을 검출하기 위한 방법으로는 운전자에 게 의료장치 같은 어떠한 특별한 장치의 물리적인 접촉이 요구되는 강제적인(intrusive) 방법과 직접적 인 물리적 접촉이 없는 비강제적인(non-intrusive) 방 법으로 나눌 수 있다[1]. 비강제적인 방법에는 대표 적으로 운전자의 머리나 눈꺼풀의 움직임, 하품할 때의 입 모양 등의 이미지에 기초하여 특징을 분석 하는 운전자 이미지 특징 분석 방법이 있다[2,3]. 이 와 같은 방법은 강제적인 방법보단 정확도가 다소 낮을 수 있지만 비강제적 형태로써 실현이 용이하 다는 장점을 지니고 있다. 이때, 운전자의 이미지 특징 중에서도 눈꺼풀의 움직임을 통한 눈 깜빡임 지속시간의 분석은 졸음을 판단하기에 가장 신뢰할 수 있는 방법으로써 많은 연구가 활발히 이루어지 고 있는 추세이다.

    이에 Sigari[4]는 눈의 윗 꺼풀과 아래 꺼풀 간의 거리를 수평선분의 그레이 레벨을 이용해 계산하여 눈의 뜨고 감은 상태를 판단하는 방법을 제안하였 고, Tabrizi 등[5]은 운전자의 눈 영역에서 동공에 해 당하는 부분의 픽셀 수를 통해 눈 상태를 판단하는 방법을 제안하였다. 이러한 방법들은 동공의 크기 나 눈꺼풀의 가장자리를 쉽게 검출하기 위하여 선 명하고 양질의 이미지사용이 요구되는데, 실제적으 로 자동차 환경에서 카메라를 통해 입력되는 이미 지는 대부분 저해상도이고 주변 환경 변화에 따라 선명도가 낮아지기 때문에 실제 동공의 크기나 눈 꺼풀의 가장자리를 정확히 계산하기가 매우 힘들 다. 또한, Danisman 등[6]은 수평 대칭 패턴을 이용 하여 뜬 눈의 수평축을 기준하여 위와 아래의 이미 지 차이값으로 뜬 눈과 감은 눈의 상태를 구분하였 는데, 이와 같은 방법 역시 자동차 환경에서는 대칭 의 기준이 될 정확한 수평 라인의 계산이 힘들다. 특히, 앞서 말한 방법들은 운전자가 안경을 착용했 을 경우에 더욱 계산이 힘들고 많은 오차를 갖는다 는 제한점이 있다.

    결국 눈꺼풀의 움직임을 통한 방법이 신뢰도가 높은 판단 방법임에도 불구하고 운전자의 안경 착 용이나 조명, 자세, 카메라 품질 등의 환경적인 변 수 발생으로 정확도가 떨어지는데, 이는 여전히 극 복해야 할 점으로 남아있다. 또한, 영상은 본래 자 세나 악세사리, 조명, 주변 환경에 따라 그 특징이 모두 다르게 나타나기 때문에 이 모든 변수에 대해 적응적인 실시간 영상 인식 방법이 요구된다. 따라 서 본 논문에서는 이러한 여러 변수들에 대한 적응 적인 검출과 제한점들의 극복을 위해 지역적 특성 에 강인한 SURF(Speed Up Robust Features) 알고리 즘을 이용하여 안경과 조명, 기타 자동차 환경에 강 인한 운전자 졸음 검출 모델을 제안한다.

    논문의 구성은 Ⅰ장 서론에 이어 Ⅱ장에서는 PCA (Principal Component Analysis)와 SURF 알고리즘에 대해 설명하며, Ⅲ장에서는 SURF 특징점 매칭을 이용한 졸음 검출 모델을 제안하고, Ⅳ장에서는 실험 및 고찰, Ⅴ장에서 결론을 맺도록 한다.

    Ⅱ. PCA 및 SURF 알고리즘

    1. PCA 알고리즘

    PCA는 주성분 분석의 학습 과정을 통해 각 학습 얼굴들에 대한 고유얼굴 즉, 고유벡터(eigenvector)를 얻는데, 고유벡터는 영상의 형태를 가장 두드러지 게 표현하여 특징화한다. 이때, 눈의 위치를 정규화 한 영상을 사용하면 눈의 형태가 정교한 고유벡터 를 얻을 수 있다. 이러한 이유로 정규화과정을 거쳐 학습후보 얼굴 벡터집합을 정의한 후, 학습시킬 얼 굴영상 집합들의 평균 얼굴벡터를 얻는다. 그리고 각 학습후보 얼굴 벡터와 평균 얼굴벡터의 차 벡터 를 구하여 학습후보 얼굴벡터로부터 평균을 뺀 것 들의 공분산 행렬을 구한다. 이러한 학습과정을 통 해 얻은 평균 영상과 공분산 행렬로 눈의 위치가 정규화된 고유벡터를 얻을 수 있다. 따라서 학습 단 계에서 두 눈을 기준으로 정규화된 영상들로부터 고유벡터를 추출해 놓고[7], 이와 같이 추출한 고유 벡터를 이용하여 눈 영역을 추출한다. 한편, 학습단 계에서 정규화과정을 진행하여 눈의 형태정보에 강 한 고유벡터를 얻었지만 눈의 형태정보에 강한 고 유벡터만으로는 인식단계에서 눈 영역의 위치를 확 실하게 추출해 내긴 불가능하다. 이러한 이유로 눈 후보영역 선정을 위해 J.W.Kim[8]이 사용한 방법에 따라 컬러 영상일 경우 식 (2.1)과 같이 휘도성분의 정규화를 거친 후,

    r = 255 R R + G + B , g = 255 G R + G + B
    (2.1)

    다음 식 (2.2)에 따른 색상변환을 통해 확실한 눈 영역의 위치를 추출하는 방법을 사용한다.

    Z ( x , y ) = G ( r ( x , y ) , g ( x , y ) ) = 1 2 π σ r σ g e 1 2 [ { r ( x , y ) m r σ r } 2 + { g ( x , y ) m g σ g } 2 ]
    (2.2)

    식 (2.2)에서 Z(x,y) 는 색상 변환을 거친 결과를 의미하며, G(r(x,y),g(x,y)) 는 2차원 가우시안 함 수를 나타내는데 이때, r(x,y) 와 g(x,y) 는 각각 정 규화된 색상 공간에서 입력 영상의 r성분과 g성분 을 의미한다.

    전처리를 통해 얻는 눈 후보영역을 대상으로 라 벨링을 하는데, 크기순으로 라벨들을 배열한 후 차 례로 두 개를 선택하여 이를 눈으로 가정한다.

    이때, 눈으로 가정한 라벨의 얼굴 영상은 학습과 정에서와 동일한 방법으로 정규화하여 사용한다. 정규화된 입력 영상은 학습과정에서 미리 추출한 고유벡터에 의해 재구성하여 눈의 위치를 확정하는 데, 식 (2.3)과 같이 유클리디안 거리를 이용하여 입 력 영상 Γ 와 이를 재구성한 영상 Γ ^ 간의 거리값 중 거리값 ε2이 가장 작은 눈 후보영역이 올바른 눈 영역을 기준으로 정규화 되었다고 판단하여 눈의 위치를 확정한다[7].

    ε 2 = Γ Γ ^ 2
    (2.3)

    2. SURF 알고리즘

    영상의 특징을 추출하는 방법 중 Lowe에 의해 제 안된 SIFT(Scale Invariant Feature Transform)의 많은 연산 시간을 개선하기 위해 H. Bay[9]는 SIFT에서 제안하는 알고리즘을 그대로 사용하면서 경제적인 방법으로, 각 기능들의 연산속도를 빠르게 하여 실 시간 활용이 가능한 SURF를 제안하였다.

    SURF 알고리즘의 특징점 추출 방법은 크게 세 단계로 구성되어지는데, 첫 번째 단계로 헤이시안 검출기를 근사화하여 얻은 사각 2차 미분 필터를 이용해 영상에서의 후보 특징점(edge)을 얻고, 후보 특징점의 안정성을 검사하여 특징의 위치를 보정한 다. 이때, 헤이시안 검출기는 다음 식 (2.4)와 같이 라플라시안 형태로 근사화된 헤이시안 행렬식을 기 반으로 구성되어 있다.

    H ( x , y , σ ) = [ L x x ( x , y , σ ) L x y ( x , y , σ ) L x y ( x , y , σ ) L y y ( x , y , σ ) ]
    (2.4)

    식 (2.4)에서 Lxxx위치의 입력 영상 화소값과 σ의 분산을 갖는 라플라시안의 가로 방향 2차 미 분 값을 의미하고, Lyy는 세로 방향으로의 2차 미 분, Lxy는 대각 방향으로 미분된 라플라시안 필터 의 값을 의미한다. 다음 <그림 3>는 헤이시안 행렬 식으로부터 근사화된 xx, yy, xy 방향의 라플라시안 필터를 나타낸다.

    헤이시안 검출기에서 근사화된 라플라시안 필터 를 이용하여 영상에서의 후보 특징점을 검출할 때 수행되는 컨볼루션의 합 연산을 줄이기 위해 SURF 에서는 적분 영상을 사용한다. 적분 영상을 효율적 으로 활용하기 위해 라플라시안 필터로 근사화된 헤이시안 행렬식을 사용하지 않고, 이 라플라시안 필터 형태를 이진화하여 <그림 4>와 같이 이진화된 사각 필터(사각 2차 미분필터)로 근사화한 헤이시 안 행렬식을 사용한다.

    이러한 사각 2차 미분필터를 적용한 결과값을 식 (2.5)에 대입하여 헤이시안 행렬식을 구할 수 있다.

    det ( H a p p r o x ) = D x x D y y ( D x y ) 2
    (2.5)

    위의 식 (2.5)에서 det(Happrox) 는 헤이시안 행렬 식의 근사값이고, Dxx, Dyy, Dxy 는 가로, 세로, 대 각선 방향의 근사화된 사각 2차 미분필터의 컨볼루 션 결과값을 나타낸다. 다음으로 1단계를 통해 얻 어진 키포인트의 강도와 방향을 결정하기 위해 하 알-웨이블릿(Haar-wavelet)을 이용하여 강도와 방향 을 포함한 벡터 공간을 생성한다. 그 후 키포인트 주변의 관심 기술자들을 찾고, 이 관심 기술자들을 통해 키포인트의 주된 강도와 방향을 결정한다. 즉, 가로 방향의 하알-웨이블릿 특징 dx와 세로 방향의 하알-웨이블릿 특징dy를 계산하고, 여기서 dxdy 의 합에 의해 특정 방향을 가리키는 합 벡터를 구 한다.

    이때, <그림 5>에서와 같이 합 벡터가 가장 많이 가리키는 방향으로 키포인트의 주방향이 결정되며 이 합 벡터가 가장 많이 가리키는 방향 내에 속한 관 심 기술자들을 모두 합하여 키포인트의 강도로 결정 한다. 마지막 세 번째 단계로 키포인트가 영상의 회 전과 크기 변화에 불변한 지역적 특성을 가질 수 있 도록 키포인트 주위에 있는 그래디언트를 서술하여 서술자(descriptor)의 집합을 생성한다. <그림 6>과 같이 서술자를 추출하기 위해서 너비가 키포인트 강도의 1/2이 되는 사각 윈도우(area)를 구성한다.

    각각의 작은 윈도우 내에 있는 모든 픽셀의 주변 화소값 차이를 통하여 방향 성분을 나타내기 위해 하알-웨이블릿을 작은 윈도우 영역에 적용한다. 이를 통하여 식 (2.6)과 같은 형태로 영역 내 모든 픽셀의 방향 성분을 추출한다.

    υ = [ Σ d x , Σ d y , Σ | d x | , Σ | d y | ]
    (2.6)

    최종적으로 추출된 모든 픽셀의 방향 성분을 더 하여 하나의 작은 윈도우에 합한 다음, 지역적 방향 성분과 강도를 구한 뒤 큰 윈도우에 히스토그램으로 취합하여 지역적 특성을 서술한다.

    Ⅲ. 졸음 검출 시스템 구성

    본 논문에서는 실용성의 저하와 운전자의 안경 착용이나 주변 환경, 자세, 카메라 품질, 자동차 환 경 변수들의 제한점들을 적응적으로 극복하고, 정 확한 운전자의 눈 상태 검출을 위해 지역적 특징을 빠르게 추출할 수 있는 SURF 알고리즘을 이용하여 특징점 매칭으로 눈의 상태를 판단하는 새로운 방 법을 제안한다. 또한, 각 운전자에 대해 상대적인 고유 템플릿 생성을 위해 베이지안 추론을 이용하 여 각 세 가지 눈 상태의 템플릿을 실시간으로 생 성하는 방법을 제시한다. <그림 7>은 제안하는 운 전자 졸음 검출 시스템에 대한 개략적인 흐름도를 보여주고 있다.

    1. 얼굴 영역과 눈 영역 검출

    운전자의 졸음을 검출하기 위해 눈 영역 템플릿과 현재 입력 영상에서 추출된 눈 영역 간에 특징점 매칭을 이용하여 판단한 눈 상태를 기반으로 졸음 여부를 판단한다. 그러므로 눈 상태를 판단하기 위 해서는 각 프레임의 입력 영상에서 운전자의 눈 영 역만 검출하는 선행과정이 필요하다.

    먼저, 정확하고 효율적인 눈 영역 검출을 위해 입력 영상 전체에서 얼굴 영역을 우선적으로 검출 한다. 얼굴 영역을 검출하기 위해 프론더와 샤피어 의 AdaBoost 알고리즘[10]을 사용하였는데, 이는 실 시간 얼굴 영역 검출에 뛰어나며 거리나 조명 등 자동차 환경에서 강인한 검출을 발휘하기 때문이 다. AdaBoost 알고리즘은 하나의 특징만을 선택하 도록 설계된 약한 분류기를 선형적으로 결합하여 최종적으로 계층적 구조를 갖는 강한 분류기를 생 성하는 것을 기본 원리로 한다.

    한편, 정확한 눈 영역 검출을 위해 J.W.Kim이 사 용한 PCA알고리즘[8]으로 눈 후보영역을 선정한 후, 이를 기반으로 눈 영역을 검출한다. 입력 영상 에서 즉시로 눈 영역을 검출하지 않고 얼굴 영역을 먼저 검출하는 과정을 보이는데, 이러한 과정은 AdaBoost 알고리즘은 합의 연산만 수행하기 때문에 PCA보다 연산이 가볍다는 점을 이용해 얼굴 영역 을 우선적으로 추출해 내면, PCA의 연산 영역이 입 력 영상 전체에서 얼굴 영역 내의 범위로 줄어들기 때문에 좀 더 빠른 연산이 가능하고 또한, 눈의 형 태가 정교한 고유벡터 추출을 위해 얼굴 영역을 일 정한 눈 영역 위치에 맞게 정규화하기가 수월하기 때문이다.

    2. 눈 상태 검출

    1) 눈 상태 정의

    현재 운전자의 눈 상태를 검출하는 것은 졸음을 검출하는데 있어서 가장 기본적이고 중요한 과정이 다. 눈의 상태를 검출하기 위해 눈의 상태를 뜬 눈, 반쯤 뜬 눈, 감은 눈의 세 가지 상태로 나누었다. 이때, 반쯤 뜬 눈은 뜬 눈과 감은 눈을 분류하기위한 기준이 된다. 이러한 기준을 정하기 위해 운전면허 취득이 가능한 만 19세 이상 성인 남녀 50명에게 설문하였다. 뜬 눈의 상태를 20% 미만, 20% ~50%, 50% ~70%, 70% 이상으로 내역을 세분하여 눈을 떴을 때 몇 %부터 보이는지 조사하였는데, 결과는 <표 1>과 같다.

    설문조사 결과, 전체 인원의 4%인원만 20%미만 으로 감아도 보인다고 응답하였으므로 눈을 떴다고 볼 수 있는 최소한의 기준을 20%로 정하였다. 조사 결과에 의거하여 20 ~100%의 뜬 눈을 open 상태, 20%정도의 뜬 눈을 half 상태, 20%미만으로 뜬 눈 부터 완전히 감은 눈까지를 close 상태로 정의하였 다. 따라서 half로 판단된 입력 프레임에 대해 open 상태로 재정의하고 이러한 기준에 따라 현재 입력 되는 프레임과 비교할 템플릿을 생성한다.

    2) 눈 상태 템플릿 생성

    눈 상태 템플릿은 운전자가 운전을 시작한 시점 부터 2분 동안 들어오는 입력 영상을 대상으로 템 플릿을 생성한다. 이는 운전 좌석에 앉아 운전을 시 작하는 순간부터 곧바로 졸기 시작하는 사람은 없 기 때문에 처음 2분 동안 완전히 깨어있는 상태로 간주하여 깜빡이는 눈 상태를 기준으로 삼기 위함 이다. 기존 방법들은 템플릿을 통해 눈 영역을 검출 할 경우 이와 같이 다양한 형태의 눈에 대비하여 임의의 사람에 대해 여러 크기와 형태, 각도에 대한 템플릿을 지정해 놓거나[11], 미리 규격화된 템플릿 형판을 만들어 눈 영역을 검출한다[12,13]. 하지만 이와 같은 템플릿으로 알맞게 검출한다고 해도 사 람의 눈은 굉장히 다양하여 본인의 눈이 아닌 이상 정확히 검출해 내는데 한계가 있다. 본 논문에서의 템플릿의 사용 방법은 눈 영역 검출을 넘어선 눈 상태 검출에 있기 때문에 기존의 템플릿 지정방법 들에 비해 정확한 눈 상태판단이 가능하다. 한편 SURF를 이용하여 추출한 눈 영역의 특징점은 각 눈 상태에 대해 그 수가 비례적이지 않기 때문에 이것만으로는 눈의 각 세 가지 상태 즉, 눈 뜬 상 태, 반쯤 뜬 상태, 감은 상태에 해당하는 눈 템플릿 을 생성할 수 없다. 따라서 상대적으로 각 사용자에 따르는 세 가지 상태의 상대적인 고유의 눈 템플릿 을 실시간으로 생성하기 위해, J.O.Kim의 얼굴 표정 인식을 위한 베이지안 추론방법[14]을 응용한다. 이 를 응용하여 눈 상태를 예측하기 위해 먼저, PCA를 통해 눈을 검출하고 눈 상태 강도 분포 모델을 구 축한 후, 눈 상태를 예측하는 과정을 수행한다. 눈 상태 예측이 필요한 입력 영상에는 눈의 여러 상태 가 혼합되어 분포돼 있다. 이 경우 영상 내 운전자 이미지의 눈 상태가 다양하게 섞여 있으므로 베이 지안 추론의 일반적 방식에 따라 입력 영상에 확률 밀도 함수를 적용하여 눈의 상태를 예측한다. 이를 기반으로 템플릿을 생성하는데, 먼저 PCA를 이용 하여 검출한 눈 영역 내의 영상 화소들의 평균과 표준편차를 이용하여 식 (3.1)과 같이 가우시안 함 수를 구성한다. 이때, σ는 표준편차, μ는 평균, Itt시간 동안 눈 이미지의 시퀀스를 나타낸다.

    1 2 π σ e x p [ 1 2 ρ ( I t μ σ ) ]
    (3.1)

    식 (3.1)에서 구성한 가우시안 함수를 통해 얻은 가우시안 분포 중 일정 시간 동안 가장 많이 추출 되며, 집합의 밀도가 가장 높은 가우시안 분포를 가 진 프레임들은 눈을 뜬 상태의 프레임들이다. 이와 같이 판단한 근거는 첫 째로, 운전을 시작한 처음 2 분 동안은 깨어있는 정상적인 상태이기 때문에 눈 뜬 상태의 프레임이 가장 많이 입력되어 이에 해당 하는 가우시안 분포가 가장 많이 추출되기 때문이 다. 두 번째로, <그림 8>에 보인 것과 같이 눈을 감 았을 때 밝은 영역이 더 많이 분포하여 표준편차가 높게 나타난 것을 관찰할 수 있다. 반면, 눈을 떴을 때는 밝은 영역과 어두운 영역이 고르게 분포하여 표준 편차가 높지 않게 나타난다. 따라서 측정되는 영상 중에서 표준 편차가 가장 낮게 나타나는 프레 임을 눈 뜬 상태의 템플릿으로 정하고, 표준 편차가 가장 높게 나타나는 프레임을 눈 감은 상태의 템플 릿으로 정한다. 실험을 통해 얻은 결과, 눈 뜬 상태 템플릿의 가우시안 분포와 눈 감은 상태 템플릿의 가우시안 분포 사이의 약 17% ~22% 영역에 나타나 는 가우시안 분포가 눈 반쯤 뜬 템플릿에 해당하는 가우시안 분포로 나타났다. 따라서 20% 영역에 나 타나는 가우시안 분포에 해당하는 프레임이 반쯤 뜬 눈 상태의 기준 템플릿이 된다. 이와 같은 과정을 거쳐 실시간으로 각 세 가지 상태의 눈 템플릿을 사용자에 따라 상대적으로 생성한다.

    3) 눈 상태 검출

    현재 운전자의 눈 상태를 검출하기 위해 운전 처 음 2분 동안의 영상들을 대상으로 베이지안 추론을 통해 얻은 세 가지 상태의 눈 이미지 템플릿과 입 력 영상에서 추출해 낸 눈 영역에 대해 SURF 알고 리즘을 이용하여 각 특징점들을 비교하고 매칭한 다. 이와 같이 입력 영상이 세 가지 템플릿과 각각 얼마큼 매칭되었는지 매칭된 특징점의 개수를 통해 매칭결과를 확인하고, 좀 더 정확한 판단을 위해 각 템플릿이 지니고 있는 고유 특징점의 개수와 현재 매칭된 개수에 대한 매칭율을 계산하여 매칭율이 가장 큰 템플릿의 상태를 현재 눈의 상태로 정의하 여 판단한다. 즉,

    r = 현재 매칭개수 템플릿이 갖는 고유 특징점 개수
    (3.2)

    식 (3.2)에서 r은 매칭율을 의미하며 이때, 현재 입력 프레임에서 세 가지 각 템플릿과의 r값을 비 교해 보았을 때 상대적으로 r값이 가장 큰 템플릿 의 상태를 현재 프레임의 눈 상태로 판단한다.

    <표 2>에서 “Open-T”란은 매칭 개수와 매칭율로 나뉘는데 매칭 개수는 눈 뜬 상태의 템플릿과 입력 영상 간에 특징점을 매칭하여 얻은 매칭 개수이며, 매칭율은 앞서 말한 것과 같이 각 템플릿이 지닌 특징점 개수와 현재 입력과의 매칭된 개수에 대한 매칭율을 명시한 것이다. 이때, 매칭율(/121)에서 (/121)은 템플릿이 지닌 특징점의 개수이며, “Half-T” 와 “Close-T”열 또한 마찬가지이다. “매칭 결과 이 미지”란에서는 각 세 상태의 템플릿과 동시에 매칭 하여 가장 매칭이 많이 된 템플릿과의 매칭 결과를 이미지로 제시한 것이고, 각 템플릿과 매칭하여 구 한 매칭율이 제일 큰 템플릿에 따른 상태를 “눈 상 태 검출”란에 기재하였다. “실제판단”란에서는 현재 입력 영상의 눈 상태를 수동적으로 직접 확인 판단 하여 명시한 것이다. 이때, 앞서 눈을 떴다고 볼 수 있는 최소한의 기준을 20%로 정의하였기 때문에 “눈 상태 검출”란에서 half로 판단되어지는 프레임 은 open으로 변환하여 명시하였다.

    3. 졸음여부 판단

    1) 졸음 수준 정의

    앞의 여러 단계를 거쳐 눈의 상태가 검출 되어 현 재 눈이 감은 상태의 눈으로 검출되었을 때, 사람은 평소에도 눈을 계속하여 깜빡이기 때문에 무조건 졸 음으로 판단하여 경보를 주기에는 무리가 있다. 따라 서 일반적인 눈 깜빡임에 속한 감은 눈인지, 졸음에 의한 감은 눈인지를 구분하기 위해서는 감은 눈의 지속시간(duration)으로 졸음을 검출한다. Caffier의 연 구[15]에 의하면 사람의 일반적인 눈 깜빡임 지속시 간은 최소 75ms에서 약 400ms미만으로 보고되고 있 다. 이를 근거로 눈을 감은 상태가 400ms이상으로 지속되면 졸음으로, 800ms이상이면 수면으로 간주한 다. 따라서 30fps의 카메라 영상 입력은 한 프레임 당 1/30초가 소요되므로 12프레임 이상 연속적으로 close상태가 계속될 경우 졸음상태로, 24프레임 이상 연속적으로 close상태가 계속되면 수면상태로 판단할 수 있다. 따라서 졸음 판단을 위한 임계시간의 값을 Ddrowsy = 400ms, 수면 판단은 Dsleeping = 800ms, 일 반적인 눈 깜빡임의 지속시간은 Dblink로 졸음에 대 한 3가지 수준을 나타낼 수 있다.

    2) 졸음 검출

    현재 입력 영상으로 부터 운전자의 졸음검출이 가능하며, 각 프레임에서 보이는 눈의 상태 값들을 연속적으로 받아들이고 이를 통한 졸음 검출을 위 한 유한오토마타를 다음과 같이 정의한다[16].

    유한오토마타 : M = ( Q , Σ , δ , q 0 , F )

    상태들의 유한집합 : Q = ( S , O , H , C )

    입력 심벌들의 집합 : Σ = { o , h , c , e }

    전이함수(transition function) δ : Q × Σ Q

    시작상태 : q 0 = S Q

    최종 상태의 집합 : F = { S , O , H , C }

    정의한 입력 심벌들의 집합 Σ에서 입력 심벌 o는 앞서 설명한 눈 상태 판단에서 판단되어진 입력 open을 지칭하는 프레임으로 눈 뜬 상태를, h는 입력 half를 지칭하는 프레임으로 눈 반쯤 뜬 상태를, c는 입력 close를 지칭하는 프레임으로 눈 감은 상태를 나타낸다. 또한 입력 심벌 e는 o, h, c를 제외한 모든 입력 프레임을 나타내는데, 이는 어떠한 잘못된 이미 지가 입력될 경우라도 중단되지 않고 계속하여 정상 적으로 동작할 수 있도록 하기 위함이다. <표 4>에 서와 같이 정의한 입력 심벌에 따라 일반적으로 눈 을 깜빡이는 동작에 대해 o → h → c → h → o와 같은 패턴의 상태전이로 나타낼 수 있다. 이때, 입력 c인 프레임이 입력되는 순간, 상태 C로 전이 되면서 입 력되는 연속적인 c 프레임 수를 카운트하여 졸음을 판단하는데, 앞서 졸음 수준 정의에서 결정한 임계시 간 값에 해당하는 연속된 프레임 수, 즉 12프레임을 기준으로 비교하여 이보다 작으면 단순 눈 깜빡임으 로 판단하고 같거나 초과 시에는 졸음 상태로 간주 하여 졸음 경고 신호를 출력시킨다.

    Ⅳ. 실험 결과

    1. 실험 환경

    본 논문에서 입력 프레임에 대한 전처리부터 SURF를 이용한 눈 상태 검출 및 졸음 판단까지의 모든 알고리즘은 Microsoft Visual C++ 6.0에서 C언 어로 구현하였다. 또한, 비디오와 영상의 분석을 위 해 최적화된 알고리즘을 포함하는 오픈 소스 라이 브러리인 OpenCV1.1을 기반으로 프로그램하였으며, Intel(R) Core(TM)2 Duo CPU, 6GB RAM의 환경에서 실험하였다. 실제 자동차 환경에서 <그림 10>에서 보인 것과 같이 아이나비사의 차량용 블랙박스(BLACK CLAIR, 16GB)를 장착하여 1280×720의 해상도를 갖는 운전자의 입력 영상을 이용하였으며, 특별한 촬영 모드 등의 사양은 포함하지 않았다.

    <그림 11>는 졸음운전 검출 시스템의 전체 구성도 를 간략하게 나타내어 보여준다.

    2. 데이터베이스

    1) 데이터베이스 구축

    아이나비사의 차량용 블랙박스를 입력 장치로 사용하여, <표 5>에서와 같이 성인 남녀 15명으로 부터 주간과 야간으로 나누어 촬영하였다. 이때, 실 험자 당 각 2개의 클립으로 구성하였는데, 이 두 클 립은 안경을 착용하지 않고 실제 주행 중인 자연스 러운 운전자의 모습과 두꺼운 테의 안경을 착용하 고 주행 중인 운전자의 모습으로 구성하였다. 이와 같이 안경 착용의 유무와 주간과 야간 이 4가지 환 경에 대해 얼마나 적응적인 성능을 보여주는지 실 험하였다. 카메라 영상 입력은 30fps로 각 실험자 당 클립 별로 평균 30분가량 촬영하였고, 클립 별 54,000프레임, 한 사람당 108,000프레임을 얻었으며, 주간과 야간 촬영을 통틀어 총 3,240,000의 프레임 을 얻었다.

    2) ZJU 데이터베이스의 실험

    제안된 졸음 검출 시스템의 성능 검증을 위해 눈 깜빡임에 관한 연구 목적으로 공개된 ZJU Eyeblink 데이터베이스[17]를 사용하였다. 이 ZJU 데이터베 이스는 Logitech Pro5000의 일반적인 웹 카메라를 이용하여 촬영된 것이고, <표 6>에서와 같이 성인 남녀 20명으로부터 각자 4클립씩 모두 80개의 클립 으로 데이터베이스가 구성되어있다. 이때, 각 4개의 클립은 안경 없이 정면을 본 경우, 옅은 색의 안경 테인 안경을 착용하고 정면을 본 경우, 검은색 테의 안경을 착용하고 정면을 본 경우, 안경 없이 위를 향해 본 경우로 각 한 클립씩 구성되어 있다. 안경 없이 위를 향해 본 클립의 경우 카메라를 운전자 얼굴 아래에 설치하지 않는 이상 자동차 환경에서 운전자가 운전할 때 위로 얼굴을 향하여 운전을 하 진 않으므로 본 논문의 실험에서 제외하였다. 따라 서 4클립씩 총 80개의 클립에서 이를 제외한 3클립 씩 총 60개의 클립만을 사용하여 실험하였다. 각 비 디오 클립은 30fps, 320 × 240 크기로 대략 5초간 촬 영되었고 총 11,750프레임으로 구성되어 있다. 클립 당 눈 깜빡임 회수는 1 ~6회이고 총 255회이다. 실 험을 위해 눈 감은 상태의 프레임을 복사하여 덧붙 임으로써 눈 감은 상태의 연속 프레임 수를 확장하여 졸음 검출이 가능하도록 실험하였다.

    3. 실험 결과 및 성능 비교

    1) 결과 및 검출 성능 비교

    구축된 데이터베이스의 총 324만 프레임에 대해 주간과 야간, 안경 착용유무 등 환경 변화에 따른 눈 상태 검출을 <표 2>에서와 같이 실험 하였다. <표 7>은 4가지 환경 변수에 따른 눈 상태 검출결과 보여주며, 그 결과를 <그림 12>에 상호 비교하여 보이고 있다.

    야간 환경에서의 실험자들 중 다른 실험자들에 비해 검출률이 다소 낮게 나타난 실험자도 있었는 데, 이는 같은 야간 환경이라도 다른 실험자들에 비 해 현저히 낮은 조명 확보의 원인으로 분석되어진 다. 이를 통해 조명에 자유로운 눈 상태 검출이라 해도 적외선 카메라를 사용하지 않는 이상, 야간 환 경에서는 최소한의 얼굴과 눈 상태를 구별할 수 있 을 정도의 조명은 확보해야 눈 상태의 판단이 효과 적으로 이뤄지는 것을 알 수 있었다. 안경을 착용한 경우 반사광에 의해 검출률이 떨어진 경우도 있었 는데, 이는 주간과 야간에 공통적으로 나타났지만 주간 환경보다는 야간 환경에서 더 큰 영향으로 나 타났다. 즉, 야간 환경이기 때문에 밝기 값이 낮아 엣지의 강도가 약한 상태에서 안경에 반사광이라는 잡음이 생기면 특징점의 추출이 어렵게 되며, 반사 광에 의해서 눈 주변의 엣지 성분이 모두 바뀌게 되기 때문에 매칭이 제대로 이루어지지 않게 되는 것이다. 이때 템플릿 생성 시 안경에 반사광이 생긴 영상을 템플릿으로 채택하여 사용한다면 검출률은 현저히 떨어지게 된다.

    2) 기존 방법과의 성능 비교

    객관적인 성능 입증을 위해 공개된 ZJU Eyeblink 데이터베이스에서 제안된 방법을 실험한 결과 <표 8> 에서와 같이 안경 미착용 시 98.6%, 착용 시 97.7%의 검출률을 얻었다.

    <그림 13>에서 도표를 통해 기존 눈 상태검출 연구 들의 대표적 방법인 Sigari가 제안한 눈꺼풀 간의 거리 를 이용한 방법과 Tabrizi 등이 제안한 동공의 픽셀수 를 이용한 방법, Danisman 등이 제안한 눈동자 상하 대칭 특성을 이용한 방법의 검출률들과 비교하여 제 안한 방법이 기존 방법들보다 우수함을 보이고 있다.

    Ⅴ. 결 론

    본 논문에서는 지역적 특성에 강인한 SURF 알고 리즘을 이용하여 안경과 조명 등 자동차 환경에 적응적인 새로운 눈 상태 검출 방법을 제안하였다. 또한, 베이지안 추론을 이용하여 각 운전자에 대해 세 가지 고유의 눈 상태 템플릿을 실시간적으로 생 성하는 방법을 제안함으로써 눈 상태 검출 성능을 향상시켰다.

    여러 환경 변수에 대해 적응적인 검출 성능을 실 험한 결과, 주간 실험 시 평균 98.1%, 야간 실험 시 평균 96.0%의 검출률을 보임으로써 제안한 방법이 주․야간, 안경 착용, 미착용 등 각 환경에서도 정 확하고, 적응적으로 검출함을 보였다. 또한, 객관적 인 검출 성능을 입증하기 위해 공개된 ZJU Eyeblink 데이터베이스를 이용하여 실험한 결과 평균 97.8% 의 검출률을 보임으로써 Sigari, Tabrizi, Danisman 등이 제안한 기존의 눈 상태 검출 방법들과 비교하여 제안된 방법의 우수성을 보였다.

    SURF 적용 시 최대 이점은 지역적 특징을 빠르 게 검출할 수 있다는 점으로, 여러 환경 변수에서도 적응적으로 인식하므로 제안된 방법은 졸음 검출뿐 만 아닌 정확한 신분 확인이 요구되거나 여러 사용 자 인터페이스 구현 등의 많은 분야에 적용이 가능 하다.

    Figure

    KITS-11-4-131_F1.gif

    Input image and candidates for eye region

    KITS-11-4-131_F2.gif

    Labeling of candidates for eye region

    KITS-11-4-131_F3.gif

    Approximated Laplacian filter

    KITS-11-4-131_F4.gif

    Second derivative box filter

    KITS-11-4-131_F5.gif

    Orientation assignment

    KITS-11-4-131_F6.gif

    Descriptor components in keypoints

    KITS-11-4-131_F7.gif

    Flowchart of the proposed system for drowsiness detection

    KITS-11-4-131_F8.gif

    Gaussian distribution

    KITS-11-4-131_F9.gif

    Flowchart for drowsiness detection

    KITS-11-4-131_F10.gif

    Experimental environment of the vehicles

    KITS-11-4-131_F11.gif

    Diagram for drowsy driving detection system

    KITS-11-4-131_F12.gif

    Comparison of detection rates(%) by environmental variables

    KITS-11-4-131_F13.gif

    Comparison of detection rates(%) between the proposed method and conventional methods

    Table

    The survey results for open eyes

    Eye state detection for eye frames

    Drowsiness level

    State transition table

    Database information

    ZJU Database information

    Result of eye state detection

    Comparison of detection rates(%) with the conventional methods

    Reference

    1. S. Vitabile, A. D. Paola and F. Sorbello, “Bright Pupil Detection in an Embedded, Real-time Drowsiness Monitoring System,” The 24th IEEE International conference on Advanced Information Networking and Applications, pp.661-668, Apr 2010.
    2. D. W. Lee, S. W. Oh, S. K. Heo and M. S. Hahn, “Drowsy Driving Detection Based on the Driver's Head Movement using Infrared Sensors,” 2008 Second International Symposium on Universal Communication, pp.231-236, Dec 2008.
    3. M. Omidyeganeh, A. Javadtalab and S. Shirmohammadi, “Intelligent driver Drowsiness detection through Fusion of Yawning and eye Closure,” 2011 IEEE International Conference on Virtual Environments Human-Computer Interfaces and Measurement Systems (VECIMS), pp.1-6, 2011.
    4. M. H. Sigari, “Driver hypo-vigilance detection based on eyelid behavior,” Seventh International Conference on Advances in Pattern Recognition, pp.426-429, Feb 2009.
    5. P. R. Tabrizi and R. A. Zoroofi, “Drowsiness detection based on brightness and numerical features of eye images,” 2009 Fifth International Conference on Intelligent Information Hiding and Multimedia Signal Processing, pp.1310-1313, Sep 2009.
    6. T. Danisman, I. M. Bilasco, C. Djeraba and N. Ihaddadene, “Drowsy driver detection system using eye blink patterns,” IEEE 2010 International Conference on Machine and Web Intelligence (ICMWI), pp.230-233, Oct 2010.
    7. 오유화, 안상철, 김형곤, 김익재, 이성환, “반복 적인 PCA 재구성을 이용한 얼굴 영상에서의 안경 제거,” 전자공학회논문지 제 41권 SP편 제 3호, pp.225-240, 2004. 1
    8. 김진우, 고한석, 김형곤, 안상철, “2차원 영상 기반 3차원 개인 얼굴 모델 생성 및 애니메이션,” 한국 방송공학회학술대회논문지 pp.15-20, 1999. 11
    9. H. Bay, T. Tuytelaars, and L. Van Gool. “Surf: Seeded up robust features,” European Conference on Computer Vision, vol.3951 pp.404-417, 2006.
    10. 한학용, 패턴인식 개론, 한빛 미디어, 2009.
    11. M. Chau, M. Betke, “Real Time Eye Tracking and Blink Detection with USB Cameras,” Boston University Computer Science Technical Report, Dec 2005.
    12. 주영훈, 김진규, 나인호, “지능형 졸음운전 경고 시스템,” 한국지능시스템학회논문지 Vol.18, No. 2, pp.223-229, 2008. 1
    13. M. Tomofurni, T. Hironobu and N. Kiyomi, “Dvelopment of Non-contact Real-time Blink Detection System for doze Alarm,” SICE Annual Conference in Sapporo, vol.2, pp. 1626-1631, Aug 2004.
    14. 김진옥, “표정 강도에 강건한 얼굴 표정 인식,” 정보처리학회논문지B, 제 16.B권 제 5호, pp.395-402, 2009. 10
    15. P. P. Caffier, U. Erdmann and P. Ullsperger, “The spontaneous eye-blink as sleepiness indicator in patients with obstructive sleep apnoea syndromeapilot study,” Sleep Medicine, vol. 6, no. 2, pp.155-162, Mar 2005.
    16. 최기호, “눈 깜빡임 패턴을 이용한 졸음 검출,” 한국ITS학회논문지, 제 10권 제 2호, pp.94-102, 2011. 4
    17. ZJU Eyeblink Database, http://www.stat.ucla.edu/~gpan, December 2010.

    저자소개

    • 최 나 리 (Na-Ri Choi)
    • 2012년 8월 : 광운대학교 컴퓨터공학과 공학석사
    • 2010년 7월 : ㈜정안교육 후임강사
    • 2009년 2월 : 광운대학교 정보과학교육원 컴퓨터공학과 공학사

    • 최 기 호 (Ki-Ho Choi)
    • 1979년 3월 ~ 현 재 : 광운대학교 컴퓨터공학과 교수
    • 2006년 1월 ~ 2006년 12월 : 한국멀티미디어학회 회장
    • 2005년 1월 ~ 2005년 12월 : 한국 ITS 학회 회장
    • 1977년 3월 ~ 1979년 2월 : 한국과학기술연구원(KIST) 전자공학부 연구원
    • 1987년 2월 : 한양대학교 전자공학과 공학박사
    • 1977년 2월 : 한양대학교 전자공학과 공학석사
    • 1973년 2월 : 한양대학교 전자공학과 공학사

    Footnote