随着人工智能、神经网络以及机器学习应用的发展,边缘处理的场景越来越多,一些针对IOT设备和嵌入式设备的迁移学习网络应运而生,TensorflowLite就是在这样的情境下诞生。
尽管Tensorflow Lite已经足够小,足够快速,但作为资源非常紧俏的单片机来说,尤其是图像处理,仍有点力不从心。好在Vision Board拥有足够强大的性能,而且外扩了较大的SDRAM作为数据处理内存使用,已基本满足进行一些数据量小,图像素质低的识别要求。
本章内容将讲解如何使用edgeimpulse.com网站来自行训练神经网络模型,进而实现机器学习的功能。
目录
Vision Board介绍(Cortex M85内核)
前期准备
开发环境准备
上传Edge Impulse进行训练
1
Vision Board介绍(Cortex M85内核)
内核:480 MHz Arm Cortex-M85,包含Helium和TrustZone技术
存储:集成2MB/1MB闪存和1MB SRAM(包括TCM,512KB ECC保护)
外设:兼容xSPI的四线OSPI(带XIP和即时解密/DOTF)、CAN-FD、以太网、USBFS/HS、16位摄像头接口和I3C等
高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持
提供 6.39 CoreMark/MHz 的性能,可支持要求最高计算性能和 DSP 或 ML 功能的苛刻物联网应用
2
前期准备
下面是本次实验所需要的软件及参考资料:
开发工具:MDK5 V5.3.8,OpenMv IDE V4.0.14
Demo 代码:https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board
EDGE IMPULSE网站:studio.edgeimpulse.com
图片素材:https://github.com/JiaBing912/VisionBoard-Picture-training-material
3
开发环境准备
本次实验将基于vision_board_openmv Demo进行开发,双击 mklinks.bat 文件,执行脚本后会生成 rt-thread、libraries 两个文件夹。

运行env,输入menuconfig,在Enable OpenMV for RT-Thread—>目录下,打开Enable tflite support功能。

保存并退出,输入scons —target=mdk5,重新生成mdk5工程。



随后打开mdk5工程,编译,烧录即可。

5
上传Edge Impulse进行训练
1 注册账号并创建Edge Impulse工程
打开Edge impluse网站,注册登录。随后在项目标签页创建新项目:

这里以数字识别为例。

2 上传训练集
按照以下步骤,依次点击Dashboard->Add existing data->Upload data。(训练集图片样本可从3.前期准备中图片素材中获取,此次实验使用的是mnist_lite文件夹下的手写数字图片样本。)


注意:若未在数据集中对图片进行label注释(可参考官方文章),需要手动进行添加标签,或直接选择Enter label进行标签定义;图片素材中的数据集格式为28x28像素bpm文件,EDGE IMPULSE网页不支持BMP及28x28像素格式,需要通过python脚本对图片进行转换。mnist_lite文件夹中已将图片转换为256*256png格式。
3 生成特征
点击左侧Impulse design->Create Impulse,依次点击Add a processing block、Add a learning block进行输入数据对象、训练模型的选择,并点击保存。

继续点击左侧Image,Color depth选择RGB,点击保存。接下来会自动跳转到生成特征界面,点击生成特征按钮,等待特征生成,结束后会有三维图像显示。

4 迁移训练
点击左侧Transfer learning按钮,依次设置训练参数:训练周期、学习率等参数。随后选择自己实验最符合的训练模型,点击开始训练。

如果最后的结果和准确率不满足自己的实验要求,可尝试重新训练,重新更改参数及训练模型。

5 在Vision Board上部署
在左侧点击Deployment,搜素OpenMV library,点击Build,等待固件生成。

将下载下来的压缩文件解压(”trained.tflite”、”labels.txt”、”ei_image_classification.py”),将ei_image_classification.py改名为main.py,随后将3个文件全部复制到sd卡中去(确保sd卡无其他文件)。

用type-c线连接Vision Board USB-OTG口,随后将sd卡中的main.py拖入OpenMV IDE中,打开并运行,此时可以在串口终端看见识别的结果及准确率。

全部0条评论
快来发表一下你的评论吧 !