如何将训练好的Python模型给JavaScript使用?

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了如何将TensorFlow模型转换为Web格式以实现浏览器中的实际应用。首先,简述了已有一个能够检测扑克牌的TensorFlow模型,目标是将其部署到Web上。接着,讲解了TensorFlow.js Converter的作用,它能将Python API创建的GraphDef模型转化为TensorFlow.js可读取的json格式,用于浏览器中的推理计算。然后,详细说明了Converter的安装、用法及不同输入输出格式,并提供了转换命令示例。最后,文中提到了模型转换后的实践步骤,包括找到导出的模型、执行转换命令以及在浏览器端部署模型的流程。

前言


从前面的Tensorflow环境搭建到目标检测模型迁移学习,已经完成了一个简答的扑克牌检测器,不管是从图片还是视频都能从画面中识别出有扑克的目标,并标识出扑克点数。但是,我想在想让他放在浏览器上可能实际使用,那么要如何让Tensorflow模型转换成web格式的呢?接下来将从实践的角度详细介绍一下部署方法!


环境


Windows10

Anaconda3

TensorFlow.js converter


converter介绍


converter全名是TensorFlow.js Converter,他可以将TensorFlow GraphDef模型(通过Python API创建的,可以先理解为Python模型) 转换成Tensorflow.js可读取的模型格式(json格式), 用于在浏览器上对指定数据进行推算。



converter安装


为了不影响前面目标检测训练环境,这里我用conda创建了一个新的Python虚拟环境,Python版本3.6.8。在安装转换器的时候,如果当前环境没有Tensorflow,默认会安装与TF相关的依赖,只需要进入指定虚拟环境,输入以下命令。

pip install tensorflowjs



converter用法


tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model --signature_name=serving_default --saved_model_tags=serve ./saved_model ./web_model


1. 产生的文件(生成的web格式模型)

转换器命令执行后生产两种文件,分别是model.json (数据流图和权重清单)和group1-shard\*of\* (二进制权重文件)


2. 输入的必要条件(命令参数和选项[带--为选项])

converter转换指令后面主要携带四个参数,分别是输入模型的格式,输出模型的格式,输入模型的路径,输出模型的路径,更多帮助信息可以通过以下命令查看,另附命令分解图。

tensorflowjs_converter --help


2.1. --input_format

要转换的模型的格式,SavedModel 为 tf_saved_model, frozen model 为 tf_frozen_model, session bundle 为 tf_session_bundle, TensorFlow Hub module 为 tf_hub,Keras HDF5 为 keras。


2.2. --output_format

输出模型的格式, 分别有tfjs_graph_model (tensorflow.js图模型,保存后的web模型没有了再训练能力,适合SavedModel输入格式转换),tfjs_layers_model(tensorflow.js层模型,具有有限的Keras功能,不适合TensorFlow SavedModels转换)。


2.3. input_path

saved model, session bundle 或 frozen model的完整的路径,或TensorFlow Hub模块的路径。


2.4. output_path

输出文件的保存路径。


2.5. --saved_model_tags

只对SavedModel转换用的选项:输入需要加载的MetaGraphDef相对应的tag,多个tag请用逗号分隔。默认为serve。


2.6. --signature_name

对TensorFlow Hub module和SavedModel转换用的选项:对应要加载的签名,默认为default。


2.7. --output_node_names

输出节点的名字,每个名字用逗号分离。


3. 常用的两组命令行

1. covert from saved_model

tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model --signature_name=serving_default --saved_model_tags=serve ./saved_model ./web_model


2. convert from frozen_model

tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='num_detections,detection_boxes,detection_scores,detection_classes' ./frozen_inference_graph.pb  ./web_modelk


开始实践


1. 找到通过export_inference_graph.py导出的模型。

导出的模型在项目的inference_graph文件夹(models\research\object_detection)里,frozen_inference_graph.pb是 tf_frozen_model输入格式需要的,而saved_model文件夹就是tf_saved_model格式。在当前目录下新建web_model目录,用于存储转换后的web格式的模型。



2. 开始转换

在当前虚拟环境下,进入到inference_graph目录下,输入以下命令,之后就会在web_model生成一个json文件和多个权重文件。

tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model --signature_name=serving_default --saved_model_tags=serve ./saved_model ./web_model



3. 浏览器端部署

3.1. 创建一个前端项目,将web_model放入其中。



3.2.编写代码 (略)

3.3. 运行结果



目录
相关文章
|
4天前
|
机器学习/深度学习 传感器 自动驾驶
使用Python实现深度学习模型:智能车联网与自动驾驶
【8月更文挑战第14天】 使用Python实现深度学习模型:智能车联网与自动驾驶
26 10
|
2天前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
|
2天前
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能舆情监测与分析
【8月更文挑战第16天】 使用Python实现深度学习模型:智能舆情监测与分析
15 1
|
3天前
|
JavaScript 前端开发
JavaScript BOM 的概念(浏览器对象模型)
JavaScript BOM 的概念(浏览器对象模型)
8 1
|
4天前
|
算法 Ubuntu 机器人
DRAKE - 基于模型的机器人设计与验证 由丰田研究所支持的 C++ / Python 工具箱。
DRAKE - 基于模型的机器人设计与验证 由丰田研究所支持的 C++ / Python 工具箱。
13 1
|
5天前
|
机器学习/深度学习 传感器 物联网
使用Python实现深度学习模型:智能物联网与智能家居
【8月更文挑战第13天】 使用Python实现深度学习模型:智能物联网与智能家居
16 2
|
1天前
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能城市交通管控与优化
【8月更文挑战第17天】 使用Python实现深度学习模型:智能城市交通管控与优化
3 0
|
3天前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
|
3天前
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能工业与工业4.0技术
【8月更文挑战第15天】 使用Python实现深度学习模型:智能工业与工业4.0技术
14 0
|
6天前
|
JavaScript UED
js之探索浏览器对象模型
js之探索浏览器对象模型
25 0

热门文章

最新文章