13.2 캐스케이드 분류기와 얼굴 검출
이 절에서는 오래전부터 많은 사람들의 관심을 받았던 OpenCV의 얼굴 검출 기능에 대해 알아보겠습니다. OpenCV에서 제공하는 얼굴 검출 기능은 2001년에 비올라(P. Viola)와 존스(M. Jones)가 발표한 부스팅(boosting) 기반의 캐스케이드 분류기(cascade classifier) 알고리즘을 기반으로 만들어졌습니다[Viola01]. 비올라와 존스가 개발한 객체 검출 알고리즘은 기본적으로 다양한 객체를 검출할 수 있지만, 특히 얼굴 검출에 적용되어 속도와 정확도를 인정받은 기술입니다. 먼저 비올라와 존스가 제안한 얼굴 검출 알고리즘에 대해 간략히 알아본 후, OpenCV에서 제공하는 캐스케이드 분류기 사용 방법에 대해 설명하겠습니다.
비올라-존스 얼굴 검출 알고리즘은 기본적으로 영상을 24×24 크기로 정규화한 후, 유사-하르 필터(Haar-like filter) 집합으로부터 특징 정보를 추출하여 얼굴 여부를 판별합니다. 유사-하르 필터란 흑백 사각형이 서로 붙어 있는 형태로 구성된 필터이며, 24×24 영상에서 만들 수 있는 유사-하르 필터의 예를 그림 13-4에 나타냈습니다. 유사-하르 필터 형태에서 흰색 영역 픽셀 값은 모두 더하고, 검은색 영역 픽셀 값은 모두 빼서 하나의 특징 값을 얻을 수 있습니다. 사람의 정면 얼굴 형태가 전형적으로 밝은 영역(이마, 미간, 볼 등)과 어두운 영역(눈썹, 입술 등)이 정해져 있기 때문에 유사-하르 필터로 구한 특징 값은 얼굴을 판별하는 용도로 사용할 수 있습니다.
▲ 그림 13-4 유사-하르 필터의 예