在运行Android TF Detect Demo并使用我重新训练的3类ssd_mobilenet_v1_coco模型时,我的TF检测Demo崩溃,给出了IndexOutOfBoundException,这是
12-26 17:53:13.931 22429-25212 / org.tensorflow.demo E / AndroidRuntime:FATAL EXCEPTION:推理过程:org.tensorflow.demo,PID:22429 java.lang.ArrayIndexOutOfBoundsException:length = 3; java.util.Vector.arrayIndexOutOfBoundsException(Vector.java:907)的java =。在java.util.Vector.element(Vector.java:328)java.util.Vector.get(Vector.java:442)的org上的索引= 3在android.os.Handler.handleCallback(Handler.java:739)的org.tensorflow.demo.DetectorActivity $ 3.run(DetectorActivity.java:289)上的.tensorflow.demo.TensorFlowObjectDetectionAPIModel.recognizeImage(TensorFlowObjectDetectionAPIModel.java:194) .os.Handler.dispatchMessage(Handler.java:95)在android.os.Hooper.loop(Looper.java:148)android.os.HandlerThread.run(HandlerThread.java:61)
它来自
for (int i = 0; i <= outputScores.length; ++i) {
final RectF detection =
new RectF(
outputLocations[4 * i + 1] * inputSize,
outputLocations[4 * i] * inputSize,
outputLocations[4 * i + 3] * inputSize,
outputLocations[4 * i + 2] * inputSize);
pq.add(new Recognition("" + i, labels.get((int) outputClasses[i]), outputScores[i], detection));
}
通过添加“???”解决我的Label文件中的字符串,似乎应用程序遵循第一个ID为1的pbtxt格式。