返回列表
神经网络算法非传统终端部署

神经网络算法非传统终端部署

随着生产力的发展和以单片机为代表的微控制器的性能提高,越来越多的神经网络模型可以部署在原来无法部署的平台上,用来助力神经网络算法在工业生产领域更好的发挥作用,尤其是在安防识别,故障检测等领域卷积神经网络一直都有着非常不错的表现,下面我们就以Tensorflow这一种常见的神经网络算法库为例,简单聊一下神经网络算法如何部署到以单片机为代表的非传统终端上。

clip_image002.jpg

TensorFlow Lite 简介

TensorFlow 可提供强大的功能,以便您在任何环境(包括服务器、边缘设备、浏览器、移动设备、微控制器、CPU、GPU、FPGA)中部署模型。TensorFlow Serving 可以在先进的处理器(包括 Google 的自定义张量处理单元 [TPU])上以生产规模运行机器学习模型。
如果您需要在靠近数据源的位置分析数据,以缩短延迟时间并更好地保护数据隐私,可以借助 TensorFlow Lite 框架在移动设备、边缘计算设备甚至微控制器上运行模型,还可以借助 TensorFlow.js 框架仅使用网络浏览器就能运行机器学习模型。

TensorFlow Lite是google为深度学习在嵌入式物联网应用而推出的轻量级框架。它提供了python、java和C++接口,同时可以将浮点运算转换为整数运算,从而在特定的硬件平台上加快推理速度。TensorFlow Lite使用的模型不是pb文件,而是更小的基于FlatBuffers的模型文件。

TensorFlow Lite主要有两个组件:推理组件和模型转换组件。推理组件用于运行模型;模型转换组件用于将需要的模型转换为TensorFlow Lite模型文件。

clip_image004.jpg

TensorFlow Lite 部署模型

1.   模型文件转换:模型文件转换以从session转换为例,编程语言python。

import tensorflow as tf

img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, 64, 64, 3))

var = tf.get_variable("weights", dtype=tf.float32, shape=(1, 64, 64, 3))

val = img + var

out = tf.identity(val, name="out")

with tf.Session() as sess:

sess.run(tf.global_variables_initializer())

converter = tf.lite.TFLiteConverter.from_session(sess, [img], [out])

tflite_model = converter.convert()

open("converted_model.tflite", "wb").write(tflite_model)

2.   部署模型(加载模型文件)

interpreter = tf.lite.Interpreter(model_path=tflite_file)

interpreter.allocate_tensors()

input_details = interpreter.get_input_details()

output_details = interpreter.get_output_details()

clip_image006.jpg

TensorFlow Lite 实例(水果分类)

部署运行后效果图:

clip_image008.jpg

模型用途:在给定图像或视频流的情况下,目标检测模型可以识别可能存在已知目标集合中的哪些目标,并提供关于它们在图像中的位置的信息。

部署步骤:

1.   可以自行训练模型或者到Tensorflow Lite Model Market中下载已经训练好的模型。

2.   将模型转换成Model.tflite文件。

3.   将文件传输到终端

4.   加载模型文件Model.tflite 实现识别。

 

 

 

参考文献:https://tensorflow.google.cn/lite/examples/object_detection/overview?hl=zh-cn


网站编辑:小优智能科技有限公司 发布时间:Oct 30,2023
给我们留言
验证码