作家
登录

深度学习利器:TensorFlow在智能终端中的应用

作者: 来源: 2017-09-22 09:11:54 阅读 我要评论

"androidndk",  path="/opt/android/android-ndk-r12b",  api_level=14)  
  • 编译libtensorflow_inference.so
  1. bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so   
  2.   --crosstool_top=//external:android/crosstool --host_crosstool_top= 
  3. @bazel_tools//tools/cpp:toolchain --cpu=armeabi-v7a  
  • 编译libandroid_tensorflow_inference_java.jar
  1. bazel build //tensorflow/contrib/android:android_tensorflow_inference_java 

TensorFlow供给了Android开辟的示例框架,下面基于AlexNet模型的看花识名APP做一些响应源码的修改,并编译生成Android的安装包:

  • 基于AlexNet模型,修改Inference的输入、输出的Tensor名称
  1. private static final String INPUT_NAME = "input"
  2.  
  3. private static final String OUTPUT_NAME = "alexnet_v2/fc8/squeezed" 
  • 放置quantized_alexnet_v2_graph.pb和对应的labels.txt文件到assets目次下,并修改Android文件路径
  1. private static final String MODEL_FILE = "file:///android_asset/quantized_alexnet_v2_graph.pb"
  2.  
  3. private static final String LABEL_FILE = "file:///android_asset/labels.txt" 
  • 编译生成安装包
  1. bazel build -c opt //tensorflow/examples/android:tensorflow_demo 
  • 拷贝tensorflow_demo.apk到手机上,并履行安装,太阳花辨认效不雅如下图所示:(点击放大年夜图像)

在Android体系中履行TensorFlow Inference操作,须要调用libandroid_tensorflow_inference_java.jar中的JNI接口,重要接口如下:

  • 构建TensorFlow Inference对象,构建该对象时刻会加载TensorFlow动态链接库libtensorflow_inference.so到体系中;参数assetManager为android asset治理器;参数modelFilename为TensorFlow模型文件在android_asset中的路径。
  1. TensorFlowInferenceInterface inferenceInterface = new 
  2.  
  3. TensorFlowInferenceInterface(assetManager, modelFilename);  
  • 向TensorFlow图中加载输入数据,本App中输入数据为摄像头朝长进步到的图片;参数inputName为TensorFlow Inference中的输入数据Tensor的名称;参数floatValues为输入图片的像素数据,进行预处理后的浮点值;[1,inputSize,inputSize,3]为裁剪后图片的大年夜小,比如1张224*224*3的RGB图片。
  1. inferenceInterface.feed(inputName, floatValues, 1, inputSize, inputSize, 3); 
  • 履行模型推理; outputNames为TensorFlow Inference模型中要运算Tensor的名称,本APP中为分类的Logist值。
  1. inferenceInterface.fetch(outputName, outputs); 

总结

本文基于看花识名APP,讲解了TensorFlow在Android智能终端中的应用技巧。起首回想了AlexNet模型构造,基于AlexNet的slim模型对Flowers数据进行练习;对练习后的CheckPoint数据,进行Freeze和Quantized处理,生成智能终端要用的Inference模型。然后介绍了TensorFlow Android应用开辟情况的构建,编译生成TensorFlow在Android上的动态链接库以及java开辟包;文┞仿最后介绍了Inference API的应用方法。

【编辑推荐】

  1. 云计算深度进修平台架构与实践的必经之路
  2. 安闲大年夜神经收集,测试比较TensorFlow、MXNet、CNTK、Theano四个框架
  3. 深度进修目标检测模型周全综述:Faster R-CNN、R-FCN和SSD

      推荐阅读

      从0开始的微服务架构:(一)重识微服务架构

    【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!对于我小我,我更爱好一种延续性的解释,微办事架构 ≈ 模块化开辟 + 分布式计算。不管微办事架构的定义怎么>>>详细阅读


    本文标题:深度学习利器:TensorFlow在智能终端中的应用

    地址:http://www.17bianji.com/lsqh/37558.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)