Медленная обработка всех изображений с помощью Google Face API?

Я делаю приложение для Android, которое использует API Google Face для обнаружения лиц всех изображений в галерее. Обработка всех изображений занимает много времени, и, следовательно, приложения застревают надолго. Любое решение? Я попытался уменьшить размер изображения и затем обработать, но это дает неверный ответ на него.

3 ответа

Решение

2 минуты для 715 изображений - действительно хорошее время.
Шаги, которые можно предпринять:

  1. включить быстрый режим в FaceDetector
  2. установите setTrackingEnabled в false, если вы не хотите отслеживать
  3. установите минимальный размер лица на соответствующий размер в соответствии с вашим набором данных
  4. Загрузите растровые изображения, используя Universal Image Loader или библиотеку скольжения Android. Я использовал библиотеку UIL.
  5. 640x480 - оптимальный размер для распознавания лиц и классификации для уменьшения размера за меньшее время и почти того же результата.
  6. Установите setLandmarkType и setClassificationType в соответствии с вашими потребностями и отключите, если не требуется.

Отключить отслеживание изображений:

    FaceDetector detector = new FaceDetector.Builder(context)
            .setTrackingEnabled(false)
            .build();

Это true по умолчанию, и может замедлить обнаружение, если вам не нужна эта функция.

Если вы посмотрите в документации FaceDetector.Builder вы увидите, что вы можете установить некоторые свойства, которые увеличат скорость.

Например:

public FaceDetector.Builder setProminentFaceOnly (boolean prominentFaceOnly)
Другие вопросы по тегам