Вообще говоря, я бы разбил проблему на несколько этапов, например
1 - Есть ли лицо на картинке?
2 - Где лицо на картинке?
3 - Лицо на картинке распознается NN (нейронной сетью)?
В каждом случае я бы предложил вам создать отдельный NN и обучить его отвечать на поставленные вопросы.
Что касается структуры NN, ответить немного сложнее, поскольку это зависит от ваших входных данных и желаемого результата. Например, если у вас было изображение размером 100x100 пикселей, я полагаю, что его возможно иметь 10000 входов. Возможно, вы захотите выполнить некоторую предварительную обработку перед тем, как сказать, обнаруживать овалы таким образом, чтобы вы могли смотреть и видеть, есть ли количество овалов в предсказуемом контуре (1 для лица, 2 для глаз и один для рта, возможно) , Если вы предварительно обрабатываете данные, у вас могут быть входные данные для каждого овала.
Теперь для вывода ... для первого вопроса у вас может быть только один выход, чтобы сказать, насколько NN уверен, что во входных данных есть грань, то есть оценщик 0.0 (демонстративно без грани) -> 1.0 ( вызывающе лицо). Таким образом, вы можете перейти к этапам 2 и 3.
В этот момент я мог бы сказать, что это нетривиальная проблема, и вам может быть лучше взглянуть на некоторые из доступных фреймворков, например. OpenCV
Теперь для учебной части вам необходимо иметь запас изображений, доступных для обучения NN. Есть несколько способов, которыми вы могли бы тренировать NN. Одним из возможных решений является использование метода, называемого обратным распространением 1 , 2 . В общих чертах, вы используете NN на изображении и сравниваете его с заданным результатом. Если неправильно настроить NN для получения желаемого результата и повторить.
Если вам нужна хорошая книга по искусственному интеллекту, то я очень рекомендую Искусственный интеллект: современный подход Рассела и Норвиг. Я уверен, что есть более подходящие учебники Computer Vision, но книга Рассела и Норвига - отличный стартер.