Android - функция распознавания лиц - PullRequest
14 голосов
/ 20 марта 2012

В настоящее время я работаю над приложением для телефонов Android. Мы хотим обнаружить черты лица. Программа должна уметь определять положение глаз, носа, рта и края лица.

Точность должна быть хорошей, но не должна быть идеальной. Можно потерять некоторую точность, чтобы ускорить процесс. Все лица будут фронтальными, и мы будем знать приблизительные положения объектов раньше. Нам не нужно живое обнаружение. Функции должны быть извлечены из сохраненных изображений. Время обнаружения должно быть только до тех пор, пока оно не мешает работе пользователя. Так что, может быть, даже 2 или 3 секунды в порядке.

С этими допущениями не должно быть слишком сложно найти библиотеку, которая позволит нам достичь этого. Но мой вопрос, каков наилучший подход? Каково ваше предложение? Впервые я разрабатываю для Android, и я не хочу двигаться в неправильном направлении. Является ли это хорошей идеей для нас, библиотеки, или лучше (быстрее / выше точность) реализовать какой-либо существующий алгоритм самостоятельно?

Я много гуглил и нашел много интересного. В Android API также есть функция распознавания лиц. Но возвращаемый класс лица (http://developer.android.com/reference/android/media/FaceDetector.Face.html) содержит только положение глаз. Это меньше для нашего приложения. Тогда есть также OpenCV для Android или JavaCV. Как вы думаете, с какой идеей работать? Для какой библиотеки есть хорошая документация, учебные пособия?

Ответы [ 5 ]

8 голосов
/ 20 марта 2012

OpenCV имеет учебник для этой цели , к сожалению, это только C ++, поэтому вам придется конвертировать его в Android.

Вы также можете попробовать FaceDetection API в Android, , это простой пример , если вы обнаруживаете изображения из рисованных изображений или изображений с SDCard. Или более свежий Camera.Face API , который работает с изображением с камеры.

Если вы хотите получить изображение с камеры в динамическое время, чем сначала прочитайте Как сделать снимок с камеры. , но я бы порекомендовал вам проверить официальные образцы OpenCV Android и использовать их.

Изменено:

Mad Hatter Пример использования подхода Camera с SurfaceView. Это многообещающе быстро. Взгляните на Безумный Шляпник .

Соответствующий код, в случае, если ссылка не работает, это:

public class FaceDetectionListener implements Camera.FaceDetectionListener {
    @Override
    public final void onFaceDetection(Face[] faces, Camera camera) {
        if (faces.length > 0) {
            for (Face face : faces) {
                if (face != null) {
                    // do something
                }
            }
        }
    }
}
4 голосов
/ 21 марта 2012

Я работаю над похожим проектом.Я провел некоторое тестирование с API FaceDetection и могу сказать, что он не поможет вам, если вы хотите обнаружить глаза, нос, рот и края.Этот API позволяет только обнаружить глаза.Бесполезно, если вы хотите реализовать распознавание лиц, потому что вам нужно больше функций, чем просто глаза во время обнаружения лица.

Комментарий к вашему первому ответу: вам действительно нужно распознавать лицо.Поиск функций является частью распознавания лиц, и получение этих функций является первым шагом в приложении распознавания лиц.С OpenCV вы можете использовать Haar-подобные функции для получения этих функций (глаза, нос, рот и т. Д.).

Однако я обнаружил, что использовать функции openCV с некоторыми сложностямиотдельный файл .cpp.Существует функция JNIEXPORT, которая позволяет редактировать изображение галереи Android с помощью функций OpenCV внутри файла .cpp.OpenCV имеет образец Haar-подобной функции обнаружения .cpp файла, который можно использовать для обнаружения лица (и распознавания в качестве второго шага с другим алгоритмом).

Вы разрабатываете для Windows или Linux?Я использую Windows, и мне не удалось использовать учебник, на который вы ссылались, для настройки OpenCV.Однако у меня есть рабочая среда Windows OpenCV в Eclipse, и все образцы из OpenCV 2.3.1 работали.Может быть, мы можем помочь друг другу и поделиться информацией / результатами?пожалуйста, дайте мне знать.

2 голосов
/ 27 апреля 2016

Я нашел хорошее решение для обнаружения эмоций на лице, предоставляемое этим Microsoft API. Этот API-интерфейс возвращает JSON-ответ и график эмоций. Вы можете попробовать этот API для хорошего результата.

API эмоций

Распознавание эмоций Распознает эмоции, выраженные одним или несколькими людьми на изображении, а также возвращает ограничивающую рамку для лицо. Обнаруженные эмоции - это счастье, грусть, удивление, гнев, страх, презрение и отвращение или нейтралитет.

  • Поддерживаемые форматы входного изображения включают JPEG, PNG, GIF (первый кадр), BMP. Размер файла изображения не должен превышать 4 МБ.
  • Если пользователь уже вызвал Face API, он может отправить прямоугольники лица в качестве необязательного ввода. В противном случае, Emotion API будет первым вычислить прямоугольники.
  • Диапазон обнаруживаемых размеров лица составляет от 36x36 до 4096x4096 пикселей. Лица вне этого диапазона не будут обнаружены.
  • Для каждого изображения максимальное количество обнаруженных лиц составляет 64, и лица ранжируются по размеру прямоугольника лица в порядке убывания. Если нет Обнаружено лицо, будет возвращен пустой массив.
  • Некоторые лица могут быть не обнаружены из-за технических проблем, например, очень большие углы лица (поза головы), большая окклюзия. Фронтальная и Прифронтовые грани имеют лучшие результаты. -Эмоции презрение и отвращение экспериментальное.

https://www.microsoft.com/cognitive-services/en-us/emotion-api

0 голосов
/ 20 августа 2015

Взгляните на новый Android Face API, который включает в себя обнаружение лицевых ориентиров.Здесь есть учебник:

https://developers.google.com/vision/detect-faces-tutorial

0 голосов
/ 29 апреля 2014

это хороший запрос.Я предполагаю, что если вы получите характерные точки для глаз, то мы можем рассчитать другие точки также, зная приблизительное расстояние других точек от глаз.

См. Эту статью, чтобы узнать больше о том, что я пытаюсь сказать: http://klucv2.googlecode.com/svn/trunk/docs/detection%20of%20facial%20feature%20points%20using%20anthropometric%20face%20model.pdf

Надеюсь, это поможет.

...