我已经使用一些自定义图像对模型进行了重新训练,如poets教程的tensorflow中所述。
使用以下命令在计算机上运行模型时
python -m scripts.label_image --graph=tf_files/retrained_graph.pb --image=tf_files/test_photos/apple.jpg
我期待它被归类为苹果,我得到了正确的分类结果:
apple 1.0 orange 1.40016e-08 lemon 2.19029e-09
当我将重新训练的模型和标签文件复制到android studio的资源文件夹并构建apk时,即使我向模型提供相同的图像,我也会获得不同的分类结果。
See the image of the classification result from the app that is built using the same model
我认为问题是由anaconda和android studio的不同tensorflow版本引起的。因此,我将tensorflow版本升级到1.7.0以构建模型,并在android studio tensorflow的依赖项中
compile 'org.tensorflow:tensorflow-android:+'
我也尝试了依赖
compile 'org.tensorflow:tensorflow-android:1.7.0'
但我收到了另一个错误,应用程序在启动后立即崩溃,所以我不得不转回
'org.tensorflow:tensorflow-android:+'
答案 0 :(得分:0)
最后,即使完成了优化和量化,我也无法使其适用于移动设备的张量流。移动设备和计算机上的相同图像完全不同。
因此,我改为Tensorflow Lite。有了tensorflow lite,我的问题就解决了。简短说明:Windows上不支持Tensorflow lite(特别是toco),因此我不得不使用ubuntu。