我使用了bazel命令并构建了tensorflow android演示应用程序,apk为149MB。是否有任何构建选项可用于减小apk的大小?
非常感谢。
答案 0 :(得分:0)
我不知道任何有用的构建选项(除了bazel build -c opt
之外),但我注意到APK包含两个相同的50MB的tensorflow_inception_graph.pb副本。一个是未压缩的(位于APK at assets / tensorflow_inception_graph.pb),另一个是压缩的(位于APK内置为assets / inception5h.zip的嵌套zip文件的顶层)。
答案 1 :(得分:0)
您应该尝试执行量化以减小模型的大小。 TensorFlow有一个名为图形转换的特殊工具来执行此操作。您可以阅读更多here。
例如,这就是我量化模型的方法:
/home/kwotsin/tensorflow-android/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=./frozen_model_mobilenet.pb \
--out_graph=./quantized_model_mobilenet.pb \
--inputs='Placeholder_only' \
--outputs='MobileNet/Predictions/Softmax' \
--transforms='
add_default_attributes
strip_unused_nodes(type=float, shape="1,299,299,3")
remove_nodes(op=Identity, op=CheckNumerics)
fold_constants(ignore_errors=true)
fold_batch_norms
fold_old_batch_norms
quantize_weights
quantize_nodes
strip_unused_nodes
sort_by_execution_order'
使用此功能,我将模型大小缩小到冻结模型的四分之一左右。
您应该注意的一件重要事情是在构建之前清除资产文件夹中不必要的图形/文件。我曾经没有清除旧文件并继续构建我的APK,直到文件大小太大(超过200 + MB,这很奇怪),直到我意识到这是因为我在资源文件夹中堆叠文件。