Об оптимизации dlib::frontal_face_detector

привет, я делаю приложение, которое определяет ориентиры лица (68 баллов)

У меня проблемы с оптимизацией системы. Я использую метод HOG для обнаружения лиц.

В detector(cv_grayscale, face_detections, -0.2); введите "dlib::frontal_face_detector&Detector"

Там очень много вычислений. Таким образом, процессор Android не может их покрыть.

Итак, кто-нибудь решил эту проблему или соответствующие проблемы?

bool DetectFacesHOG(vector<cv::Rect_<double> >& o_regions, const cv::Mat_<uchar>& intensity, dlib::frontal_face_detector& detector, std::vector<double>& o_confidences)
{

      double scaling = 1.3;
      cv::Mat_<uchar> upsampled_intensity;
      cv::resize(intensity, upsampled_intensity, cv::Size((int)(intensity.cols*scaling), (int)(intensity.rows*scaling)));

      dlib::cv_image<uchar> cv_grayscale(upsampled_intensity);
      std::vector<dlib::full_detection> face_detections;

      // millions of computation !!!!!!!!!!!!!!!!!!!!!!!!
      detector(cv_grayscale, face_detections, -0.2);
      ....
}

person kang chon    schedule 04.04.2017    source источник


Ответы (1)


Загрузите последнюю версию SDK opencv для Android по адресу здесь. Он содержит множество отлаженных примеров. Одним из них является распознавание лиц, и оно обнаруживает лица со скоростью 22 кадра в секунду на моем телефоне Xperia-Z5. Наконец, если ошибки opencv вызывают вращение камеры, используйте этот код. Код очень понятен и находит лучшее разрешение кадра для вашего вида камеры. Если вы также хотите распознавать лица, вы можете загрузить модули C++, но вы должны использовать NDK(c++). Потому что в Android SDK не будет face.h или других модулей. Вы можете комбинировать обнаружение лица из java и распознавать их из c++. Не беспокойтесь о скорости, opencv оптимизирует ее. Обнаружение лиц lpcascade classifier xmls работает с высокой производительностью. Но если вы хотите больше обнаружения, используйте haarcascade.

person Ottoman Empire    schedule 05.04.2017