Распознавание лиц в python (opencv) как правильно тренировать модель? - PullRequest
0 голосов
/ 27 апреля 2018

Я новичок в opencv и вообще в нейронных сетях, но у меня есть небольшой опыт по теме.

Я пытаюсь создать систему, которая может определять лицо определенного человека на фотографии.

На самом деле я тренирую модель с использованием opencv и haar с примерно 20 фотографиями, в качестве примера я использую фотографии Элвиса Пресли. Поэтому в первую очередь я запускаю алгоритм, который обнаруживает и извлекает лицо Элвиса из всех фотографий и сохраняет лица в папке. Затем я тренирую модель с этими лицами. После этого я отправляю несколько изображений разных людей в программу и использую haar и модель, которую пытаюсь обнаружить Элвиса.

Дело в том, что у меня огромное количество ложных срабатываний.

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

Но если я только ищу Элвиса, обучающего сеть только фотографиями Элвиса, модель просто не работает ...

Как может быть подход идентификации лица одного человека на фотографиях между многими другими людьми? Является ли единственное решение для обучения моей сети огромным количеством лиц Элвиса?

Я использую python с opencv, numpy

Можете ли вы привести мне пример для лучшего обучения?

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Я бы порекомендовал вам попробовать OpenFace, популярную систему распознавания лиц с открытым исходным кодом, построенную на основе dlib. Он использует методы, такие как классификатор Хаара и CNN, для классификации лиц. Нейронная сеть обучается создавать вложения Лица для каждого лица, а затем с помощью тестового изображения она может рассчитать расстояние (ошибку), чтобы соответствовать ближайшему из известных вложений.

OpenFace работал очень хорошо для меня, он служит своей цели, однако вы должны убедиться, что встраивание граней генерируется для граней, которые хорошо видны. Вы можете пойти на многие обертки OpenFace для Python. Я недавно разработал проект, используя его, вы можете просто клонировать его. Вот ссылка: Распознавание лиц Я загрузил несколько скриншотов во время тестирования, он может четко различать несколько лиц на одном изображении.

Существует еще один способ достижения этого (экспериментальный). Нейронные сети могут идентифицировать несколько объектов в одном изображении (видеокадр), существуют методики и стандартные модели, такие как Yolo и SSD, которые предназначены для обнаружения одного кадра и нескольких объектов. Бумага Yolo v2 . Но идентификация лиц намного сложнее, чем идентификация объектов, потому что в большинстве случаев лица выглядят одинаково, но с объектами это не так. Вы можете исследовать и разработать собственную нейронную сеть на основе Yolo для одноразового обнаружения нескольких лиц. Но я думаю, что Dlib и OpenFace могут предоставить лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...