繁体   English   中英

了解tflite model的输入和output

[英]Understanding input and output of tflite model

我是 Tensorflow 的新手,并试图将其合并到我的项目中。 我正在使用带有摄像头的树莓派 pi4 来检测我的喂鸟器的变化,拍照,然后用 tensorflow 识别那只鸟。 我正在使用Birds_V1来完成此任务。

我很好奇如何解释输入和 output。 根据概述,输入为:

预计是大小为 224 x 224 的 3 通道 RGB 彩色图像,缩放为 [0, 1]。

我对缩放到 [0,1] 的含义感到困惑此外,output

image_classifier:一个965维的概率向量,对应labelmap中的背景class和964种鸟类。

我完全迷失了这里的意思。

最后,我运行了interpreter.get_input_details() 和interpreter.get_output_details() 来看看它对我来说是什么output。

我把这个打印回来了,顶部是输入,底部是 output:

[{'name': 'module/hub_input/images_uint8', 'index': 170, 'shape': array([  1, 224, 224,   3]), 'dtype': <class 'numpy.uint8'>, 'quantization': (0.0078125, 128), 'quantization_parameters': {'scales': array([0.0078125], dtype=float32), 'zero_points': array([128]), 'quantized_dimension': 0}}]

[{'name': 'module/prediction', 'index': 171, 'shape': array([  1, 965]), 'dtype': <class 'numpy.uint8'>, 'quantization': (0.00390625, 0), 'quantization_parameters': {'scales': array([0.00390625], dtype=float32), 'zero_points': array([0]), 'quantized_dimension': 0}}]

我不知道如何解释这一点,并且想知道我是否应该放弃它或者如果它不重要则忽略它。

我很欣赏可以对此任何部分进行的任何澄清,并感谢您认为对解决此问题有用的任何资源。 我一直在寻求帮助,但还没有得到任何帮助。

@smile 在评论中回答了大多数问题,但为了社区的利益,在此处(回答部分)提供了澄清。

问题:我对缩放到 [0,1] 的含义感到困惑

:通常, Images只是一个Numpy Array (在您的形状为 224、224、3 的情况下),其值范围从0 to 255 我们通过将每个像素值除以 255 来Normalize Pixel Values ,以便每个Pixel的值都在[0,1]范围内。 如果我们不对Pixel Values进行NormalizeModel Converge所需的时间会非常长。

有关规范化的更多信息,请参阅此Stack Overflow Answer和此Stack Exchange Answer

问题:维数为 965 的probability vector ,对应于背景class和 label map 中的 964 种鸟类。 我完全迷失了这里的意思。

:在我们 CNN 的最后一层,我们将使用Softmax Activation Function ,其Number of Units等于Number of Classes (在您的情况下,其值为965 )。 因此,该LayerOutput将产生 965 个Probabilities ,所有Probabilities之和为 1。 Probability最高的Class表示对应于该Image AFZ 的Class

例如,在 5 种model output = [0.1,0.1,0.6, 0.1, 0.1]分别对应于[A,B,C,D,E]物种中。 这意味着输入图像被分类为物种 C(最大值 0.6)。 (以@smile 为例,解释得很好)。

问题:我不知道如何解释interpreter.get_input_detailsinterpreter.get_output_details

答案get_input_details的源代码解释说它返回一个我们的输入图像张量的所有细节的列表 同样, get_output_details的源代码解释说它返回了我们的 Output 预测张量的所有细节的列表 有关 API 解释器的信息,请参阅此Tensorflow 文档

所以在代码中,

[{'name': 'module/hub_input/images_uint8', 'index': 170, 

'shape': array([  1, 224, 224,   3]), 'dtype': <class 'numpy.uint8'>, 

'quantization': (0.0078125, 128), 'quantization_parameters': {'scales': 

array([0.0078125], dtype=float32), 'zero_points': array([128]), 

'quantized_dimension': 0}}]

Name表示图中输入张量的NameShape表示其shape Quantization的目的是减小Model的大小,因为Mobile DevicesMemory会更小。 有关Quantization的更多信息,请参阅此Tensorflow 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM