U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

使用tensorflow2.3训练数字识别模型并量化为tflite后部署到openMV上

来源:http://www.tudoupe.com时间:2022-02-03

前言

本文将介绍使用tensorflow2.3训练手写数字的模型并量化为TFlite后,将其部署到openMV或者openart mini上面运行,本文抛砖引玉,大家可以用自己的数据集训练其他分类模型并量化部署到机器上。

一、环境介绍

软件环境:

tensorflow2.3版本

openMV IDE

硬件介绍:

openMV4 H7 PLUS/或者openART mini(训练好后的模型普通的H7非PLUS版本好像也可以跑,但是输出的数据很奇怪,数据没有归一化而且非常奇怪,openART mini就是逐飞科技的那款摄像头,熟悉全国大学生智能车比赛(视觉组)的小伙伴应该知道这个摄像头)

有关tensorflow的解释此处不多做介绍,作者也是在校大学生,对tensorflow也只能算是一个小白的水平(手动狗头.jpg)

作者使用的是这一款openART

二、模型训练

在此假设你已经安装好了tensorflow2.3版本,如果有不会的小伙伴可以在CSDN上查看教程 机器视觉系列(02)---TensorFlow2.3 + win10 + GPU安装_美摄科技-CSDN博客

废话不多说,直接上代码:

原始代码:

这个代码其实也是我从网上down来的,亲测可用!!!如果你正常运行的话应该会得到下面的结果:

笔者使用的是jupyter_notebook训练的模型,上述代码运行后会在notebook的根目录下生成这个tflite模型文件

这个模型是可以直接上机器上面跑起来的,会部署的同学可以移步到文章最后,这里先介绍一下代码内容,有能力优化的同学可以自行优化。

代码介绍:

导入环境依赖包:

下载数据集:

这个数据集是Google的mnist手写数字数据集,由0~10的数字组成,大约有六万张图片,上面的代码运行后会得到以下的结果:

设置训练集和测试集:

模型搭建:

这个模型非常简单是lenet5数字识别模型,大家可以自行优化,模型结构长这个样子

模型训练:

开始模型训练,这里我设置的是50轮训练次数,实际上10多次的时候模型已经达到稳定状态了。训练结束后会得到这样的结果:

训练过程可视化:

这是作者的训练结果:

可以看到这个模型收敛速度挺快的

模型测试与保存:

这里保存的是keras模型,可以把h5模型量化为nn模型,同样也可以部署在openMV上,不过nn模型的话得用逐飞科技的seekfree_nncu_tool_master可以参考这篇文章:第十六届全国大学生智能车| AI视觉组新手入门教程_TSINGHUAJOKING-CSDN博客_ai视觉组 icon-default.png?t=M0H8https://blog.csdn.net/zhuoqingjoking97298/article/details/115335260?ops_request_misc=&request_id=&biz_id=102&utm_term=seekfree_nncu_tool_master&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-115335260.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187。下面是这段代码运行后的结果,可以看到测试结果准确度还是挺高的:

保存为PB模型

pb模型为tensorflow保存的标准模型,没有损失任何精度

模型量化:

在这里讲一个小插曲,我之前将模型量化的时候用的官方的代码结果量化成了uint8模型,结果放到openMV上死!活!跑!不!通!一直报错:OSError: C:/Users/nxf48054/Desktop/share/tensorflow/tensorflow/lite/micro/kernels/quantize.cc:67 input->type == kTfLiteFloat32 || input->type == kTfLiteInt16 || input->type == kTfLi was not true.
Node QUANTIZE (number 0f) failed to prepare with status 1
AllocateTensors() failed!

后来我在openMV的官方论坛上查了一两天才发现原来openMV只能跑int8模型······焯!!!!!

模型结束

不出意外的话你将会在jupyternotebook根目录上得到这个模型:

找到这个模型的路径,我的模型是放在了E盘下面:

剩下的事情就简单了

将tflite模型部署到openMV上

将模型拷贝到sd卡上

这里还需要标签文件和micropython的代码,标签文件就是个txt文档,打开就是这样:

另外一个openMV的运行代码是我直接拿 Edge Impulse 训练出来的模型代码改的。

话不多说,直接上代码:

这里我改了一点标签路径:

如果是用OpenMV4 H7 plus的话可以把标签路径"sd/labels.txt"里的“sd/”给去掉,但是如果要在OpenART mini上运行的话得加上sd/

实机测试

可以看出模型运行效果还不错,识别的还挺准的,速度的话每秒也能跑到18帧。

OK,文章到此就结束了。讲点题外话,作者也是个在校本科生,之前参加了20年和21年的电赛,当时第一次参加电赛的时候单片机编程的什么啥都不会,后面感谢arduino带我一步一步地步入单片机的深坑。21年电赛的时候选了F题送命小车,又遇到了神经网络图像识别的深坑,当时啥都不会,跟着学搭建模型,结果没学完建模型就比赛时间结束了。今年又参加了十七届全国大学大学生智能车比赛又遇到了openMV,不过这次准备时间还挺长的,网上东学一点西学一点还真就把模型整上去了,后面也得考研了,估计后面的时间就会告别单片机了。

今天大年初一,祝大家虎年快乐哇,虎虎生威~

上一篇:Mac使用Appium连接真机与appium-inspector配置

下一篇:没有了

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息