来自app的本地特定对象/图像检测,无需互联网

时间:2018-04-16 08:34:13

标签: android image-recognition object-recognition

我的要求是扫描固定的物体。在认识到之后,我想突出显示对象并相应地显示相应的预先参数,如高度,宽度,周长等。

这一切,我想做的,没有互联网,只使用相机。

请告诉我是否有任何解决方案/建议。

我见过CraftAR SDK。它似乎按照我的要求工作,以识别对象,但它使用其服务器来存储图像,这是我不想要的。因为我想要静态图像,存储在应用程序本身。

1 个答案:

答案 0 :(得分:14)

尝试使用TensorFlow对象检测API。链接:TensorFlow Object Detection API

然后,您可以相应地自定义您的整体应用行为,管理您的所有要求(例如,在使用Tensoflow对象检测API时,显示弹出窗口,其中包含在检测到某些回调后检测到的对象的所有详细信息在成功检测到对象之后)以及我相信您可以根据需要自定义TensorFlow对象检测方案部分(这里,我正在谈论UI相关部分,特别是在您希望应用程序如何检测到以图形方式对象)。

通过以下链接可以更好地了解有关离线工作方式以及最终整体APK尺寸等详细信息:

1] Step by Step TensorFlow Object Detection API Tutorial — Part 1: Selecting a Model

2] How to train your own Object Detector with TensorFlow’s Object Detector API

作为概述,为了离线检测对象,您必须使用自己的一组数据/对象来限制(只是为了减小APK大小)(正如您所提到的那样,您有一个固定的对象可供检测,这很好)然后你必须使用SSD-Mobilenet模型训练(可以在本地和在云上训练)这组对象。那么你将拥有自己训练的模型(简单的话),这些模型会给你一个retrained_graph.pb文件(这会进入你的android项目的资产文件夹),这是包含技巧的最终结果(在更简单的单词)实时检测和分类相机帧,从而根据提供的信息(或数据/对象集)显示结果(或对象细节);无需任何类型的互联网连接。例如,TF Detect可以实时跟踪摄像机预览中的对象(来自80个类别)。

如需进一步参考,请点击以下链接:

1] Google Inception Model

2] Tensorflow Object Detection API Models

3] Speed/Accuracy Trade-offs for Modern Convolutional Object Detectors

您还可以将retrained_graph.pb优化(或压缩)到optimized_graph.pb,因为这是增加APK文件大小的唯一主要因素。很久以前,当我尝试检测5个不同的对象时(使用TF Classify),每个对象的文件夹大约有650张照片,所有5个文件夹(一起)的总大小约为230 mb,我的retrained_graph.pb大小是只有5.5 mb(可以进一步优化到optimize_graph.pb,甚至可以减小其大小)。

为了从初学者的水平开始学习它,我建议你一旦完成这些代码组链接并理解这两个项目的工作,我也是这样做的。

1] TensorFlow For Poets

2] TensorFlow For Poets 2: Optimize for Mobile

祝你好运。

TensorFlow GitHub(Master)的以下链接几乎包含所有内容:

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android