我是TensorFlow的新手,如果我说些荒唐的话,我深表歉意。
我一直在使用TensorFlow.js在PoseNet中使用browser模型。在此项目中,我可以更改algorithm and parameters,以便在检测某些姿势时可以获得更好的结果。在我的用例中,最重要的参数是乘数,数量字节和输出步幅。
到目前为止,我已经取得了想要的结果。但是,我想将这些结果转换为TensorFlow Lite,以便可以在iOS应用程序中使用它。我设法在TensorFlow Lite文件(tflite)中找到了PoseNet模型,甚至找到了TensorFlow提供的iOS app示例,我能够加载模型文件并使它在iOS上运行。
问题是...我无法在iOS应用上更改参数(乘数,量化字节和输出步幅)。我无法在任何地方找到它。我试图在iOS应用程序源代码中搜索这些参数,我试图找到将TensorFlow.js模型转换为TensorFlow Lite的方法,以便我可以在应用程序中加载所需的参数,但是没有运气。
[我正在写这篇文章,所以也许你们可以为我指出正确的方向,这样我就可以将TensorFlow.js上的内容“翻译”为TensorFlow Lite。
编辑:
这是最近几天我学到的:
TFLite设计用于在轻量级运行时为固定模型提供服务。因此,按需修改模型参数并不是其设计目标。
我查看了PoseNet的TF.js代码,发现了类似的设计。看来您可以修改参数,因为它们对于每个参数实际上都有不同的模型。 https://github.com/tensorflow/tfjs-models/blob/b72c10bdbdec6b04a13f780180ed904736fa52a5/posenet/src/checkpoints.ts#L37
TFLite模型通常不支持动态参数。创建神经网络时,输出跨度乘数和量化字节是固定的参数。
所以我要做的是从TF.js模型中提取权重,然后将其放入现有的MobileNet代码中。
这就是我现在需要帮助的地方。谁能指出我要加载和更改模型的方向,以便随后可以使用自己的参数将其转换为tflite?
EDIT2:
我找到了一个可帮助我将TF.js模型转换为TF Lite Griffin98/posenet_tfjs2tflite的存储库。我仍然无法定义Quant Bytes。
您可能会发现此存储库很有用:https://github.com/tensorflow/tfjs/tree/master/tfjs-converter
这是PoseNet的Python实现:https://github.com/atomicbits/posenet-python