如何在 Android 应用中部署自定义图像处理算法?
Posted
技术标签:
【中文标题】如何在 Android 应用中部署自定义图像处理算法?【英文标题】:How do I deploy custom Image Processing algorithms in an android app? 【发布时间】:2020-04-27 10:29:36 【问题描述】:我正在构建一个应用程序,该应用程序将具有建筑物或地标的反向图像搜索功能。简单地说,应用程序的地标识别。现在,我知道了 ML Kit for Firebase 的 Landmark Recognition API,但是如果我想部署自己的算法怎么办?
我的想法: 在应用程序中 - Faster-RCNN 用于特征检测,自动编码器用于图像去噪。 在服务器中 - 使用 Annoy Index 进行图像搜索和检索。
这可行吗?你怎么看 ?我可以使用 Tensorflow Lite 或其他工具在 android 应用程序中部署我自己的神经网络吗?
您有什么不同的建议吗?
【问题讨论】:
【参考方案1】:您可以使用 Tensorflow-lite 在 Android 设备上部署任何 Tensorflow
、Keras
和 pytorch
模型。如果你想部署你的模型进行实时图像/视频处理,那么你应该使用Mediapipe。 Mediapipe 是建立在 tensorflow-lite 之上的谷歌框架。与普通 tflite 部署相比,Mediapipe 性能更快,因为它使用Input/Output SSBO,它也是跨平台的。
【讨论】:
不错,不知道 MediaPipe。【参考方案2】:解决方案显然是使用 TensorFlow Lite。
在将其部署到您的 Android 设备之前,您可以在 Python 中使用现场解释器在本地对其进行测试(在您的情况下,真正的解释器是您的 Android 设备,但出于测试目的,您也可以在蟒蛇)。
【讨论】:
我阅读了 TensorFlow Lite 文档,发现有用于对象检测和分割的预训练模型。实际上,我已经为 CNN 准备好了正常的代码并且可以正常工作。我可以在 TensorFlow Lite 上部署我自己编写的代码吗?还是建议我用 TensorFlow Lite 的预训练模型替换我的分割和检测模型? 您可以在预训练模型的基础上训练自己的模型。但如果您对预训练模型感到满意,您可以继续将其放入您的应用中。 取决于你到底打算做什么。正如 Shubham Panchal 提到的,您可以尝试使用相关模型。但是,如果预训练模型没有您感兴趣的类,则从预训练模型开始并通过在您的自定义数据集上进行迁移学习训练将很有用。以上是关于如何在 Android 应用中部署自定义图像处理算法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的应用程序中正确处理自定义URL方案(避免多次处理)?