精华内容
下载资源
问答
  • “Always On” 和 “低延迟”,我们使用 TensorFlow Lite 作为神经网络模型部署框架,既能够很好地兼容基于 TensorFlow 的模型训练流程,也能够提供非常高效和轻量的嵌入式端运行时 (Runtime)。 2、开发部署...

    文 / 出门问问信息科技有限公司

    来源 | TensorFlow 公众号

    1、背景

    热词唤醒 (Keyword Spotting) 往往是用户对语音交互体验的第一印象,要做到准确快速。因此热词检测算法要同时保证高唤醒率和低误唤醒率,能够准确地区分热词和非热词的音频信号。主流的热词检测方法,通常使用深度神经网络来从原始音频特征中提取 high-level 的抽象特征(见下图)。为了能够在计算性能和内存大小都非常有限的嵌入式设备上做到 “Always On” 和 “低延迟”,我们使用 TensorFlow Lite 作为神经网络模型的部署框架,既能够很好地兼容基于 TensorFlow 的模型训练流程,也能够提供非常高效和轻量的嵌入式端运行时 (Runtime)。

    2、开发部署流程

    在神经网络结构大体确定的情况下,会显著影响最终计算性能的主要是:模型量化 (Quantization),计算图的优化 (Computation Graph Optimization),以及 Ops 计算核的实现。使用 TensorFlow Lite 部署热词检测模型的开发工作主要也是在这三方面。

    应用 Simulated Quantization 进行模型训练
    在嵌入式设备上部署神经网络模型时,通常使用模型 “量化” (Quantization) 来减少模型参数需要的空间大小,并且提高计算吞吐量 (throughput)。使用 TensorFlow 可以在模型训练时通过增加 FakeQuant 节点来实现 “Simulated Quantization”,在前向计算 (forward) 时模拟参数定点化带来的精度损失。FakeQuant 节点可以在构建模型计算图时手动添加,对于常见的网络结构也可以使用 TensorFlow contrib/quantize 工具,自动在模型训练的计算图中匹配需要进行参数量化的 Layers,并在合适的位置加入 FakeQuant 节点。

    使用 TOCO 进行模型转换

    使用 TensorFlow Lite 在嵌入式平台进行部署,需要使用 TOCO 工具进行模型格式转换,同时会对神经网络的计算图进行各种变换优化,比如会去掉或者合并不必要的常量计算,会将部分激活函数计算融合到相关 FullyConnected 或者 Conv2D 节点等,以及处理模型量化 (Quantization) 相关操作。如果不涉及到 Custom Ops,在模型转换这个环节,主要需要关注的两个方面是:

    1)正确处理Quantization参数和FakeQuant相关节点
    2)避免转换后的计算图中出现低效的节点

    Custom Ops 实现和性能优化

    如果模型的神经网络结构中用到了目前 TensorFlow Lite 尚不支持的操作,可以以 Custom Op 方式实现相应计算核 (kernel)。要在 Custom Op 中实现高效计算,需要根据数据维度充分利用 SIMD 指令集的加速,并且减少不必要的内存读写。在快速原型阶段,对于 Custom Op 中的向量和矩阵运算,可以调用 tensor_util 中的函数,充分利用 TFLite 中已有的优化实现。而如果 TFLite 已有的函数不能满足需求,可以调用更加底层的高性能计算库,例如 float 类型可以调用 Eigen,int8 类型可以调用 gemmlowp,TFLite 中 Builtin Ops 的计算核提供了调用示例。

    3、热词检测中使用 TensorFlow Lite 的效果

    我们按照上述流程将热词检测中的神经网络推理在 TensorFlow Lite 框架中实现,并部署到小问音箱上进行性能和效果的测试。在音箱的低功耗 ARM 处理器 (Cortex-A7) 上,基于 TensorFlow Lite 的神经网络推理计算,相比于我们原有内部开发的神经网络推理框架,计算性能有 20%~30% 的提升。考虑到我们内部推理框架已经针对 8-bit 低精度模型和 ARM 计算平台进行了相当充分的性能优化,因此我们认为 TensorFlow Lite 在嵌入式平台上的计算性能表现是非常优秀的。用 TensorFlow Lite 进行模型部署,结合 TensorFlow 用于模型训练,使我们整个深度学习开发流程更为统一和高效。例如,得益于 Simulated Quantization,我们在模型量化过程中能够更好地处理例如 BatchNorm 等网络结构,并且在训练阶段可以 fine-tune 模拟量化后的模型,因此应用 TensorFlow Lite 以及相关的训练和部署流程之后,我们的热词检测模型在相同误唤醒水平下唤醒率会有约 3% 的提升。此外,根据我们实际经验,使用 TensorFlow Lite 可以让我们应用和优化新模型结构的开发周期,从大于一个月缩短到小于一个星期,极大地提升了嵌入式端深度学习开发的迭代速度。

    此内容为精简版,想要阅读完整版案例说明,请点击此链接☛ www.tensorflowers.cn/t/6306

    展开全文
  • 包含使用MNN,NCNN部署的代码包含编译好的linux x86_64(ubuntu20.04)平台下的ncnn,MNN,opencv库,可以直接编译测试,需要修改makefile中的路径包含一个模型可以检测动漫卡通人物的人脸 编译和测试在ubuntu 20.04...
  • AI模型有着多样化的部署方式,常见的模型部署形态分为两种:服务器部署(AI云计算)和嵌入式部署(AI边缘计算)。服务器部署指的是将模型部署在CPU/GPU上,形成可调用的API接口,根据需要可选择云服务器部署和本地...

    从科研、金融、零售到工业、农业等越来越多的行业与业务场景正在应用人工智能提升效率,降低成本。人工智能在产业升级、改善人类生活等方面发挥着越来越重要的作用。当开发者部署AI模型时,会面临一个使用场景的问题:不同的使用场景和业务问题中对模型的部署方式要求不同。

    AI模型有着多样化的部署方式,常见的模型部署形态分为两种:服务器部署(AI云计算)和嵌入式部署(AI边缘计算)。服务器部署指的是将模型部署在CPU/GPU上,形成可调用的API接口,根据需要可选择云服务器部署和本地服务器部署;嵌入式部署指的是部署到边缘侧或端侧的嵌入式设备中,进行单机离线运行。下表对比了这两种部署方式的特性。当用户的模型应用场景没有网络覆盖,或是业务数据较为机密,或是对预测延时要求较高时,往往会选择嵌入式部署方式。
    在这里插入图片描述
    嵌入式部署方式具有实时响应、网络开销低、隐私保护、能耗比高等优势;但同时,由于边缘设备种类繁多,适配部署难度较高。

    在一项百度和波士顿咨询公司的联合调研中,我们发现在有定制业务模型需求的客户中,超过35%的场景有离线边缘计算的需求。而如上文所述,端计算由于设备的多样性,研发和部署成本相比云部署更高,且往往实际业务场景对在端上运行的模型的时延和稳定性也会有极高的要求。因此,如何将定制好的模型部署到各类端设备上是一个技术难题。

    为了满足开发者对部署形式多样化的需求,百度大脑一站式零门槛AI开发平台EasyDL支持多种部署方式,包括公有云部署、本地服务器部署、设备端SDK和软硬一体解决方案。EasyDL是基于飞桨推出的面向企业打造的一站式零门槛AI开发平台,提供智能标注、模型训练、服务部署等全流程功能等全流程功能,内置丰富的预训练模型,面向不同人群与需求提供经典版、专业版、零售版三个版本。

    EasyDL支持的多种部署方式,适用于各类业务场景与运行环境,便于开发者根据需求灵活选择,其支持的设备也非常丰富,从最常见的x86、ARM、Nvidia-GPU,到NPU、FPGA,支持超过10类硬件。由于百度飞桨深度学习平台相关功能的支持,EasyDL具备强大的端计算部署能力,在生成端计算模型时,会经过一些列的优化、加速、压缩功能。

    对于这一系列能力的讲解,可以从网络结构层面和芯片能力两方面入手。

    在网络结构层面,会进行op融合(如conv-add-relu,conv-bn等)、fp16/int8量化、模型裁剪等优化。

    以近期上线的ARM定点量化为例,其优点包括低内存带宽、低功耗、低计算资源占用。在一些网络中,可以带来4倍的模型压缩、4倍的内存带宽提升,以及更高效的cache利用。在很多场景中,定点量化不会对网络精度造成额外损失。量化主要分为两大类:Post Training Quantization和Quantization Aware Training,前者是使用KL散度等方法确定量化参数且不需要重新训练的定点量化方法,后者是对训练好的模型做再训练,建模来确定量化参数。在量化训练过程中,前向传播的工作流可以表示为如下方式:
    在这里插入图片描述
    在训练量化的过程中,会在原有网络算子前后插入连续的量化op和反量化op,并改变相应的反向算子的输入,评估阶段,将量化算子参数变为量化后的值,最终通过PaddleLite的工具改变模型文件中的参数数据类型为int8的naïve buffer形式。
    在这里插入图片描述
    在后续的版本升级中,EasyDL会继续上线模型裁剪优化。基于敏感度选择最优的裁剪率组合来进行部分的卷积和裁剪,可以达到一倍以上模型体积的减少和低于1%的精度损失的优化效果。结合定点量化以及后续的蒸馏策略,模型的体积和推理速度会得到更进一步的全面优化。
    在这里插入图片描述
    在芯片层面,EasyDL会根据具体的硬件类型进行特属优化。比如在ARM64上如果芯片支持NEON,会充分利用其16个128位寄存器进行浮点数计算的优化;在英伟达GPU设备上,EasyDL会利用TensorRT库进行子图的计算和加速;在苹果手机上,会利用CoreML引擎进行推理加速;在华为手机上,如果支持DDK,会调用华为HiAI引擎进行推理。此外,EasyDL还支持英特尔的 MKL OpenVino, 高通的SNPE等推理引擎。在一些平台上,能够根据具体的深度学习网络、芯片类型进行合理的自动选择,在保证精度的同时最大化利用芯片能力,极大地提升推理速度。经过网络、硬件等各层面的优化之后,模型在体积、内存占用、推理速度上都会有更优的表现,部分模型的推理速度可以提升数倍以上。
    在这里插入图片描述
    近期EasyDL新上线了华为Atlas 200、Atlas300加速卡的支持,能够支持最新DaVinci架构的昇腾310AI处理器,同时兼顾开发板及服务器的场景。结合EasyDL现有的优化技术,在EasyDL的高性能模型上,可以达到6ms的性能。开启多Batch优化后,单张300加速卡可以一秒处理高达1000张图片。

    在EasyDL平台上,模型加速优化的全过程都会在系统中自动完成,用户只需根据自己的场景需要,选择具体的硬件,即可自动生成适配对应硬件的端计算部署包。现在,在发布模型的时候,用户只需要勾选“同时获取加速版”,EasyDL后台便会自动为用户生成具备量化、压缩等优化能力的加速版模型和SDK,用户可以直接下载使用,使用的流程也基本一致。总的来看,EasyDL的嵌入式模型部署整体使用流程非常快速便捷,用户无需关注复杂的深度学习边缘计算算法、具体硬件适配等底层逻辑,只需关注实际的业务需求,通过SDK输入图片即可获得模型输出的识别结果。

    目前,已有多家企业根据具体业务场景,通过EasyDL平台仅用少量业务数据训练高精度AI模型,并根据使用场景和运行环境选择适配的部署方式。使用门槛低、方便快捷的加速版SDK具备的量化压缩等能力,正在越来越多的业务场景中发挥作用,快速解决业务需求。
    立即尝试EasyDL:https://ai.baidu.com/easydl/

    展开全文
  • 嵌入式端的神经网络算法部署和实现 介绍关于 ARM NN、CMSIS NN 和 K210 等嵌入式端的 NN 部署和实现。神经网络的调教(训练)还是在 PC 端,神经网络参数训练好之后,在嵌入式端进行部署,使其接收网络给定数据、...
  • 在移动端这里就不使用python而是使用C++作为开发语言,总体流程就是我们在PC交叉编译出相关执行程序,然后在jetson nano上直接运行,不考虑在jetson nano上编译,使用交叉编译这也更加符合嵌入式软件开发的流程...

    在移动端这里就不使用python而是使用C++作为开发语言,总体流程就是我们在PC端交叉编译出相关执行程序,然后在jetson nano上直接部署运行,不考虑在jetson nano上编译,使用交叉编译这也更加符合嵌入式软件开发的流程(虽然jetson nano和raspberry pi都自带系统可以下载编译代码。。。。。)

    1. PC机上交叉编译出tflite静态库

    首先需要做的是在PC机上从github上拉取tensorflow源代码,在源代码中使用交叉编译工具编译出tensorflow lite相关的静态库。

    具体的方法可参考官网guide:https://tensorflow.google.cn/lite/guide/build_arm64

    #安装交叉编译工具
    sudo apt-get install crossbuild-essential-arm64
    
    #下载tensorflow源代码
    git clone https://github.com/tensorflow/tensorflow.git
    
    #进入lite文件夹
    cd tensorflow/tensorflow/lite/tools/make
    
    #运行tflite相关所需依赖环境脚本
    ./download_dependencies.sh
    
    #编译
    ./build_aarch64_lib.sh

    这样我们就在 tensorflow/lite/tools/make/gen/linux_aarch64/lib目录编译出了tensorflow lite静态库(benchmark-lib.a  libtensorflow-lite.a)

    2. 编译示例 label_image

    上一步中我们本地编译出了tflite的静态库,这一步我们在tensorflow源码中编译出其自带的label_image示例,源代码位置在:

    tensorflow/lite/examples/label_image目录下

    前面在生成tflite静态库的时候编译了tensorflow/lite/examples/目录下的minimal,但是并没有编译 label_image,所以我们需要修改

    tensorflow/lite/tools/make/Makefile文件,具体修改如下(参照minimal例子对应添加了label_image相关编译命令):

    diff --git a/tensorflow/lite/tools/make/Makefile b/tensorflow/lite/tools/make/Makefile
    index ad3832f996..c32091594f 100644
    --- a/tensorflow/lite/tools/make/Makefile
    +++ b/tensorflow/lite/tools/make/Makefile
    @@ -97,6 +97,12 @@ BENCHMARK_PERF_OPTIONS_BINARY_NAME := benchmark_model_performance_options
     MINIMAL_SRCS := \
            tensorflow/lite/examples/minimal/minimal.cc
     
    +# galaxyzwj
    +LABEL_IMAGE_SRCS := \
    +    tensorflow/lite/examples/label_image/label_image.cc \
    +    tensorflow/lite/examples/label_image/bitmap_helpers.cc \
    +    tensorflow/lite/tools/evaluation/utils.cc
    +
     # What sources we want to compile, must be kept in sync with the main Bazel
     # build files.
     
    @@ -161,7 +167,8 @@ $(wildcard tensorflow/lite/*/*/*/*/*/*tool.cc) \
     $(wildcard tensorflow/lite/kernels/*test_main.cc) \
     $(wildcard tensorflow/lite/kernels/*test_util*.cc) \
     tensorflow/lite/tflite_with_xnnpack.cc \
    -$(MINIMAL_SRCS)
    +$(MINIMAL_SRCS) \
    +$(LABEL_IMAGE_SRCS)
     
     BUILD_WITH_MMAP ?= true
     ifeq ($(BUILD_TYPE),micro)
    @@ -257,7 +264,8 @@ ALL_SRCS := \
            $(PROFILER_SUMMARIZER_SRCS) \
            $(TF_LITE_CC_SRCS) \
            $(BENCHMARK_LIB_SRCS) \
    -       $(CMD_LINE_TOOLS_SRCS)
    +       $(CMD_LINE_TOOLS_SRCS) \
    +    $(LABEL_IMAGE_SRCS)
     
     # Where compiled objects are stored.
     TARGET_OUT_DIR ?= $(TARGET)_$(TARGET_ARCH)
    @@ -271,6 +279,7 @@ BENCHMARK_LIB := $(LIBDIR)$(BENCHMARK_LIB_NAME)
     BENCHMARK_BINARY := $(BINDIR)$(BENCHMARK_BINARY_NAME)
     BENCHMARK_PERF_OPTIONS_BINARY := $(BINDIR)$(BENCHMARK_PERF_OPTIONS_BINARY_NAME)
     MINIMAL_BINARY := $(BINDIR)minimal
    +LABEL_IMAGE_BINARY := $(BINDIR)label_image
     
     CXX := $(CC_PREFIX)${TARGET_TOOLCHAIN_PREFIX}g++
     CC := $(CC_PREFIX)${TARGET_TOOLCHAIN_PREFIX}gcc
    @@ -279,6 +288,9 @@ AR := $(CC_PREFIX)${TARGET_TOOLCHAIN_PREFIX}ar
     MINIMAL_OBJS := $(addprefix $(OBJDIR), \
     $(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(MINIMAL_SRCS))))
     
    +LABEL_IMAGE_OBJS := $(addprefix $(OBJDIR), \
    +$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(LABEL_IMAGE_SRCS))))
    +
     LIB_OBJS := $(addprefix $(OBJDIR), \
     $(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(TF_LITE_CC_SRCS)))))
     
    @@ -309,7 +321,7 @@ $(OBJDIR)%.o: %.cpp
            $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
     
     # The target that's compiled if there's no command-line arguments.
    -all: $(LIB_PATH)  $(MINIMAL_BINARY) $(BENCHMARK_BINARY) $(BENCHMARK_PERF_OPTIONS_BINARY)
    +all: $(LIB_PATH)  $(MINIMAL_BINARY) $(BENCHMARK_BINARY) $(BENCHMARK_PERF_OPTIONS_BINARY)  $(LABEL_IMAGE_BINARY)
     
     # The target that's compiled for micro-controllers
     micro: $(LIB_PATH)
    @@ -353,6 +365,14 @@ $(BENCHMARK_PERF_OPTIONS_BINARY) : $(BENCHMARK_PERF_OPTIONS_OBJ) $(BENCHMARK_LIB
     
     benchmark: $(BENCHMARK_BINARY) $(BENCHMARK_PERF_OPTIONS_BINARY)
     
    +$(LABEL_IMAGE_BINARY): $(LABEL_IMAGE_OBJS) $(LIB_PATH)
    +       @mkdir -p $(dir $@)
    +       $(CXX) $(CXXFLAGS) $(INCLUDES) \
    +       -o $(LABEL_IMAGE_BINARY) $(LABEL_IMAGE_OBJS) \
    +       $(LIBFLAGS) $(LIB_PATH) $(LDFLAGS) $(LIBS)
    +
    +label_image: $(LABEL_IMAGE_BINARY)
    +
     libdir:
            @echo $(LIBDIR)
    

    最终在 tensorflow/lite/tools/make/gen/linux_aarch64/bin 生成了 label_image  运行程序

    我们将此bin文件scp到jetson nano中,同时将 tensorflow/lite/examples/label_image/testdata/grace_hopper.bmp文件scp到jetson nano中

    3. 在jetson nano上运行tflite模型

    首先在网络上下载 tflite模型文件,下载网址:

    https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip

    将解压后的 mobilenet_quant_v1_224.tflite 模型文件和 标签文件 labels.txt文件传入到jetson nano中。

    所以我们需要的几个文件具体如下:

    执行下面命令识别grace_hopper.bmp文件中的相关目标物体

    ./label_image -v 1 -m ./mobilenet_quant_v1_224.tflite  -i ./grace_hopper.bmp -l ./labels.txt

     具体打印结果如下,我们可以看到会输出使用的模型的结构以及最终识别出的物体和花费的具体时间

    展开全文
  • 平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多,所以也就从tensorflow上下手了...

     

         平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有

    caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多,所以也就从tensorflow上下手了。

    下面内容主要参考&翻译:

      https://www.tensorflow.org/mobile/?hl=zh-cn

      https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tensorflowlite.md

           ....等等,目前自己也是刚开始学移动端和嵌入式端部署,虽然这项技术感觉已经有点old了。

    单独阅读英文文档没有翻译理解的透彻,如果有表述不对或者误人子弟的地方,还请拍砖,让我改正。

     

     

    TensorFlow Lite和TensorFlow Mobile简介:

         tensorflow旨在成为深度学习在移动端平台部署的良好解决方案。google公司目前主要有两套在移动端和嵌入式端部署解决方案,

    分别是:TensorFlow for Mobile 和 TensorFlow Lite.我们这次主要学习tensorflow lite,然后再看tensorflow Mobile。

        他们两个的主要不同点:

        TensorFlow Lite是TensorFlow Mobile的演变,在大多数情况下,使用TensorFlow Lite开发的应用程序将具有更小的二进制

    大小,更少的依赖性和更好的性能。TensorFlow Lite仅支持一组有限的运算符,因此默认情况下并非所有模型都可以使用它。 TensorFlow for Mobile具有更全面的支持功能

        TensorFlow Lite在移动平台上提供更好的性能和更小的二进制文件存储大小,并且可以利用硬件进行加速(如果该平台支持)。此外,

    它具有更少的依赖,因此可以在更简单,更受约束的设备方案上构建(build/编译)和托管。TensorFlow Lite还支持 Neural Networks API 的定位加速器。

       TensorFlow Lite目前包含了一组有限的操作集合(operators set)。虽然TensorFlow for Mobile默认情况下仅支持一组约束操作,

    但原则上:可以对其进行自定义以编译该内核,使得在TensorFlow中使用任意运算符。因此,TensorFlow Lite当前不支持的用例应继续使用TensorFlow for Mobile。

    随着TensorFlow Lite的发展,它所支持的操作集合将不断增加,使得在移动端的部署更加地容易。

     

    TensorFlow Lite简介:

        TensorFlow Lite是TensorFlow针对移动和嵌入式设备的轻量级解决方案。它支持设备端机器学习推理,并具有的低延迟和较小的二进制文件尺寸。

    TensorFlow Lite还支持Android Neural Networks API的硬件加速。TensorFlow Lite使用许多技术来实现低延迟,例如优化移动应用程序的内核,

    预融合激活层,以及允许量化内核(更小和更快(定点数学/定点数计算)模型,浮点转整型)。

    大多数TensorFlow Lite文档暂时都在GitHub上(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite)。

     

    TensorFlow Lite包含什么?

        TensorFlow Lite支持一组核心运算符,包括量化和浮点运算,它们已针对移动平台进行了调整。它们结合了预融合激活和偏置,

    以进一步提高性能和量化精度。此外,TensorFlow Lite还支持在模型中使用自定义操作。TensorFlow Lite基于FlatBuffers定义了一种新的模型文件格式。

    FlatBuffers是一个开源,高效的跨平台序列化库。它类似于 protocol buffers(协议缓冲区),但主要区别在于FlatBuffers在访问数据之前通常与每个对象的内存分配相结合,

    不需要对辅助表示(a secondary representation)进行解析/解包步骤。此外,FlatBuffers的代码占用空间比protocol buffers(协议缓冲区)小一个数量级。

        TensorFlow Lite拥有一个新的移动优化解释器,其主要目标是保持应用程序的精简和快速。解释器使用静态图形排序和自定义(少量动态)内存分配器来确保最小的负载、初始化和执行延迟。

        TensorFlow Lite提供了一个利用硬件加速的接口(如果在设备支持)。它通过Android Neural Networks API, 实现,可在Android 8.1(API级别27)及更高版本上使用。

     

    为什么我们需要一个新的移动专用库?

         机器学习正在改变计算范式,我们看到了移动和嵌入式设备上新用例的新趋势。在相机和语音交互模型的推动下,消费者的期望也趋向于与其设备进行自然的,类人的交互。

         有几个因素引起了这个领域的兴趣:

                 × 硅层的创新为硬件加速提供了新的可能性,而Android Neural Networks API 等框架可以轻松利用这些功能。

                 ×实时计算机视觉技术和口语理解的最新进展已引导了移动优化的基准模型的开源(例如,MobileNets,SqueezeNet)。

                 ×广泛可用的智能应用为设备智能创造了新的可能性。

                 ×能够提供“离线”用例,其中设备不需要连接到网络。

    我们相信下一波机器学习应用程序将在移动和嵌入式设备上进行大量处理。

     

    TensorFlow Lite亮点

        TensorFlow Lite提供:

            × 一组核心运算操作(operators),包括量化和浮动,其中许多已经针对移动平台进行了调整。
    这些可用于创建和运行自定义模型。开发人员还可以编写自己的自定义运算符并在模型中使用它们。

           × 一种新的基于FlatBuffers的模型文件格式。

           ×  具有基于设备的内核优化解释器,可在移动设备上更快地执行。

           × TensorFlow转换器(TensorFlow converter)将TensorFlow训练的模型转换为TensorFlow Lite格式。

           × 更小的尺寸:当所有支持的操作链接时,TensorFlow Lite小于300KB,当仅使用支持InceptionV3和Mobilenet所需的操作时,小于200KB。

            ×预先测试的模型:

                以下所有模型均可保证“开箱即用/work”:

                    × Inception V3,一种用于检测图像中存在的主要对象的流行模型。

                    ×MobileNets一系列移动优先计算机视觉模型,旨在有效地最大限度地提高准确性,同时注意到设备或嵌入式应用程序的受限资源。

    它们是小型,低延迟,低功耗模型,参数化以满足各种用例的资源限制。它们可以用于分类,检测,嵌入(特征编码)和分割。

    MobileNet模型比Inception V3更小但精度更低(稍低)。

                   ×在智能回复上,一种端上模型,通过联系与上下文相关的消息,为新传入的文本消息提供一键式回复。该模型专为内存受限设备(如手表和手机)而构建,

    并已成功应用于Smart Replies on Android Wear,在所有第一方和第三方应用。

    另请参阅TensorFlow Lite支持的模型的完整列表TensorFlow Lite's supported models(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/models.md),包括型号,性能编号和可下载的模型文件。

          × MobileNet 模型的量化版本,其运行速度比CPU上的非量化(浮点)版本快。

          × 新的Android演示应用程序,用于说明使用TensorFlow Lite和量化的MobileNet模型进行对象分类。

          × Java和C ++ API支持

     

    TensorFlow Lite架构:

    下图显示了TensorFlow Lite的架构设计:

       

           从磁盘上经过训练的TensorFlow模型开始,您将使用TensorFlow Lite转换器将该模型转换为TensorFlow Lite文件格式(.tflite)。然后,您可以在移动应用程序中使用该转换后的文件。

     

      部署TensorFlow Lite模型文件使用:

              Java API:围绕Android上的C ++ API的便利包装器。

              C ++ API:加载TensorFlow Lite模型文件并调用Interpreter。 Android和iOS都提供相同的库。

              解释器:使用一组内核执行模型。解释器支持选择性内核加载。没有内核它只有100KB,加载了所有内核300KB。这比TensorFlow Mobile要求的1.5M显着降低。

             在部分Android设备上,Interpreter将使用Android Neural Networks API进行硬件加速,如果没有,则默认为CPU执行。

           您还可以使用可由Interpreter使用的C ++ API实现自定义内核。

     

    未来的工作

        在未来的版本中,TensorFlow Lite将支持更多模型和内置运算符,包括定点和浮点模型的性能改进,工具的改进,以便更轻松地开发工作流程以及支持其他更小的设备等。

    在我们继续开发的过程中,我们希望TensorFlow Lite能够大大简化针对小型设备模型的开发人员体验。

     

    Next Steps

            TensorFlow Lite GitHub存储库。包含其他文档,代码示例和演示应用程序。  

     

    转载于:https://www.cnblogs.com/YouXiangLiThon/p/9381252.html

    展开全文
  • 承接移动端目标识别(2) 使用TensorFlow Lite在移动设备上运行 在本节中,我们将向您展示如何使用TensorFlow Lite获得更小的模型,...它支持上的机器学习推理,具有低延迟和小二进制模型大小。 TensorFlow...
  • 其实我们一般用框架训练好了模型的权重之后,我们需要把模型安装到其他设备上,例如PC、服务器、嵌入式板子树莓派、tensorRT等等,不是所有的设备都具有我们训练时候的那种推理和计算能力。像嵌入式板子那种,对...
  • 实验室的项目需要用到Firefly的AIO-3399 ProC开发板,在PC端可安装RKNN Toolkit开发套件,总体思路就是,在本地使用PC电脑框架跑...安装过程繁琐,故记录下在PC端部署开发环境的过程及遇到的问题,以供自己和各位参考。
  • |本文来自社区投稿与征集,作者 郑亚斌...由于嵌入式设备存储空间有限,因此限制了深度学习的应用,同时考虑到平台算力以及算子支持等因素,因此在模型设计以及部署阶段需充分了解硬件平台资源以及预期性能。 本部...
  • tensorflow转c系列一

    2019-10-09 21:33:49
    tensorflow在深度学习领域是一个应用最为广泛的框架,但是其对于嵌入式端部署并不是特别友好,因为其训练好的模型没有直接导出工具。本博文主要是针对tensorflow训练好的模型,将其转换到c语言运行,这样便于...
  • TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 IoT 设备上运行 TensorFlow 模型。它支持设备机器学习推断,延迟较低,并且二进制文件很小。 TensorFlow Lite 包括两个主要组件: TensorFlow...
  • Paddle Lite是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位支持包括移动端、嵌入式以及服务器在内的多硬件平台。 当前Paddle Lite不仅在百度内部业务中得到全面应用,也成功支持了众多外部...
  • Keras详解---总体概要

    2019-11-25 23:04:04
    keras是在python层面上对tensorflow架构的二次开发,使用keras开发主要的优势有:可以结构完整、多gpu训练完备、能够直接将Keras模型直接转换成tensorflow-lite模型、能够直接将模型部署嵌入式端、手机端 ...
  • 受到计算能力和功耗的制约,“终端深度学习”(deep learning on edge) 目前境地比较尴尬,抽空调研了深度学习现在常用几种计算平台,尤其是嵌入式端的计算平台: GPU服务器/工作站 Intel NCS NVIDIA Nano ...
  • 文章目录TensorRT产生背景作用Jetson inference学习介绍下载安装Jetson inference图片分类...深度学习模型部署时,往往需要降低成本而部署嵌入式平台(如Jeston)上,部署端的设备性能不一,对模型运行速度...
  • 使用深度学习的方法训练得到模型之后,下一步便是将模型部署到实际的应用场景中创造效益,通常就是部署到服务器,或者部署到移动端,我们做的是后者。 近些年来,用于将模型部署到移动端的前向推理框架比较多,...
  • Paddle Lite是一个高效,轻量级,增强强且易于扩展的深度学习推理框架,定位支持包括移动端,嵌入式以及服务器内部的多硬件平台。 当前Pad Lite不仅在百度内部业务中得到全面应用,也成功支持了众多外部用户和...
  • About Tensor RT

    2020-05-08 10:18:48
    但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,...
  • 但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等 。 由于训练的网络模型可能会很大(比如,...
  • 视频处理是人工智能应用中的一个重要方向,对于一款部署的AI加速产品,其视频接入能力是产品技术实力的重要体现,同时也直接影响用户的产品体验。上的嵌入式设备,受制于本身的CPU等硬件资源,同时支持多种...
  • 但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,...
  • 润乾报表是一个纯JAVA的企业级报表工具,支持对J2EE系统的嵌入式部署,无缝集成。服务器支持各种常见的操作系统,支持各种常见的关系数据库和各类J2 EE的应用服务器,客户端采用标准纯html方式展现,支持ie和...
  • 什么是TensorRT???

    2021-04-05 12:51:28
    但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,...
  • 提高了TensorFlow Lite(移动端和嵌入式)和TensorFlow.js(web部署模型的能力。 看好TensorFlow落地部署能力、keras快速入门特性、以及Google在深度学习领域持续投入的决心,如果要在...
  • TensorRT安装及使用教程

    千次阅读 2019-11-14 22:40:29
    但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,...
  • MNN框架学习(一)

    2020-12-15 16:44:35
    轻量性:MNN文件很小,只有几兆,可以方便地部署到移动设备和各种嵌入式设备 通用性:支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络,具有多种OP 高效性:第三方计算库,依靠大量...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

模型嵌入式端部署