Идентификация лица Tensorflow во время выполнения для Android

Моя цель - создать приложение, которое может иметь несколько пользователей. Каждая учетная запись пользователя должна быть защищена идентификацией лица приложения. Я знаю, что могу не понять концепцию тензорного потока, но есть ли способ в Android, с помощью которого мы можем обучить приложение распознавать чье-то лицо относительно того, кто этот пользователь? У меня сложилось впечатление, что мы должны заранее создать модель обучения и применить ее в приложении, но что касается моей цели, приложение должно будет динамически обучаться, чтобы определять, кто его пользователи. Заранее спасибо.


person MetaSnarf    schedule 01.02.2018    source источник


Ответы (1)


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

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

  1. Набор данных. Для каждого лица, которое вы хотите распознать, вам понадобится множество изображений с разных ракурсов и как можно более разных (с очками, разными стрижками, бородой, макияжем, разными условиями освещения и т. Д.). Если вы не предоставите подробный набор данных, могут произойти две вещи: либо лицо, которое следует распознать, не будет, либо лицо не должно быть, но оно будет распознано в конце. Такой набор данных создать сложно, потому что в лучшем случае у вас будет несколько фотографий пользователя, регистрирующего лицо. Я думаю, что с этими фотографиями вы можете работать над созданием новых фотографий в разных условиях, но это невозможно сделать на мобильном телефоне.
  2. Предполагая, что у вас есть приличный набор данных, теперь вам нужно обучить сеть. Здесь у вас есть два варианта: построить свою модель с нуля (не такая уж хорошая идея) или использовать модель, предоставленную Google, и переобучить только последний слой из сети. Насколько мне известно, TensorFlow не имеет возможности проводить обучение на мобильном устройстве (это было бы слишком дорого для системы), поэтому вам придется где-нибудь обучить модель, а затем загрузить ее на устройство. TensorFlow имеет разработанную модель MobileNet для использования на мобильных устройствах, являясь хорошей отправной точкой для вашей сети, имея хорошую точность и не использую многие системные ресурсы. Вы также можете попробовать с Inception, но эта модель разработана для обеспечения точности, требует гораздо большего времени обучения и он тратит больше времени и ресурсов на оценку изображения.

Конечный сценарий для вашего приложения выглядит следующим образом: пользователь регистрирует свое лицо, делая несколько фотографий, которые отправляются на ваш сервер. Затем вам нужно переобучать сеть каждый раз, когда добавляется новое лицо и загружается модель внутри вашего приложения. Отсюда все просто, сфотографируйте пользователя и надейтесь, что его лицо обработано должным образом.

Может быть, вы хотите взглянуть на codelabs о TensorFlow, которые научат вас обучать модель и запускать ее на Android.

person Iulian Popescu    schedule 01.02.2018
comment
Я понимаю, что обучение на мобильном устройстве обойдется очень дорого. Я никогда не думал о том, чтобы отправить его на сервер и провести там обучение (спасибо за идею). Теперь первая проблема - как получить кучу фотографий от пользователя. Пользователи могут легко рассердиться, если приложение требует от них слишком многого. Благодарю за ваш ответ. действительно очень помогли. - person MetaSnarf; 03.02.2018