tensorflow模型部署系列————浏览器前端部署(附代码)

摘要

本文为系列博客tensorflow模型部署系列的一部分,用于javascript实现通用模型的部署。本文主要实现用javascript接口调用tensorflow模型进行推理。实现了tensorflow在浏览器前端计算方案,将计算任务分配在终端,可以有效地降低服务端负荷,并提供相关示例源代码。相关源码见链接


引言

本文为系列博客tensorflow模型部署系列的一部分,用于javascript实现通用模型的部署。本文主要实现用javascript接口调用tensorflow模型进行推理。实现了tensorflow在浏览器前端计算方案,将计算任务分配在终端,可以有效地降低服务端负荷,而且javascript免安装,同时又有并没有增加运营成本。从模型文件中获取输入输出op名请参考博客tensorflow模型部署系列————单机python部署

主题

上一篇博文tensorflow模型部署系列————嵌入式(c/c++ android)部署就如何将tensorflow在边缘计算及一些低成本方案、物联网或工业级应用中使用的轻量级模型部署方案进行讲解,博文中也开放了使用tflite进行模型推理的C C++ JAVA PYTHON代码,覆盖了边缘计算应用的大部分场景,在实际应用时还有一种特殊的边缘计算场景:使用本地PC计算资源来做为终端进行推理。javascript由于其特有的优势使得终端部署基本上可以做到免维护,从而大大降低运营成本。目前tensorflow提供了专门用于浏览器的TensorFlow.js。本文先对TensorFlow.js作简单介绍,然后分别介绍从keras模型和tensorflow模型转换到tfjs模型,最后分别对keras模型和tensorflow模型在TensorFlow.js上的部署进行解说。

TensorFlow.js介绍

TensorFlow.js是一个JavaScript库,它可以将机器学习功能添加到任何Web应用程序中。使用TensorFlow.js,可以构建、训练和部署深度模型

浏览器安装

浏览器只需在html文件中加入 <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>即可

API讲解

TensorFlow.js的接口主要是模仿keras接口来做的,对keras比较熟悉的人可以很快上手。如TensorFlow.js的接口详见官方文档。这里针对常用接口做一个说明。

  • 加载模型文件

    // 加载keras模型
    tf.loadLayersModel(this.MODEL_URL)
    // 加载tensorflow模型
    tf.loadGraphModel (this.MODEL_URL)
    
  • 创建tensors

    xs = tf.fill([1, 784], 0)
    
  • 运行推理

    result = model.predict(xs)
    
  • 获取张量值

    result.dataSync()
    

模型文件转换

整个模型格式可以被转换为Tensorflow.js的层(Layer)格式,这个格式可以被加载并直接用作Tensorflow.js的推断或是进一步的训练。

转换后的TensorFlow.js图层(Layer)格式是一个包含model.json文件和一组二进制格式的分片权重文件的目录。 model.json文件包含模型拓扑结构(又名“架构(architecture)”或“图形(graph)”:它是对图层(Layer)及其连接方式的描述)和权重文件的清单。

模型文件转换时需要指定输入输出张量名,从模型文件中获取输入输出op名请参考博客tensorflow模型部署系列————单机python部署

命令行转换
keras

命令行将keras模型转换为tensorflowjs模型的命令如下:

tensorflowjs_converter --input_format=keras model\saved_keras\save.h5 ./web_model
tf模型

新版tensorflowjs_converter的入参去掉了--output_node_names。我们通常保存的tf模型没有指定输入和输出tensor,所以基本上现在所使用的tf模型无法通过tensorflowjs_converter命令直接转接,需要先调用tf.saved_model.simple_save(sess, "./saved_model",
inputs={"x": x, }, outputs={"softmax": softmax, })进行重新保存。大家如果想直接使用,可参考我的代码

命令行将新保存的tf模型转换为tensorflowjs模型的命令如下:

tensorflowjs_converter --input_format=tf_saved_model --saved_model_tags=serve .\saved_model .\web_model
代码转换
keras

keras模型转换为tensorflowjs模型的python接口为tfjs.converters.save_keras_model

tfjs.converters.save_keras_model(model,'webmod_keras')
tf模型

keras模型转换为tensorflowjs模型的python接口为tfjs.converters.convert_tf_saved_model

tfjs.converters.convert_tf_saved_model('./tf_model','./webmod_tf')

部署代码

模型封装库

模型封装类主要包括三个方法:构建、初始化和推理。

构建只做最基础的非耗时操作,以防止网页界面卡死

初始化用于处理进行与predict无关的所有耗时操作,以减少推理时的操作,保证模型推理高效运行。初始化主要进行的操作包括:模型文件加载。需要注意的是从keras模型和tensorflow模型转换到tfjs模型加载方式是不同的,从keras转换的模型使用tf.loadLayersModel加载模型;从tensorflow转换的模型使用tf.loadGraphModel加载模型

推理主要进行的操作有:输入张量创建、model.predict、和输出值获取。

模型封装类示例代码

经过模型封装类封装以后,示例代码就很简单了。只用准备数据,然后推理就行了。

示例代码

附录

参考


  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
TensorFlow模型部署是指将训练好的TensorFlow模型应用到实际生产环境中的过程。在部署过程中,可以使用不同的方法将模型集成到不同的应用程序或系统中,以实现对新数据的预测或推理。 引用\[3\]中提到了一种使用C++语言实现通用模型部署的方法。该方法使用.pb格式的模型文件,并通过获取输入输出op名来进行模型部署。这种方法适用于将TensorFlow模型集成到C++应用程序中。 另外,引用\[2\]中提到了TensorFlow Hub,它是一个包含了文本、图像和视频等领域算法的库。通过使用TensorFlow Hub,可以方便地使用预训练的模型进行分类、目标检测等任务。 总结起来,TensorFlow模型部署可以使用不同的方法和工具,如使用C++语言实现通用模型部署或使用TensorFlow Hub进行预训练模型的应用。具体的部署方法取决于应用场景和需求。 #### 引用[.reference_title] - *1* *2* [Tensorflow2.0数据和部署(四)——Tensorflow高级模型部署](https://blog.csdn.net/weixin_45325331/article/details/118691699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [tensorflow模型部署系列————单机C++部署源码)](https://blog.csdn.net/chongtong/article/details/91947690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值