iOS面部识别持续学习

时间:2019-12-30 19:02:47

标签: swift machine-learning facial-identification createml mlmodel

我受命寻找在具有机器学习功能的应用程序上创建面部识别功能的最佳方法。此功能将用于使员工进入应用程序。该功能将支持...

  • 每个设备有多个用户。

  • 连续训练(因此,当mlmodel识别出某人时,它将在后端将新图像发送到模型并使用最近拍摄的新图像训练模型)

  • 更新新类(当新用户出现并想要使用该应用程序时,该应用程序将为其拍摄照片,并将这些图像发送至后端的模型训练程序,该训练程序将mlmodel训练为识别新用户)

    • 将最新更新的模型发送到同一商店中的其他设备,以便他们也可以识别员工

我尝试过的。

  • 我已经进行了设备培训和Knn。但是据我了解,设备上的培训对此不起作用,因为设备上的培训模型最多只能有10个课程,而knn却无法给出非常准确的结果...

  • 使用createML进行手动培训和再培训。这是我...

    1. 在我的Mac上使用createML训练模型
    2. 使用URLSession将模型下载到应用中
    3. 通过应用添加新用户或为旧用户拍摄更新的照片
    4. 发送新用户/更新的旧用户的图像以在我的mac机上创建ML
    5. 使用我为所有用户拍摄的所有图像创建一个全新的模型
    6. 永远重复第2-5步

    这可以很好地工作,但对于应用程序最终要反复执行的最终用户数量来说,这是难以置信的昂贵,费时且不可行的事情。

    我仍然对机器学习还很陌生,我觉得这是错误的做法。我只想看看是否有人知道更好/更有效的持续学习方法,以便该模型能够记住以前学到的东西,并且我可以使用createML向其中添加新的类或图像...或者是否有人可以指出我的意思。朝着正确的方向。

2 个答案:

答案 0 :(得分:0)

要获得准确的结果,您应该研究更强大的机器学习模型。这是一个非常强大的人脸识别模型的示例:https://github.com/davidsandberg/facenet

现在,下一个问题变为如何将应用程序与此新模型集成。这确实取决于您,但是我建议您签出一些后端替代方案,例如利用AWS服务(EC2计算服务器,Sagemaker,API Gateway等)来运行和协调推理。这样做有两个好处,那就是您的应用程序将主要位于前端,从而使其轻巧且可在不同和较旧的IOS平台和设备之间进行扩展。但是更重要的是,它为您提供了更多的空间来将来做更复杂的事情,而使用CoreML时,您将主要限于设备上的计算能力以及基于Swift的语言。

但是,利用云服务还会附带其他弊端,例如学习曲线(学习AWS服务)和潜在的隐私问题。

这只是其中一种方式,还有许多其他类似的云提供商,例如Google,IBM和Azure。在不知道您的时间表,预算,技术专业知识的情况下,我只能为您提供这些选择,其余的选择则由您自己决定

答案 1 :(得分:0)

看看Turi Create(同样来自Apple:https://github.com/apple/turicreate

它可以完成Create ML的所有工作,但是它是python且可编程的,因此您可以在后端自动化整个过程。如果您知道如何在CreateML中做到这一点,那么您会发现Turi Create易于使用。