tensorflow lite 是 tensorflow 针对移动和嵌入式设备的轻量级解决方案。它允许您在低延迟的移动设备上运行机器学习模型,因此您可以利用它进行分类,回归或获取你想要的任何东西,而无需与服务器交互。
注:tensorflow lite 链接
https://www.tensorflow.org/mobile/tflite/
目前,tensorflow lite 为 android 和 ios 设备提供了 c ++ api,并且为 android 开发人员提供了 java wrapper。此外,在 android 设备上,解释器还可以使用 android 经网络 api 进行硬件加速,否则它将默认为 cpu 执行。在本文中,我将重点介绍如何在 android 应用中使用它。
tensorflow lite 包含一个运行时环境,我们可以在其上运行预先存在的模型,并且它还提供了一套工具,可以为移动和嵌入式设备准备模型。
tensorflow lite 目前尚未支持训练模型。我们可以在高性能的机器上训练模型,然后将该模型转换为 tflite 格式,最终将其加载到解释器中。
tensorflow lite 目前处于开发人员预览阶段,因此可能不支持 tensorflow 模型中的所有操作。但是它支持常见的图像分类模型,包括 inception 和 mobilenets。在本文中,您将了解如何在 android 上运行 mobilenet 模型。该应用程序将查看相机信息并使用经过训练的 mobilenet 对图像进行分类。
将 tensorflow lite 与 mobilenets 配合使用
例如,在这张图片中,我将相机对准了我最喜欢的咖啡杯,应用程序将它归类为 “杯子”。有趣的是,它有一个宽大的手柄,你可以看到它非常像一个茶壶!
这是如何做到的?它使用 mobilenet 模型,该模型针对移动设备上的多种图像场景进行设计和优化,包括对象检测,分类,面部属性检测和地标识别。
mobilenet 有许多变种,在此站点托管了 tensorflow lite 的训练模型。你会注意到每个文件都是一个包含两个文件的 zip 包:一个 labels.txt 文件,其中包含与模型相关的标签;一个 tflite 文件,其中包含可以与 tensorflow lite 一起使用的模型版本。如果你想要构建一个使用 mobilenets 的 android 应用程序,则需要从此站点下载模型。你马上就会看到。
使用 tensorflow lite 构建 android 应用程序
要构建使用 tensorflow lite 的 android 应用程序,首先需要将 tensorflow-lite 库添加到您的应用程序中。这可以通过将以下行添加到 build.gradle 文件的依赖项部分来完成:
compile ‘org.tensorflow:tensorflow-lite:+’
完成此操作后,你可以导入 tensorflow lite 解释器。解释器通过为其提供一组输入来加载模型并允许你运行它。然后 tensorflow lite 将执行模型并输出结果,这真的很简单。
import org.tensorflow.lite.interpreter;
要使用它,你需要创建一个 interpreter 实例,然后使用 mappedbytebuffer 加载它。
protected interpreter tflite;tflite = new interpreter(loadmodelfile(activity));
在 github 上的 tensorflow lite 示例中有一个辅助函数。只需确保函数 getmodelpath() 返回一个指向特定模型的路径,并且加载该模型。
注:tensorflow lite 示例链接
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/java/demo/app/src/main/java/com/example/android/tflitecamerademo/imageclassifier.java
/** memory-map the model file in assets. */privatemappedbytebuffer loadmodelfile(activity activity)throwsioexception {assetfiledescriptor filedescriptor = activity.getassets().openfd(getmodelpath());fileinputstream inputstream =newfileinputstream(filedescriptor.getfiledescriptor());filechannel filechannel = inputstream.getchannel();longstartoffset = filedescriptor.getstartoffset();longdeclaredlength = filedescriptor.getdeclaredlength();returnfilechannel.map(filechannel.mapmode.read_only, startoffset, declaredlength);}
然后,要对图像进行分类,我们只需要在 interpeter 上调用 run 方法,并将图像数据和标签数组传递给它,它将完成剩下的工作:
tflite.run(imgdata, labelprobarray);
详细介绍如何从相机中获取图像,并为 tflite 做准备超出了本文的范围,但是在 tensorflow github 中有一个完整示例详细阐明了这一切。通过单步执行此示例,你可以了解到如何从相机中获取图像,如何利用数据进行分类,以及如何采用将加权输出优先级列表从模型映射到标签数组的方式来处理输出。
要运行该示例,请确保拥有完整的 tensorflow 源代码。你可以通过以下方式获取源代码:
> git clone https://www.github.com/tensorflow/tensorflow
完成后,你可以利用 android studio 打开 tensorflow 示例项目(示例代码路径为:
/tensorflow/contrib/lite/java/demo):
演示文件不包含任何模型,但我们需要使用 mobilenet_quant_v1_224.tflite 文件,我们可以通过这个网站下载该模型。最后解压缩并将其放在 assets 文件夹中。
注:这个网站链接
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/models.md
现在应该能够运行该应用程序了。
请注意,该应用程序同时支持 inception 和 quantized mobilenet。它默认支持后者,因此您需要确保模型存在,否则应用程序将运行失败。可以在 imageclassifier.java 文件中找到用于从相机捕获数据并将其转换为字节缓冲区以便加载到模型中的代码。
核心功能可以在 camera2basicfragment.java 文件的 classifyframe() 方法中找到:
/** classifies a frame from the preview stream. */
private voidclassifyframe() { if(classifier==null|| getactivity() ==null||cameradevice== null) { showtoast(“uninitialized classifier or invalid context.”) return;}bitmap bitmap =textureview.getbitmap( classifier.getimagesizex(),classifier.getimagesizey());string texttoshow =classifier.classifyframe(bitmap);bitmap.recycle();showtoast(texttoshow);}
在这里,您可以看到位图加载并调整为适合分类器的大小。然后 classifyframe() 方法将返回包含与图像匹配的前 3 个类的列表及其权重的文本。
关于LED照明基础知识的55个问答
小米5拆解 做工及用料如何
芯聚能:半导体产能短缺会贯穿2021,SiC会迎来爆发的时机
未来如何实现NB-IoT商业成功?
广汽集团曾庆洪:加强汽车关键零部件产业链建设
TensorFlow Lite是TensorFlow针对移动和嵌入式设备的轻量级解决方案
人工智能存在性别歧视?
【大大芯方案】锁住家的安全,大联大推出基于Infineon产品的智能门锁方案
ST推出第三代MEMS传感器 全球首个集成ISP和Occula NPU的ASIC出世
我国人工智能发展现状和与世界人工智能发展的对比概述
中美重启谈判,3个信号必须注意
华为智能观影眼镜HUAWEI Vision Glass正式发布
利用空气中看不见的东西发电,科学发明下的永动机
11场演讲、2场圆桌论坛、1份系列报告发布!芯师爷2023年度硬核芯大会圆满收官!
操作隔离开关的基本要求
量子点和OLED之间的对比
单片机中的软硬件防干扰方法
为什么要在多级放大器中设置退耦电容
最精彩的都在这!MWC讨论度最高的5款手机一次看!
AI战歌起 AI人才生态百度之星的“神奇滤镜”是怎样炼成的?