如何在Tensorflow Lite上为CoreML委托设置填充类型以修复未设置"PoolingLayerBuilder(MEAN)_1"?



我最近在Google的Vision平台上训练了一个对象检测模型,并将其导出为TensorFlow Lite边缘模型。

当在带有CoreML委托的iOS设备上运行时,我在Xcode中收到此错误:

验证器错误:池化层'PoolingLayerBuilder (MEAN)_1'的填充类型未设置。

当在iOS上使用TensorFlow lite与CoreML委托运行时,我得到这个错误:

编译模型错误读取protobuf规格错误验证器错误:池化层'PoolingLayerBuilder (MEAN)_1'的填充类型未设置。

以下是我到目前为止所做的尝试:

  • 更新我的pod以确保我在tensorflowlitesswift夜间构建
  • 仅在CPU上运行(模型工作,所以我知道这是一个CoreML委托问题)
  • 确保CoreMLDelegate使用最新版本的CoreML (3)

下一步?

  • 尝试修改TFLite文件本身以设置池层的填充类型。如何做到这一点并不明显

  • 尝试修改CoreML委托设置填充类型为默认值?在这个文件的某个地方?https://github.com/tensorflow/tensorflow/blob/nightly/tensorflow/lite/delegates/coreml/builders/pooling_layer_builder.cc L54

这是正确的方法吗?还是有我没有看到的更简单的解决方案?

为了编辑TFlite模型,我建议您使用这个名为neutron的python库。我还没有用对象检测模型进行测试[我会在当天更新此评论],但是,我设法访问了模型本身并修改了它的配置。

安装tron时,调用模型。tflite作为netron 'model.tflite',服务器链接将显示在命令shell中。当您单击它时,您将可以访问模型的图形模式。当你点击一个图层时,会显示一组属性,你可以在那里修改。我设法注意到这要感谢这个github评论。我想这会解决你的问题。

同时,一旦我有了一个新的对象检测用例的部署模型,我将尝试修改我的模型的CoreML版本。我会随时更新!

让我知道到目前为止这是否对你有帮助。

你可以试试:

  1. 使用tensorflow-onnx将模型转换为。onnx格式。
  2. 而不是转换。tflite到CoreML模型,你可以尝试转换tensorflow模型(。h5, SavedModel, tf.keras。模型,具体功能)直接到CoreML。参考:Tensorflow 2转换

相关内容

  • 没有找到相关文章

最新更新