TinyML之Hello world----基于Arduino Nano 33 BLE Sense Rev2的呼吸灯

早期版本的Hello World

这应该是一个逼格比较高的呼吸灯了,用ML来实现呼吸灯功能,之前已经有大佬发过类似的文章:https://blog.csdn.net/weixin_45116099/article/details/126310816

当前版本的Hello World

这是一个ML的入门例程,但是随着版本的变更,现在最新的例程已经采用了新的方法:https://github.com/tensorflow/tflite-micro/tree/main/tensorflow/lite/micro/examples/hello_world

说实话,我一看到里面的bazel,直接就蒙了,光搭建开发环境就可以把我们菜鸟劝退。

好在,有colab,这里不得不表扬一下人家业界巨佬的奉献精神,有了colab,好多基础环境人家Google已经帮你搭建好了。

环境搭建

其实,所谓的环境搭建,就是在colab里安装bazel,下载github工程:

!npm install -g @bazel/bazelisk
!git clone https://github.com/tensorflow/tflite-micro.git

一条代码搞定。

Run the evaluate.py script on a development machine

把目录切换到/content/tflite-micro,这里插一句,colab的目录切换用!cd好像不太好用,还是得用python

import os
path = "/content/tflite-micro"
os.chdir(path)
print(os.getcwd())

然后运行:

bazel build tensorflow/lite/micro/examples/hello_world:evaluate
bazel run tensorflow/lite/micro/examples/hello_world:evaluate
bazel run tensorflow/lite/micro/examples/hello_world:evaluate -- --use_tflite

Run the evaluate_test.py script on a development machine

bazel build tensorflow/lite/micro/examples/hello_world:evaluate_test
bazel run tensorflow/lite/micro/examples/hello_world:evaluate_test

Run the tests on a development machine

bazel run tensorflow/lite/micro/examples/hello_world:hello_world_test
make -f tensorflow/lite/micro/tools/make/Makefile test_hello_world_test

Train your own model

bazel build tensorflow/lite/micro/examples/hello_world:train
bazel-bin/tensorflow/lite/micro/examples/hello_world/train --save_tf_model 
--save_dir=/tmp/model_created/
bazel build tensorflow/lite/micro/examples/hello_world/quantization:ptq
bazel-bin/tensorflow/lite/micro/examples/hello_world/quantization/ptq  
--source_model_dir=/tmp/model_created --target_dir=/tmp/quant_model/

这样,就在/tmp/quant_model/下生成了量化后的模型参数,用下列代码转换成Arduino可以运行的模型参数:

import os
path = "/tmp/quant_model"
os.chdir(path)
print(os.getcwd())
!apt get -qq install xxd
!xxd -i hello_world_int8.tflite > hello.cc
!cat hello.cc

在Arduino Nano 33 BLE Sense Rev2上运行

在Arduino IDE里打开Harvard_TinyMLx下的hello world工程,将里面的model.cpp里面的模型替换为上面生成的模型,编译上传即可看到呼吸灯了。
打开串品绘图窗口,如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见面试题总结

1. 苍穹外卖的模块 苍穹外卖大方向上主要分为管理端和用户端 管理端使用vue开发,主要是商家来使用,提供餐品的管理功能,主要有下面几个模块: 员工模块,提供员工账号的登录功能和管理功能 分类、菜品、套餐模块&…

promise笔记

1.介绍 之前的异步编程都是回调函数(数据库操作、ajax、定时器、fs读取文件 ) promise是es6异步编程新的解决方案,是一个构造函数 优点:支持链式调用,可以解决回调地狱,可以指定回调函数 2.使用 functio…

SpringCloud之负载均衡Ribbon

Ribbon 是一个客户端负载均衡工具,主要功能是将面向服务的Rest模板(RestTemplate)请求转换成客户端负载均衡的服务调用。通过Ribbon,开发人员可以在客户端实现请求的负载均衡,而无需单独部署负载均衡器。Ribbon支持多…

在config.json文件中配置出来new mars3d.graphic.PolylineCombine({大量线合并渲染类型的geojson图层

在config.json文件中配置出来new mars3d.graphic.PolylineCombine({大量线合并渲染类型的geojson图层 问题场景: 1.浏览官网示例的时候图层看到大量线数据合并渲染的示例 2.矢量数据较大量级的时候,这种时候怎么在config.json文件中尝试配置呢&#x…

软件更新 | TSMaster 2024.04 最新版已上线,来看看新增了哪些实用功能

TSMaster是集汽车总线嵌入式代码生成、监控、仿真、开发、UDS诊断、CCP/XCP标定、ECU刷写、I/O控制、测试测量等功能于一体的国产软件工具。在最新更新的软件版本里,增加了很多新功能,其中期待已久的DoIP诊断功能终于在最新升级版本里可以实现&#xff0…

Redis__数据类型

文章目录 😊 作者:Lion J 💖 主页: https://blog.csdn.net/weixin_69252724 🎉 主题:Redis__数据类型 ⏱️ 创作时间:2024年04月28日 ———————————————— 这里写目录标题 文…

理清STM32的内存(ram)与flash(rom)空间

keil工程变异代码的时候,会有如下输出信息 code:代码机器编译后生成的一系列指令,永远只放在flsah,内存ram不会存在; RO-data:只读常量,永远只放在flash内,存ram不会存在;; RW-dat…

SCP收容物001

注 :本文是特别版,本文只供开玩笑 ,与steve_gqq_MC合作。 --------------------------------------------------------------------------------------------------------------------------------- 前言:我的第一篇文章说过,SC…

【树莓派】yolov5 Lite,目标检测,行人检测入侵报警,摄像头绑定

延续之前的程序: https://qq742971636.blog.csdn.net/article/details/138172400 文章目录 播放声音pygame不出声音怎么办(调节音量)树莓派上的音乐播放器(可选)命令行直接放歌(尝试放mp3歌曲) …

word添加行号

打开页面设置,找到行号

Java设计模式 _创建型模式_工厂模式(普通工厂和抽象工厂)

一、工厂模式 属于Java设计模式创建者模式的一种。在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 二、代码示例 场景:花店有不同的花,通过工厂模式来获取花。 1、普通工厂模式 逻辑步骤&#…

【算法每日一练】

蛮有意思的的一道题,最后要判断能否成为一种1~n的全排列,我最这样做的: 整个数组先排序一下。假设遍历到了i,那就判断前面b和r的个数,但是有想到了后面可能还会对前面的结果产生影响,所以就抛弃了这个想法…

安卓intent+传递Serializable接口

从Mainactivity1传递对象给MainActivity2可以通过Serializable对象。 <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.co…

鸿蒙开发HarmonyOS4.0入门与实践

鸿蒙开发HarmonyOS4.0 配合视频一起食用&#xff0c;效果更佳 课程地址&#xff1a;https://www.bilibili.com/video/BV1Sa4y1Z7B1/ 源码地址&#xff1a;https://gitee.com/szxio/harmonyOS4 准备工作 官网地址 鸿蒙开发者官网&#xff1a;https://developer.huawei.com/con…

纯血鸿蒙APP实战开发——全局状态保留能力弹窗

全局状态保留能力弹窗 介绍 全局状态保留能力弹窗一种很常见的能力&#xff0c;能够保持状态&#xff0c;且支持全局控制显隐状态以及自定义布局。使用效果参考评论组件 效果图预览 使用说明 使用案例参考短视频案例 首先程序入口页对全局弹窗初始化&#xff0c;使用Globa…

高扬程水泵,提升水源新选择!— 恒峰智慧科技

在炎炎夏日&#xff0c;阳光炙烤着大地&#xff0c;森林火灾的发生频率也随之上升。火势猛烈&#xff0c;烟雾弥漫&#xff0c;给森林带来了极大的破坏。为了保护森林资源&#xff0c;我们必须采取有效的措施来扑灭火灾。而在这其中&#xff0c;高扬程水泵成为了提升水源新选择…

笔记:编写程序,绘制一个展示马尾松、樟树、杉木、 桂花 4 个树种不同季节的细根生物量的误差棒图。

文章目录 前言一、分析题目二、什么是误差棒图&#xff1f;二、编写程序总结 前言 编写程序&#xff0c;绘制一个展示马尾松、樟树、杉木、 桂花 4 个树种不同季节的细根生物量的误差棒图&#xff0c;实现过程如下&#xff1a; &#xff08;1&#xff09; 导入 matplotlib.pyp…

【数据结构与算法(C语言)】1. 线性表的顺序存储

文章目录 前言一. 线性表插入和删除1. 元素的插入2. 元素的删除 二. 代码三. 优缺点 前言 线性表的顺序存储结构&#xff0c;指的是用一段地址连续的存储单元依次存储线性表的数据结构 一. 线性表插入和删除 1. 元素的插入 插入位置之后的数据都向后移一位&#xff0c;上图中元…

银行业ESB架构:构建安全高效的金融信息交换平台

在金融行业&#xff0c;信息交换是银行业务运作的核心。为了实现不同系统之间的数据交互和业务流程的协同&#xff0c;银行通常采用企业服务总线&#xff08;ESB&#xff09;架构。本文将探讨银行业ESB架构的设计理念、关键技术以及实践经验&#xff0c;帮助银行构建安全高效的…

《软件过程与管理》复习

《软件过程与管理》复习 1 高质量编程及测试 1.1 如何选择正确的评审方法 选择评审方法最有效的标准是&#xff1a; “对于最可能产生风险的工作成果&#xff0c;要采用最正式的评审方法.” 例如&#xff1a;核心代码的失效也会带来很严重的后果&#xff0c;所以也应该采用…