在没有网络的情况下,本地应用程序可以进行特定对象/图像检测。

20
我的需求是扫描一个固定的物体,识别出来后我想突出显示该物体,并相应地显示预先输入的参数,例如高度、宽度、周长等等。所有这些,我希望只用摄像头,没有网络也可以。

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

我已经看过CraftAR SDK了。它似乎能够按照我的要求工作,以识别对象,但它使用其服务器存储图像,而我不希望如此。因为我希望将静态图像存储在应用程序本身中。

1个回答

15
尝试使用TensorFlow目标检测API。链接:TensorFlow目标检测API 然后,您可以相应地定制整个应用程序行为,管理所有需求(例如,在成功检测到物体后收到某种回调后显示包含物体详细信息的弹出窗口),并且我相信您可以根据需要自定义TensorFlow目标检测场景部分(在这里,我特别谈论与UI相关的部分,具体来说是关于如何以图形方式检测应用程序中的对象)。
要回答有关离线工作方式和最终APK大小等详细信息,可以从以下链接更好地了解:
1] 逐步TensorFlow目标检测API教程-第1部分:选择模型 2] 如何使用TensorFlow的目标检测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(可以进一步优化为optimized_graph.pb,从而减小其大小)。
为了从初学者级别开始学习,我建议您通过以下codelab链接,了解这两个项目的工作方式,就像我一样。
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


你能告诉我tensorflow离线如何工作吗?他们离线有多少数据?如果可能的话,请在你的答案中提到这些事情,因为这是集成到你的应用程序时唯一重要的标准。 - Jitesh Mohite
@jitesh mohite,我已经改进了我的答案,供您参考,您可以尝试TF Detect(链接在答案中提供)。 - Nitin Gurbani
感谢您改进答案,对于其他想要做同样事情的人们非常有帮助。 - Jitesh Mohite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接