Ⅰ. 서 론
졸음운전을 검출하기 위한 방법으로는 운전자에 게 의료장치 같은 어떠한 특별한 장치의 물리적인 접촉이 요구되는 강제적인(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)과 같이 휘도성분의 정규화를 거친 후,
다음 식 (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. SURF 알고리즘
영상의 특징을 추출하는 방법 중 Lowe에 의해 제 안된 SIFT(Scale Invariant Feature Transform)의 많은 연산 시간을 개선하기 위해 H. Bay[9]는 SIFT에서 제안하는 알고리즘을 그대로 사용하면서 경제적인 방법으로, 각 기능들의 연산속도를 빠르게 하여 실 시간 활용이 가능한 SURF를 제안하였다.
SURF 알고리즘의 특징점 추출 방법은 크게 세 단계로 구성되어지는데, 첫 번째 단계로 헤이시안 검출기를 근사화하여 얻은 사각 2차 미분 필터를 이용해 영상에서의 후보 특징점(edge)을 얻고, 후보 특징점의 안정성을 검사하여 특징의 위치를 보정한 다. 이때, 헤이시안 검출기는 다음 식 (2.4)와 같이 라플라시안 형태로 근사화된 헤이시안 행렬식을 기 반으로 구성되어 있다.
식 (2.4)에서 Lxx 는 x위치의 입력 영상 화소값과 σ의 분산을 갖는 라플라시안의 가로 방향 2차 미 분 값을 의미하고, Lyy는 세로 방향으로의 2차 미 분, Lxy는 대각 방향으로 미분된 라플라시안 필터 의 값을 의미한다. 다음 <그림 3>는 헤이시안 행렬 식으로부터 근사화된 xx, yy, xy 방향의 라플라시안 필터를 나타낸다.
헤이시안 검출기에서 근사화된 라플라시안 필터 를 이용하여 영상에서의 후보 특징점을 검출할 때 수행되는 컨볼루션의 합 연산을 줄이기 위해 SURF 에서는 적분 영상을 사용한다. 적분 영상을 효율적 으로 활용하기 위해 라플라시안 필터로 근사화된 헤이시안 행렬식을 사용하지 않고, 이 라플라시안 필터 형태를 이진화하여 <그림 4>와 같이 이진화된 사각 필터(사각 2차 미분필터)로 근사화한 헤이시 안 행렬식을 사용한다.
이러한 사각 2차 미분필터를 적용한 결과값을 식 (2.5)에 대입하여 헤이시안 행렬식을 구할 수 있다.
위의 식 (2.5)에서 det(Happrox) 는 헤이시안 행렬 식의 근사값이고, Dxx, Dyy, Dxy 는 가로, 세로, 대 각선 방향의 근사화된 사각 2차 미분필터의 컨볼루 션 결과값을 나타낸다. 다음으로 1단계를 통해 얻 어진 키포인트의 강도와 방향을 결정하기 위해 하 알-웨이블릿(Haar-wavelet)을 이용하여 강도와 방향 을 포함한 벡터 공간을 생성한다. 그 후 키포인트 주변의 관심 기술자들을 찾고, 이 관심 기술자들을 통해 키포인트의 주된 강도와 방향을 결정한다. 즉, 가로 방향의 하알-웨이블릿 특징 dx와 세로 방향의 하알-웨이블릿 특징dy를 계산하고, 여기서 dx와 dy 의 합에 의해 특정 방향을 가리키는 합 벡터를 구 한다.
이때, <그림 5>에서와 같이 합 벡터가 가장 많이 가리키는 방향으로 키포인트의 주방향이 결정되며 이 합 벡터가 가장 많이 가리키는 방향 내에 속한 관 심 기술자들을 모두 합하여 키포인트의 강도로 결정 한다. 마지막 세 번째 단계로 키포인트가 영상의 회 전과 크기 변화에 불변한 지역적 특성을 가질 수 있 도록 키포인트 주위에 있는 그래디언트를 서술하여 서술자(descriptor)의 집합을 생성한다. <그림 6>과 같이 서술자를 추출하기 위해서 너비가 키포인트 강도의 1/2이 되는 사각 윈도우(area)를 구성한다.
각각의 작은 윈도우 내에 있는 모든 픽셀의 주변 화소값 차이를 통하여 방향 성분을 나타내기 위해 하알-웨이블릿을 작은 윈도우 영역에 적용한다. 이를 통하여 식 (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)과 같이 가우시안 함 수를 구성한다. 이때, σ는 표준편차, μ는 평균, It 는 t시간 동안 눈 이미지의 시퀀스를 나타낸다.
식 (3.1)에서 구성한 가우시안 함수를 통해 얻은 가우시안 분포 중 일정 시간 동안 가장 많이 추출 되며, 집합의 밀도가 가장 높은 가우시안 분포를 가 진 프레임들은 눈을 뜬 상태의 프레임들이다. 이와 같이 판단한 근거는 첫 째로, 운전을 시작한 처음 2 분 동안은 깨어있는 정상적인 상태이기 때문에 눈 뜬 상태의 프레임이 가장 많이 입력되어 이에 해당 하는 가우시안 분포가 가장 많이 추출되기 때문이 다. 두 번째로, <그림 8>에 보인 것과 같이 눈을 감 았을 때 밝은 영역이 더 많이 분포하여 표준편차가 높게 나타난 것을 관찰할 수 있다. 반면, 눈을 떴을 때는 밝은 영역과 어두운 영역이 고르게 분포하여 표준 편차가 높지 않게 나타난다. 따라서 측정되는 영상 중에서 표준 편차가 가장 낮게 나타나는 프레 임을 눈 뜬 상태의 템플릿으로 정하고, 표준 편차가 가장 높게 나타나는 프레임을 눈 감은 상태의 템플 릿으로 정한다. 실험을 통해 얻은 결과, 눈 뜬 상태 템플릿의 가우시안 분포와 눈 감은 상태 템플릿의 가우시안 분포 사이의 약 17% ~22% 영역에 나타나 는 가우시안 분포가 눈 반쯤 뜬 템플릿에 해당하는 가우시안 분포로 나타났다. 따라서 20% 영역에 나 타나는 가우시안 분포에 해당하는 프레임이 반쯤 뜬 눈 상태의 기준 템플릿이 된다. 이와 같은 과정을 거쳐 실시간으로 각 세 가지 상태의 눈 템플릿을 사용자에 따라 상대적으로 생성한다.
3) 눈 상태 검출
현재 운전자의 눈 상태를 검출하기 위해 운전 처 음 2분 동안의 영상들을 대상으로 베이지안 추론을 통해 얻은 세 가지 상태의 눈 이미지 템플릿과 입 력 영상에서 추출해 낸 눈 영역에 대해 SURF 알고 리즘을 이용하여 각 특징점들을 비교하고 매칭한 다. 이와 같이 입력 영상이 세 가지 템플릿과 각각 얼마큼 매칭되었는지 매칭된 특징점의 개수를 통해 매칭결과를 확인하고, 좀 더 정확한 판단을 위해 각 템플릿이 지니고 있는 고유 특징점의 개수와 현재 매칭된 개수에 대한 매칭율을 계산하여 매칭율이 가장 큰 템플릿의 상태를 현재 눈의 상태로 정의하 여 판단한다. 즉,
식 (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].
정의한 입력 심벌들의 집합 Σ에서 입력 심벌 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 적용 시 최대 이점은 지역적 특징을 빠르 게 검출할 수 있다는 점으로, 여러 환경 변수에서도 적응적으로 인식하므로 제안된 방법은 졸음 검출뿐 만 아닌 정확한 신분 확인이 요구되거나 여러 사용 자 인터페이스 구현 등의 많은 분야에 적용이 가능 하다.