我正在使用 Tensorflow 作为诗人指南来训练自己的模型。我已经创建了 retrained_graph.pb 和 retrained_labels.txt。当我在应用程序中使用它时,我收到错误
引起:java.lang.UnsupportedOperationException:Op BatchNormWithGlobalNormalization 在 GraphDef 版本 21 中不可用。它已在版本 9 中删除。使用 tf.nn.batch_normalization()。在 org.tensorflow.Graph.importGraphDef( native 方法) 在 org.tensorflow.Graph.importGraphDef(Graph.java:118)
之后进一步训练模型以供应用使用 Tensorflow for mobile博客并创建optimized_graph.pb、rounded_graph.pb、mmapped_graph.pb 文件。
optimized_graph.pb 和 rounded_graph.pb 文件在 Android 应用程序中工作,没有任何错误。 使用 mmapped_graph.pb 时出现错误,无法初始化:java.io.IOException:不是有效的 TensorFlow Graph 序列化:无效的 GraphDef
使用optimized_graph.pb和rounded_graph.pb文件时应用程序的性能不好。虽然应用程序相机屏幕不包含任何花卉照片,否则随机花卉名称显示的置信率很高。任何只检测花并在没有花时保持空白的方法。 Screenshot
最佳答案
该应用程序的性能非常好,并且在手机 GPU 上运行速度非常快。问题在于你如何构建自己的模型。事实上,该应用程序的 tensorflow 图是为了根据您为其指定的类来识别图像而构建的。换句话说,例如,如果您教模型识别 4 个不同类别的图像,它会尝试标记它在这 4 个类别中看到的所有内容。 因此,当相机屏幕不包含花朵时,您会得到错误的结果。
“解决”此问题的一种方法是添加一个带有随机图像的额外类,这可能会对无花照片具有很高的置信度。
如果你想要一个更严格的模型,你必须使用完全不同的算法。
但是请记住,应用程序中使用的可能是计算机图像识别的最新技术
关于android - Tensorflow 重新训练模型性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859221/