在运行时的Tensorflow面部识别为Android

时间:2018-02-01 07:41:24

标签: android tensorflow machine-learning vision-api facial-identification

我的目标是创建一个可以拥有多个用户的应用。必须使用应用的面部识别来保护每个用户帐户。我知道我可能不会为tensorflow提供正确的概念,但是他们在Android中的一种方式我们可以训练应用程序来识别某个人面对这个用户是谁?我的印象是我们必须事先创建一个培训模型并将其应用到应用程序上,但至于我的目标,应用程序必须动态训练以确定谁是其用户。谢谢提前。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是正确的方法。我知道它可以通过Eigenfaces来实现,但我从来没有尝试过,所以也许你也想考虑它。

回到你的想法。我不知道成功的几率是多少,但碰巧我知道你会遇到很多挑战的地方:

  1. 数据集。对于您想要识别的每张脸,您将需要从不同角度和尽可能不同的许多图像(使用眼镜,不同的理发,胡须,化妆,不同的闪电条件等)。如果您未能提供详细的数据集,则可能会发生两件事:要么应该识别的面部不应该面部,要么面部不应该出现,但最终会识别出面部。像这样的数据集很难创建,因为在最好的情况下,您将拥有注册面部的用户的一些照片。我认为通过这些照片,您可以在不同条件下生成新照片,但这不能在移动设备上完成。
  2. 假设您有一个不错的数据集,现在您必须训练网络。在这里,您有两种选择:从地面构建模型(不是一个好主意)或使用Google提供的模型和网络中的retrain only the final图层。据我所知,TensorFlow没有选择在移动设备上进行培训(这对系统来说会很昂贵),所以你必须在某个地方训练模型,然后在设备上下载。 TensorFlow的模型MobileNet旨在用于移动设备,是您网络的良好起点,具有良好的准确性且不使用许多系统资源。您也可以尝试使用Inception,但此模型专为提高准确性而设计,具有更长的培训时间,并且在评估图像时会花费更多时间和资源。
  3. 您的应用的最终方案是这样的:用户通过拍摄一些发送到您服务器的照片来注册他的脸。然后,每次添加新面部并在应用程序中下载模型时,您必须重新训练网络。从这里开始,事情很简单,拍摄用户的照片,并希望它的面部处理得当。

    也许您想了解一些关于TensorFlow的{​​{3}},它们教您如何训练模型并在Android上运行。