Skip to content

Вопросы #22

@huppo

Description

@huppo

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

  1. Нахождение фото, обучение и facemark
    Вот мы выбрали 10 фотографий одного человека, на которых мы будем проводить обучение.
    Для моих фотографий наиболее подходит haarcascade_frontalface_default.xml, которая хорошо находит лица.
    Посмотрели да, все лица вырезаны как нужно, можно обучить.
    Но вот стоп, а давайте посмотрим, как на этих лицах будут видны точки с помощью модели lbfmodel.yaml.
    Мы видим, что на фотографии неправильно определен рот. Он находится на месте усов. Поменяем фотографию. Возьмем те, где facemark показывает все нормально.
    И вот мы запускаем LBPHFaceRecognizer->train
    А вот ему же в принципе все равно, с помощью какой модели мы находили лицо, с помощью какой модели точки на фото показывали.
    Как понять, что переданные фотографии в LBPHFaceRecognizer->train действительно хороши для обучения?
  2. Обучение
    Мы получили точки с помощью facemark и они более-менее совпадают с лицом человека.
    Насколько я понимаю, в большинстве представленных на рынке решениях алгоритм, примерно следующий:
  • Получить числовое описание лица (у нас с помощью facemark получается 68 точек, кто-то 128 точек, кто-то 256);
  • Записать в базу числовое описание лица, присвоив ему метку;
  • При распознавании, получить числовое описание лица и сделать поиск по базе, для того чтобы найти максимальное приближение.
    Почему мы используем LBPHFaceRecognizer, которые не понятно, найдет ли те же точки? Почему мы не возьмем результат facemark для дальнейшего обучения? А если возьмем, то как, можно ли это сделать с помощью OpenCV?
  1. Владимир и Ангелина recognize_face_by_lbph.php
    В результате исполнения кода мы получаем, рамочки на лицах и угадывание кто есть, кто. Но самое главное, это Confidence – «уверенность». Она очень большая 113 и 88. Но, чем ближе «уверенность» к 0, тем лучше. Поэтому скорее это неуверенность. Просто повезло.
    В модель не заложено такое понятие как ‘unknown’. То есть если мы на фотографии разместим 3-е лицо, оно найдется и будет указано, что это либо Владимир, либо Ангелина с определенной степенью «уверенности». Для того, чтобы мы могли заложить понятие ‘unknown’, нам нужно понимать, а какая максимальная «уверенность» должна быть в модели. Как мы видим 113 и 88 это очень много. Я экспериментировал на разных количествах фото и лиц более 2000. Так вот нельзя подобрать какую-то «уверенность» для модели в целом. Нужно подбирать «уверенность» для конкретного искомого лица. Но и здесь не все хорошо.
    Упростим задачу. Сделаем систему «свой-чужой». Обучаем систему по 10 фотографиям одного человека по фамилии Пупкин. А потом начинаем детектировать. 200 фотографий Пупкина и 2000 фотографий других людей. Смотрим верность детектирования (рис.1).
    Модель свой-чужой
    На рисунке 1 гистограммы. Горизонтальная ось- «уверенность». Вертикальная ось – количество фотографий, которые попали в «уверенность».
    Коричневый цвет – уверенность при распознавании фотографий Пупкина.
    Синий цвет – фотографии других лиц.
    Пересечение гистограмм означает, что где-то в районе «уверенности» 35 система начинает во всех подряд узнавать Пупкина по обученной модели.
    То есть моделью можно пользоваться для узнавания Пупкина до того, как «уверенность» будет больше 35.
    Но и это нам не даст много толку, потому что, если мы ограничимся «уверенностью» 35, то большой процент фотографий где на самом деле есть Пупкин мы отметем. (Коричневые столбики после «уверенности» 35).
    Либо я что-то делаю не так, либо получается какая-то бестолковая модель. А?
  2. Еще про распознавание
    Если обучить модель по 10 фотографиям и отправить 1 из этих фотографий на распознавание, то система выдаст уверенность 0. Но! Если эту фотографию пересохранить в jpg. То уверенность увеличится до 10. Можно ли доверять такой системе?

Спасибо что прочитали. Выдохнул. Мне нужно было с кем-то поговорить. Я бы может и не написал, но вижу, что вы 9 дней назад обновили докер, значит вас эта тема очень захватывает.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions