我正在尝试使用来自此tensorflow github的TFLITE示例:
mobilenet_quant_v1_224.tflite 可以按预期工作,但是如果我使用 SSD_InceptionV2 中的自定义模型,则无法显示结果。我确定我正在获取输出数据,但我只是不知道如何解析它。
例如,这里Using the interpreter from a model file
的代码工作完美,当我打印(output_data)时得到:
[[[-0.07882401 -0.06323403 0.76715803 0.6412739] [-0.05058636 0.1590938 0.47510588 1.2784884] [0.49940234 0.24378055 0.99502057 1.0976889]]]
如果您比较两个代码样本,它们几乎是相同的,但是 label_image.py 会在此部分上打印带有分数的标签:
output_data = interpreter.get_tensor(output_details[0]['index'])
results = np.squeeze(output_data)
top_k = results.argsort()[-5:][::-1]
labels = load_labels(args.label_file)
for i in top_k:
if floating_model:
print('{0:08.6f}'.format(float(results[i]))+":", labels[i])
else:
print('{0:08.6f}'.format(float(results[i]/255.0))+":", labels[i])
当我使用自定义模型( SSD_InceptionV2 )时,出现以下错误:
Traceback (most recent call last):
File "label_image.py", line 94, in <module>
print('{0:08.6f}'.format(float(results[i]))+":", labels[i])
IndexError: index 3 is out of bounds for axis 0 with size 3
具有 SSD_InceptionV2 的变量值:
top_k = [[0 1 3 2]]
[1 0 2 3]
[1 0 3 2]]
i = [[0.09889236 0.43745735 1.096226 1.0601109 ]
[0.19237855 0.13102278 0.96343076 0.3539551 ]
[0.09889236 0.43745735 1.096226 1.0601109 ]
[0.4487209 0.25456518 0.993585 1.1151786 ]]
在使用tflite模型执行期间: mobilenet_quant_v1_224.tflite ,变量值为:
top_K = [458 653 835 514 328]
i = 226
如您所见,我认为这些值是非常不同的,因为它们是不同的模型,但是我不确定如何将其转换为人类可读的输出。