2016-09-09 6 views
3

Dlib의 정면 감지기를 사용하여 이미지의 얼굴을 감지합니다. 그러나 80x80 픽셀보다 작은면은 감지 할 수 없습니다.작은 얼굴을위한 Dlib 정면 감지

face_detection_ex.cpp에 Dlib의 예는 얼굴의 크기를 증가 pyramid_up()를 이용하여 입력 이미지를 업 샘플링한다. 그러나 더 큰 이미지를 검색해야하기 때문에 알고리즘이 훨씬 느려집니다.

누구든지이 문제에 대한 해결책을 알고 있는지 궁금합니다.

답변

5

Dlib의 얼굴 검출기는 80x80 얼굴을 처리하도록 훈련되었습니다. 작은 얼굴을 감지하려면 두 가지 방법이 있습니다.

  1. 얼굴을 더 크게 만들기 위해 해상도를 높이십시오. pyramid_up 또는 다른 어떤 방법으로 cv :: resize를 사용할 수 있습니다. 그리고 당신은 배하지 resultion을 증가시킬 수 있지만, 1.5 배는 충분히 될 것입니다 수 있습니다 - 그것은 작은 얼굴에 작동합니다
  2. 기차 새 얼굴 검출기는 당신의 - dlib 교육 과정

그리고 다음에 대한 샘플을 가지고 당신의 질문은 얼굴 검출기의 성능입니다. 예. 해상도에 따라 다르며 13 MP 이미지에서 20x20 얼굴을 감지하려는 경우 속도가 느려집니다. 당신이이 옵션이 빠르게 작동하게하려면

  1. 는 검출기에 의해 처리되어야 픽셀의 양을 줄일 수 - 사용 권한 규모와 관심의 지역
  2. 사용 그레이 스케일 이미지
  3. reduce the amount of scale changes at scanning process
  4. 를 사용을 FAQ의 권장 사항 나는 MinGW/GCC 코드가 MSVC 및 Android/ARM 코드보다 약 20 % 더 빨리 작동한다고 추가 할 수 있습니다.
  5. 비디오 : apply motion detection 및 변경된 영역 만 감지합니다. 모든 CPU 코어를 소모하기 위해 별도의 스레드로 프레임을 실행하십시오.
+0

작은 얼굴을 감지 할 수 있도록 이미지를 업 샘플링하지 않고 트레이닝을 시도했습니다. 예제 파일 "* fhog_object_detector_ex.cpp *"에서 시도했습니다. 업 샘플링 (upsample_image_dataset')의 두 줄을 주석 처리하고 감지 창 크기를 40x40으로 줄였습니다. 그러나 테스트 이미지에서 대부분의 얼굴을 감지 할 수는 없습니다. 제 실수가 어디 있는지 말해 주시겠습니까? – mhaghighat