TensorFlow Lite相关
来源:互联网 发布:云计算平台监控软件 编辑:程序博客网 时间:2024/06/15 16:27
谷歌移动端深度学习框架TensorFlow Lite正式发布 https://zhuanlan.zhihu.com/p/31063235
https://github.com/tensorflow/tensorflow/labels/comp%3Alite
https://github.com/tensorflow/tensorflow/issues/15387
https://github.com/tensorflow/tensorflow/issues/15267
1. tensorflow lite: convert error for the quantized graphdef
https://stackoverflow.com/questions/47463204/tensorflow-lite-convert-error-for-the-quantized-graphdef
基本的转换流程可参考,有官方回复为什么quantized graphdef会fail,大概是由于新旧quantized机制不一样
2. Android tensorflow lite kernel_util.cc:34 input_product_scale < output_scale
https://github.com/tensorflow/tensorflow/issues/14642
基本的转换流程可参考
3. Build Tensorflow Lite C++ API into a dynamic library for Android
https://github.com/tensorflow/tensorflow/issues/14758
备份,暂时不知道有什么用
4. tensorflow lite: error when convert frozen model to lite format
https://github.com/tensorflow/tensorflow/issues/14761
提供了几个可用model链接,待尝试
5. freeze_graph "No variables to save"
https://github.com/tensorflow/tensorflow/issues/14580
6. Tensorflow Lite demo app with inception-v3/Mobilenet_v1 (float) model crashes
line 46:
//private static final String MODEL_PATH = "mobilenet_quant_v1_224.tflite";private static final String MODEL_PATH = "mobilenet_v1_1.0_224.tflite";//private static final String MODEL_PATH = "inceptionv3_slim_2016.tflite";/** Name of the label file stored in Assets. */private static final String LABEL_PATH = "labels.txt";//private static final String LABEL_PATH = "imagenet_slim_labels.txt";
line 61:
//static final int DIM_IMG_SIZE_X = 224;//static final int DIM_IMG_SIZE_Y = 224;static final int DIM_IMG_SIZE_X = 224;static final int DIM_IMG_SIZE_Y = 224;
line 76
/** A ByteBuffer to hold image data, to be feed into Tensorflow Lite as inputs. */ //private ByteBuffer imgData = null; private float[][][][] imgData = null; /** An array to hold inference results, to be feed into Tensorflow Lite as outputs. */ //private byte[][] labelProbArray = null; private float[][] labelProbArray = null;
line 98
/* imgData = ByteBuffer.allocateDirect( DIM_BATCH_SIZE * DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y * DIM_PIXEL_SIZE ); */ imgData = new float[DIM_BATCH_SIZE][DIM_IMG_SIZE_X][DIM_IMG_SIZE_Y][DIM_PIXEL_SIZE]; //imgData.order(ByteOrder.nativeOrder()); //labelProbArray = new byte[1][labelList.size()]; labelProbArray = new float[1][labelList.size()];
line 116
//imgData.rewind();
line 166
for (int i = 0; i < DIM_IMG_SIZE_X; ++i) { for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) { final int val = intValues[pixel++]; //imgData.put((byte) ((val >> 16) & 0xFF)); //imgData.put((byte) ((val >> 8) & 0xFF)); //imgData.put((byte) (val & 0xFF)); imgData[0][i][j][0] = (float) ((val >> 16) & 0xFF); imgData[0][i][j][1] = (float) ((val >> 8) & 0xFF); imgData[0][i][j][2] = (float) (val & 0xFF); } }
line 184
sortedLabels.add( // new AbstractMap.SimpleEntry<>(labelList.get(i), (labelProbArray[0][i] & 0xff) / 255.0f)); new AbstractMap.SimpleEntry<>(labelList.get(i), (labelProbArray[0][i])));
after the above change, the model mobilenet_v1_1.0_224_float_2017_11_08 can run successfully.
Mobilenet 0.75 192 Float Mobilenet 1.0 224 Float success
Inception V3 Slim 2016 can run, but the output probabilities are larger than 1.0.....
Inception V3 2015 cannot run successfully, even though modified as the users said: 'Additionally, I received a tensor length error for the labels, the file had 1001 and (somewhere) it expected 1008, so I filled in 7 lines of foo1, foo2, etc.'
7. ## Convert a TensorFlow GraphDef to TensorFlow Lite for float inference
curl https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_0.50_128_frozen.tgz \ | tar xzv -C /tmp
bazel build --config=opt tensorflow/contrib/lite/toco:tocofloat:
bazel run --config=opt \ //tensorflow/contrib/lite/toco:toco -- \ --input_file=/tmp/mobilenet_v1_0.50_128/frozen_graph.pb \ --output_file=/tmp/checkpoints/mobilenet_v1_0.50_128/mobilenet_v1_0.50_128.tflite \ --input_format=TENSORFLOW_GRAPHDEF \ --output_format=TFLITE \ --inference_type=FLOAT \ --input_shape=1,128,128,3 \ --input_array=input \ --output_array=MobilenetV1/Predictions/Reshape_1
success info:
INFO: Found 1 target...
Target //tensorflow/contrib/lite/toco:toco up-to-date:
bazel-bin/tensorflow/contrib/lite/toco/toco
INFO: Elapsed time: 31.581s, Critical Path: 3.86s
INFO: Running command line: bazel-bin/tensorflow/contrib/lite/toco/toco '--input_file=/home/jiao/Downloads/mobilenet_v1_0.50_128/frozen_graph.pb' '--output_file=/tmp/checkpoints/mobilenet_v1_0.50_128/foo.lite' '--input_format=TENSORFLOW_GRAPHDEF' '--output_format=TFLITE' '--input_type=FLOAT' '--inference_type=FLOAT' '--input_shape=1,128,128,3' '--input_array=input' '--output_array=MobilenetV1/Predictions/Reshape_1'
2017-11-28 14:37:30.386852: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before general graph transformations: 416 operators, 583 arrays (0 quantized)
2017-11-28 14:37:30.404590: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] After general graph transformations pass 1: 31 operators, 89 arrays (0 quantized)
2017-11-28 14:37:30.404949: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before dequantization graph transformations: 31 operators, 89 arrays (0 quantized)
2017-11-28 14:37:30.405179: I tensorflow/contrib/lite/toco/allocate_transient_arrays.cc:312] Total transient array allocated size: 1048576 bytes, theoretical optimal value: 786432 bytes.
2017-11-28 14:37:30.405411: I tensorflow/contrib/lite/toco/toco_tooling.cc:255] Estimated count of arithmetic ops: 0.099218 billion (note that a multiply-add is counted as 2 ops).
quantized:
bazel run --config=opt \ //tensorflow/contrib/lite/toco:toco -- \ --input_file=/tmp/mobilenet_v1_0.50_128/quantized_graph.pb \ --output_file=/tmp/checkpoints/mobilenet_v1_0.50_128/foo_quantized.tflite \ --input_format=TENSORFLOW_GRAPHDEF \ --output_format=TFLITE \ --input_type=QUANTIZED_UINT8 \ --inference_type=QUANTIZED_UINT8 \ --input_shape=1,128,128,3 \ --input_array=input \ --output_array=MobilenetV1/Predictions/Reshape_1 \ --default_ranges_min=0 \ --default_ranges_max=6 \ --mean_value=128 \ --std_value=127
fail info:
INFO: Found 1 target...
Target //tensorflow/contrib/lite/toco:toco up-to-date:
bazel-bin/tensorflow/contrib/lite/toco/toco
INFO: Elapsed time: 0.741s, Critical Path: 0.02s
INFO: Running command line: bazel-bin/tensorflow/contrib/lite/toco/toco '--input_file=/tmp/mobilenet_v1_0.50_128/quantized_graph.pb' '--output_file=/tmp/checkpoints/mobilenet_v1_0.50_128/foo_quantized.tflite' '--input_format=TENSORFLOW_GRAPHDEF' '--output_format=TFLITE' '--input_type=QUANTIZED_UINT8' '--inference_type=QUANTIZED_UINT8' '--input_shape=1,128,128,3' '--input_array=input' '--output_array=MobilenetV1/Predictions/Reshape_1' '--default_ranges_min=0' '--default_ranges_max=6' '--mean_value=128' '--std_value=127'
2017-12-06 14:51:45.883181: W tensorflow/contrib/lite/toco/toco_cmdline_flags.cc:177] --input_type is deprecated. Use --inference_input_type.
2017-12-06 14:51:45.893793: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.893929: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894013: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894093: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894172: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894269: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894565: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.894936: I tensorflow/contrib/lite/toco/import_tensorflow.cc:1046] Converting unsupported operation: Dequantize
2017-12-06 14:51:45.897022: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before general graph transformations: 138 operators, 226 arrays (0 quantized)
2017-12-06 14:51:45.898811: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] After general graph transformations pass 1: 57 operators, 140 arrays (1 quantized)
2017-12-06 14:51:45.899319: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before pre-quantization graph transformations: 57 operators, 140 arrays (1 quantized)
2017-12-06 14:51:45.899380: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before quantization graph transformations: 57 operators, 140 arrays (1 quantized)
2017-12-06 14:51:45.899403: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_0/weights/read/_82__cf__82 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899440: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_1_depthwise/depthwise_weights/read/_79__cf__79 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899473: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_1_pointwise/weights/read/_76__cf__76 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899511: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_2_depthwise/depthwise_weights/read/_73__cf__73 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899543: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_2_pointwise/weights/read/_70__cf__70 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899617: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_3_depthwise/depthwise_weights/read/_67__cf__67 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899656: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_3_pointwise/weights/read/_64__cf__64 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899760: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_4_depthwise/depthwise_weights/read/_61__cf__61 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899806: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_4_pointwise/weights/read/_58__cf__58 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.899984: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_5_depthwise/depthwise_weights/read/_55__cf__55 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.900035: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_5_pointwise/weights/read/_52__cf__52 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.900362: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_6_depthwise/depthwise_weights/read/_49__cf__49 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.900412: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_6_pointwise/weights/read/_46__cf__46 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.901041: W tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:132] Constant array MobilenetV1/Conv2d_7_depthwise/depthwise_weights/read/_43__cf__43 lacks MinMax information. To make up for that, we will now compute the MinMax from actual array elements. That will result in quantization parameters that probably do not match whichever arithmetic was used during training, and thus will probably be a cause of poor inference accuracy.
2017-12-06 14:51:45.901111: F tensorflow/contrib/lite/toco/graph_transformations/quantize.cc:354] Unimplemented: this graph contains an operator of type (Unsupported TensorFlow op: Dequantize) for which the quantized form is not yet implemented. Sorry, and patches welcome (that's a relatively fun patch to write, mostly providing the actual quantized arithmetic code for this op).
jiao@jiao-linux:~/code/source/tensorflow$
- TensorFlow Lite相关
- TensorFlow Lite
- Announcing TensorFlow Lite
- Introduction to TensorFlow Lite
- android 导入tensorflow lite
- Introduction to TensorFlow Lite
- Google Developers:发布TensorFlow Lite
- Tensorflow Lite 0.1 for Android
- Tensorflow Lite之Android实践
- Tensorflow Lite初探(Android)
- tensorflow lite用于移动电话的神经网络库
- 谷歌TensorFlow Lite支持Core ML
- iOS集成TensorFlow Lite配置教程
- 在 TensorFlow Lite 中支持 Core ML
- tensorflow相关
- TensorFlow相关
- TensorFlow Lite+Android,Google要搞的大事情
- Google发布了Tensorflow Lite,用于移动电话的神经网络库
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsupp
- 我的第一篇CSDN博客
- GIT
- PowerDesigner 16.5 显示右侧工具箱
- 批量修改表中的一个字段的部分数据
- TensorFlow Lite相关
- html 页面几秒刷新 & 跳转
- cropper插件 3种规格的预览图 不能显示出来
- 进程间通信方式预习2
- 主成分分析(PCA)原理详解
- 在Java中连接字符串时是使用+号还是使用StringBuilder StringBuffer 加号
- Android Studio 3.0 修改包名
- 全球科技巨擘大战AI
- NULL , 0 ,empty