얼굴 검출(face detection)은 이미지에서 얼굴 영역을 검출하고 눈, 코, 입꼬리의 위치를 찾는 컴퓨터 비전의 한 분야입니다. 일반적으로 그림 1과 같이 얼굴 영역은 경계 상자(bounding box, bbox)로 나타내며 눈, 코, 입꼬리는 5개의 랜드마크(landmarks)로 나타냅니다.

그림 1. 얼굴 검출의 예
얼굴 검출은 얼굴 인식(face recognition)에서 기초가 되는 작업으로 매우 중요합니다. 얼굴 인식은 얼굴의 고유 신원을 식별하는 기술이며, 그림 2와 같이 네 단계로 나누어집니다. 구체적으로 각각 얼굴 검출, 얼굴 정렬, 얼굴 특징 추출, 얼굴 매칭으로 구성됩니다. 얼굴 인식에 관한 자세한 설명은 다음 포스팅을 참고하세요. (링크)

그림 2. 얼굴 인식 과정
이 글에서는 SCRFD 모델을 사용하여 얼굴 검출을 처음부터 끝까지 배워보고, 여러분들이 직접 실습해 보겠습니다.
먼저 Miniconda가 설치되어 있는지 확인해주시고, 없다면 다음 링크에서 설치하세요. (링크)
그리고 다음 링크에서 예제 코드를 다운로드 해주세요. (링크)
마지막으로 예제 코드에 필요한 패키지를 설치합니다.
아래 명령을 Miniconda에서 차례대로 입력하세요.
conda create -n fd python=3.10 -y
conda activate fd
pip install onnxruntime-gpu opencv-python
예제 코드는 아래와 같이 구성되어 있습니다.
예제 코드는 여러분들이 가지고 계신 사진으로도 얼굴 검출이 가능합니다. 또한 컴퓨터에 GPU가 없어도 실습이 가능합니다.
만약 노트북이나 웹캠을 가지고 계시다면 --source에 웹캠 번호를 입력하여 실시간으로 얼굴 검출을 할 수 있습니다. 웹캠 번호는 컴퓨터에 연결된 웹캠의 개수에 따라 0번부터 순서대로 할당됩니다.