我们建立了一个基于Tensorflow对象检测Android演示应用的Android应用程序。它在使用Mobilenet网络时工作,但是如果我们尝试使用基于Inception v2的网络,则会崩溃。
Tensorflow盗梦空间v2对象检测是否可以在Android上工作?
我们在这里使用与Tensorflow检测器完全相同的代码。https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowObjectDetectionAPIModel.java
来自动物园的模特,zoo.md
使用TF对象检测API。如果我们使用一个使用ssd_mobilenet_v2_coco训练的网络pb文件,那么演示应用程序就能工作。如果我们使用使用faster_rcnn_inception_v2_coco训练的网络pb文件,它就会崩溃(见下文)
安卓应用程序是否有可能与“盗梦空间”v2模型协同工作?(移动网络的准确性很差,但盗梦空间要好得多)
11-14 12:11:47.817 7122-7199/org.tensorflow.demo E/AndroidRuntime: FATAL EXCEPTION: inference
Process: org.tensorflow.demo, PID: 7122
java.nio.BufferOverflowException
at java.nio.FloatBuffer.put(FloatBuffer.java:444)
at org.tensorflow.Tensor.writeTo(Tensor.java:488)
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.fetch(TensorFlowInferenceInterface.java:488)
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.fetch(TensorFlowInferenceInterface.java:442)
at org.tensorflow.demo.TensorFlowObjectDetectionAPIModel.recognizeImage(TensorFlowObjectDetectionAPIModel.java:170)
at org.tensorflow.demo.DetectorActivity$3.run(DetectorActivity.java:288)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)发布于 2018-11-15 08:42:35
我读过一次关于这个问题的文章。
我认为问题在于代码的这一行:
private static final int MAX_RESULTS = 100;这将为具有指定长度的输出创建一个数组。我认为SSD最大限度地给出了这个数量的预测,但是默认的更快的RCNN (没有任何配置从你的身边)给你更多。例如,尝试将此值增加到500。
发布于 2018-11-12 17:42:26
使用SSD盗梦空间应该是可能的,尽管不可取。对于移动设备来说,初始阶段是相当大的,我不认为我们现在没有量化支持。
https://stackoverflow.com/questions/53216184
复制相似问题