TFLITE python示例label_image.py如何与自定义SSD_Inceptionv2模型一起运行?

时间:2019-01-27 10:36:28

标签: tensorflow

我正在尝试使用来自此tensorflow github的TFLITE示例:

label_image.py

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

如您所见,我认为这些值是非常不同的,因为它们是不同的模型,但是我不确定如何将其转换为人类可读的输出。

0 个答案:

没有答案