Tensorflow:确定预训练 CNN 模型的输出步幅
Tensorflow: Determine the output stride of a pretrained CNN model
我已经下载并正在使用 Tensorflow Lite Posenet Model 实现一个 ML 应用程序。这个模型的输出是一个热图,这是我刚接触的CNN的一部分。
处理输出所需的一条信息是"output stride"。用于计算在原始图像中找到的关键点的原始坐标。
keypointPositions = heatmapPositions * outputStride + offsetVectors
但是documentation没有指定输出步幅。我可以使用张量流中的信息或方法来获取此(任何)预训练模型的输出步幅吗?
- img 的输入形状是:
(257,257,3)
- 输出形状为:
(9,9,17)
(17 个不同关键点的 1 [9x9] 热图)
import tensorflow as tf
import numpy as np
import json
model = tf.lite.Interpreter('models\posenet_mobilenet_v1_100_257x257_multi_kpt_stripped.tflite')
model.allocate_tensors()
with open('model_details.json', 'w') as outfile:
info = dict(list(enumerate(model.get_tensor_details())))
s = json.dumps(str(info))
outfile.write(s)
输出步幅可以从以下等式获得:
resolution = ((InputImageSize - 1) / OutputStride) + 1
示例:具有 宽度 的 225 像素和 输出
16 的步幅导致输出大小为 15
15 = ((225 - 1) / 16) + 1
对于tflite PoseNet模型(分辨率为9):
9 = ((257-1)/ x) + 1
x = 32
所以输出步幅为 32
我已经下载并正在使用 Tensorflow Lite Posenet Model 实现一个 ML 应用程序。这个模型的输出是一个热图,这是我刚接触的CNN的一部分。
处理输出所需的一条信息是"output stride"。用于计算在原始图像中找到的关键点的原始坐标。
keypointPositions = heatmapPositions * outputStride + offsetVectors
但是documentation没有指定输出步幅。我可以使用张量流中的信息或方法来获取此(任何)预训练模型的输出步幅吗?
- img 的输入形状是:
(257,257,3)
- 输出形状为:
(9,9,17)
(17 个不同关键点的 1 [9x9] 热图)
import tensorflow as tf
import numpy as np
import json
model = tf.lite.Interpreter('models\posenet_mobilenet_v1_100_257x257_multi_kpt_stripped.tflite')
model.allocate_tensors()
with open('model_details.json', 'w') as outfile:
info = dict(list(enumerate(model.get_tensor_details())))
s = json.dumps(str(info))
outfile.write(s)
输出步幅可以从以下等式获得:
resolution = ((InputImageSize - 1) / OutputStride) + 1
示例:具有 宽度 的 225 像素和 输出 16 的步幅导致输出大小为 15
15 = ((225 - 1) / 16) + 1
对于tflite PoseNet模型(分辨率为9):
9 = ((257-1)/ x) + 1
x = 32
所以输出步幅为 32