프로젝트 소개
face_recognition은 얼굴을 인식하고 조작하기 위한 Python 라이브러리이자 명령줄 도구입니다. dlib의 최신 얼굴 인식 모델을 기반으로 구축되었으며, README에 따르면 Labeled Faces in the Wild(LFW) 벤치마크에서 99.38%의 정확도를 보고합니다. 얼굴 위치 찾기, 얼굴 특징점 추출, 얼굴 인코딩 계산, 얼굴 비교를 통한 인물 식별을 위한 간단한 API를 제공합니다.
## 주요 기능
- `face_locations()`로 이미지 내 모든 얼굴을 찾습니다. 더 높은 정확도를 위해 선택적으로 딥러닝 기반 CNN 모델을 사용할 수 있으며, 좋은 성능을 위해 CUDA가 필요합니다.
- `face_locations()`로 이미지 내 모든 얼굴을 찾습니다. 더 높은 정확도를 위해 선택적으로 딥러닝 기반 CNN 모델을 사용할 수 있으며, 좋은 성능을 위해 CUDA가 필요합니다.
- `face_landmarks()`로 눈, 코, 입, 턱 등 얼굴 특징의 위치를 찾고 윤곽을 잡아 디지털 메이크업과 같은 애플리케이션을 가능하게 합니다.
- `face_encodings()`로 생성한 128차원 얼굴 인코딩을 `compare_faces()`로 매칭해 얼굴을 식별합니다.
- 두 가지 명령줄 프로그램을 포함합니다. 이미지 폴더에서 알려진 인물을 식별하는 `face_recognition`과 얼굴 경계 상자 좌표를 출력하는 `face_detection`입니다.
## 설치
- macOS 또는 Linux에서 Python 3.3 이상 또는 Python 2.7이 필요합니다. Windows는 공식적으로 지원되지 않지만 커뮤니티 제공 지침으로 동작할 수 있습니다.
- 먼저 Python 바인딩이 포함된 `dlib`을 설치해야 합니다. macOS/Ubuntu에서는 소스에서 빌드하거나 사전 구성된 VM을 사용할 수 있습니다.
- `cmake`를 설치한 후 `pip3 install face_recognition`으로 설치합니다. 예를 들어 macOS에서는 `brew install cmake`를 사용합니다.
- Nvidia Jetson Nano, Raspberry Pi 2 이상, FreeBSD(`pkg install graphics/py-face-recognition`), Windows를 위한 추가 플랫폼 가이드가 포함되어 있습니다.
- Heroku나 AWS 같은 클라우드 호스트에 더 쉽게 배포할 수 있도록 Docker 이미지가 제공됩니다.
## 사용 예시 (Python)
```python
import face_recognition
# 이미지에서 얼굴 찾기
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# 얼굴 특징점 가져오기
face_landmarks_list = face_recognition.face_landmarks(image)
# 인물 식별하기
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
```
## 명령줄 인터페이스
- `face_recognition ./known_people/ ./unknown_pictures/`는 감지된 얼굴마다 한 줄씩 파일 이름과 인식된 이름(또는 `unknown_person`)을 출력합니다.
- `--tolerance 0.54`는 매칭을 더 엄격하게 만듭니다. `--show-distance true`는 계산된 얼굴 거리를 출력합니다.
- `--cpus 4`(또는 `-1`로 모든 코어 사용)는 멀티코어 시스템에서 병렬 처리를 활성화합니다.
- `face_detection ./folder_with_pictures/`는 찾은 각 얼굴의 top, right, bottom, left 픽셀 좌표를 출력합니다.
## 예제 스크립트
저장소에는 다음과 같은 다양한 예제가 포함되어 있습니다.
- 기본 HOG 모델과 CNN 딥러닝 모델을 사용한 얼굴 감지.
- 실시간 웹캠 인식(단순 버전과 더 빠른 버전, OpenCV 필요).
- 동영상 파일과 카메라가 장착된 Raspberry Pi에서의 얼굴 인식.
- Flask를 사용한 HTTP 웹 서비스.
- 인물당 여러 이미지로 학습하는 K-최근접 이웃 및 SVM 분류기.
- 실시간 웹캠 영상에서 얼굴 흐림 처리.
## 주의사항
- 인식 모델은 성인을 대상으로 학습되었으며, 기본 비교 임계값 0.6에서는 어린이에게 잘 작동하지 않을 수 있습니다.
- 인종 그룹에 따라 정확도가 달라질 수 있으며, 위키에서 알려진 정확도 문제를 다룹니다.
- 배포를 위해 Dockerfile과 사전 빌드된 Docker 이미지가 포함되어 있으며, Nvidia 드라이버와 nvidia-docker를 사용하는 Linux 시스템에서는 GPU 지원도 제공됩니다.
이 프로젝트는 dlib의 얼굴 인식 기능을 단순하고 고수준으로 감싼 래퍼로 널리 사용되며, 얼굴 감지와 식별이 필요한 프로토타이핑 및 프로덕션 애플리케이션에 적합합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.