java - 在 Spring Boot 应用程序中使用 python/tensorflow 进行人脸识别
问题描述
我目前正在开发用于面部识别的服务器端 Web 应用程序(使用 Spring Boot)。人脸检测应该使用 SSD 进行,人脸识别使用 ArcFace。我做了一些研究,发现这些与机器学习相关的事情最好在 Python 中完成。因此,我研究的下一阶段是找出将 Python 机器学习与 Spring Boot 应用程序一起使用的最佳方法。两种合适的(至少在我看来)方法是:
使用预训练的 Tensorflow 模型(使用 tensorflow 依赖于 maven)。但是,每次将新人的脸添加到系统中时,都必须重新训练用于人脸识别的 tensorflow 模型。在 Java 中做到这一点的最好方法是什么?(我想以某种方式从 Java 运行 Python 脚本来重新训练模型)。
使用将在本地主机上运行的 REST API 构建 python 应用程序。Java 只会将带有图像的命令发送到该 REST API 并获得结果(这意味着 - 假设我发送了 30 张图像以及对这些图像执行人脸识别的命令,然后得到一个识别出的人脸列表作为结果,或发送 10 张应添加到系统中的新人图片——即应用程序会学习人脸)。
您能否就这两种方法中的哪一种更好以及为什么给我一些意见?
附言。我不想用 Python 构建整个 Web 应用程序的原因是我已经有(一些)构建 Spring Boot 应用程序的经验,而对 Python 的经验却很少。
解决方案
作为一种通用方法,我建议在不同的过程中训练模型(使用 Python),一旦训练完成,使用Tensorflow Java API将其加载到 Java中(使用 Spring Boot)。
此外,如果您无法承受任何停机时间(例如,服务层可以部署在 Kubernetes 中),您可能需要一些机制来用新模型替换现有模型。
推荐阅读
- c# - 构造函数链中的 IDisposable
- python - 如何解释 numpy 数组的二进制文件?
- neo4j - 如何将节点属性值分配给 Cypher 中的变量?
- apollo - Apollo GraphQL 客户端:本地和远程状态模式
- delphi - TApplicationEvents 与 TIdTcpServer 问题?
- reactjs - Reactjs:this.handleEdit 不是函数
- javascript - TestCafe 有没有办法验证 Chrome 网络调用?
- python - Python中如何调整Pool的进程数
- spring - spring boot 2.1.3.RELEASE 发生非法反射访问操作
- javascript - 在 Puppeteer 中获取“语法错误:无效或意外令牌”