K210使用和测试

B站链接:

https://www.bilibili.com/video/BV1ET4y1c7rw/

CSDN文件下载:

https://download.csdn.net/download/qq_38649386/12920715

 

目录

前言 4

1  Kendryte开发 5

1.1  IDE环境 5

1.2  开发使用 6

1.2.1  驱动安装 6

1.2.2  使用教程 6

1.3  加载深度学习模型 7

1.4  摄像头和显示屏调试 8

1.4.1  测试camera和LCD 8

1.4.2  图像底色问题 8

1.4.3  LCD图像反转 9

1.4.4  RGB颜色顺序错误 9

2  Maixpy开发 10

2.1  IDE环境 10

2.1.1  介绍 10

2.1.2  安装IDE 10

2.2  烧录固件库 10

2.2.1  固件文件 10

2.2.2  驱动安装 12

2.2.3  烧录软件 12

2.2.4  烧录流程 12

2.3  开发使用 12

2.3.1  编写代码 12

2.3.2  下载 13

2.4  加载模型 13

2.4.1  深度学习代码 13

2.4.2  生成pb文件 13

2.4.3  生成固件文件 14

2.4.5  模型下载 14

2.5  Maixpy IDE测试 14

2.5.1  摄像头&LCD测试 14

2.5.2  深度学习模型测试 15

3  总结 16

3.1  问题描述 16

3.1.1  散热; 16

3.1.2  内存; 16

3.1.3  离线运行 16

3.2  可行方案 17

3.2.1  C语言开发 17

3.2.2  python开发 17

3.2.3  CPU芯片协同处理 17

 

前言

国产芯片K210官方资料齐全,但是开源项目资料比较少。开发过程中,需要按照实际项目修改引脚参数、外设寄存器配置、编写程序函数以及算法移植。

K210支持C/C++和Micro-Python语言进行应用开发。经过多次摸索,现已掌握其开发流程,并记录运行效果。

针对测试过程中出现的问题,提出了可行的方法。

 

背景介绍:

k210带独立FPU的双核处理,64位的CPU位宽,8M的片上SRAM,400M的可调标称频率,支持乘法、除法和平方根运算的双精度FPU,在AI处理方面k210可进行卷积、批归一化、激活、池化等运算。也可以进行语音方向扫描和语音数据输出的前置处理工作,可实现人脸检测,语音识别,颜色、物体识别,MNIST手写数字识别,Feature map显示,Tiny yolov2 20分类等多种功能。

 

本次实验使用开发板型号:Widora AIRV R3 摄像头型号OV2640 像素 200W

 

 

1  Kendryte开发

1.1  IDE环境

下载安装Kendryte IDE,资源见下面链接,压缩包有各种数据手册。

资源:

官方资源页面链接:https://canaan-creative.com/developer

https://github.com/kendryte/kendryte-gnu-toolchain/releases

包含:程序SDK库、SDK开发文档、Model Demo。

Kendryte IDE下载链接:

http://kendryte-ide.s3-website.cn-northwest-1.amazonaws.com.cn/

更多工具下载链接:

https://blog.csdn.net/myg22/article/details/104589607?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.add_param_isCf

下图资料见压缩包或官方网站:

 

图 IDE使用手册

 

图 K210芯片数据手册

 

图 SDK编程指南

安装完成后打开此程序即可。需连接互联网使用。如下图:

 

图 IDE快捷键

1.2  开发使用

1.2.1  驱动安装

数据线插单片机连接电脑之前需要在电脑上安装驱动,驱动可在开发板资源下载。软件见压缩包。

Widora AIRV R3官网下载链接:https://widora.io/k210dev

Widora AIRV R3相关硬件资源链接:https://widora.io/airv3

1.2.2  使用教程

Widora AIRV R3相关教学代码见压缩包:

 

使用IDE创建工程环境略过,详情见IDE开发指南,内容详细。

 

图 工程目录

 

图 代码风格

编程支持C语言开发,可尝试是否支持C++开发。代码风格和51、STM32相同,入门难度低。

1.3  加载深度学习模型

本实验用YOLO算法模型,代码见压缩包。

加载深度学习模型,需使用官方工具ncc,详情见相关资料文档。

 

图 加载模型代码

设置模型用到的参数,调用模型句柄即可正常调用。

 

图 参数设置

1.4  摄像头和显示屏调试

1.4.1  测试camera和LCD

下载提供例程测试开发板能正常运行。代码见压缩包,效果如下图:

 

图 LCD测试

1.4.2  图像底色问题

下载camera代码测试,发现显示图像底色反转,如下图:

 

图 底色问题

分析原因:1.LCD显示设置错误(原始数据无问题);2.摄像头参数设置错误;(原始数据有问题)

经过调试,在LCD初始化时加入显示反转命令可解决次问题。效果如下图:

 

图 调试后底色正常

1.4.3  LCD图像反转

显示图像时,设定LCD显示图像XY轴和上下左右方位即可。修改命令如下:

 

图 XY轴反转

1.4.4  RGB颜色顺序错误

调试完上述问题后仍发现图像显示呈BGR颜色顺序显示,经过修改camera初始化寄存器配置参数,没有解决次问题。

但是下载使用其他程序测试Camera,可按RGB颜色顺序在LCD上正常显示图像。

 

图 R和B颜色反转

 

2  Maixpy开发

2.1  IDE环境

2.1.1  介绍

MicroPython是基于Python3的语法做的一款解析器,包含了Python3的大多数基础语法,主要运行在性能和内存有限的嵌入式芯片上。

MaixPy是将MicroPython移植到K210的一个项目,支持MCU常规操作,以快速开发具有极低成本和体积实用的AIOT领域智能应用。

Maxipy文档链接:

https://cn.maixpy.sipeed.com/zh/

2.1.2  安装IDE

下载链接:

https://dl.sipeed.com/MAIX/MaixPy/ide/

 

图 IDE下载

 

2.2  烧录固件库

2.2.1  固件文件

下载更新MaixPy 固件相当于给开发板烧录系统,使用Type C 线连接开发板和电脑,下载开发板固件。

Sipeed开发板官方固件下载地址链接:

https://github.com/sipeed/MaixPy/releases

https://dl.sipeed.com/MAIX/MaixPy/release/master/

Widora AIRV R3:在文档压缩包中

固件文件:

 

图 固件

上图显示的.bin固件可正常使用。

效果图:

 

图 bin下载

固件文件:

 

图 固件

上图显示的.bin固件下载后,左右反转,或者出现BGR色彩顺序。

效果图:

 

图 bin下载

2.2.2  驱动安装

同上一章节中驱动安装。

2.2.3  烧录软件

软件名称:“Kflash_gui”,保存于文档压缩包中。也可自行网上搜索下载。

https://github.com/sipeed/kflash_gui/releases

2.2.4  烧录流程

下载烧录软件kflash_gui 应用,打开相应固件库文件.bin,选择对应开发板型号,设置下载到Flash、串口波特率1500000、低速模式,插上开发板后设置串口(COM4),点击下载按钮进行烧录,等待烧录完成,点击完成按钮。

经实验Widora AIRV R3可选择开发板型号为:sipeed Maix Dock/sipeed Maix Bit(无麦克风)。

图片:

 

图 下载流程

2.3  开发使用

2.3.1  编写代码

代码实例见官方文档:

https://cn.maixpy.sipeed.com/zh/

2.3.2  下载

1.数据线链接电脑并显示串口,点击IDE工具栏选择相应开发板型号,与下载固件选择型号保持一致。

2.点击界面左下方链接按钮,链接开发板。

3.点击左下方下载按钮进行在线运行。

4.如需要离线运行,需要保存代码至开发板,选择工具栏中保存脚本到开发板选项即可。

 

图 界面

2.4  加载模型

2.4.1  深度学习代码

编写自己项目的深度学习框架代码(tensorflow)。

本实验使用MNIST代码https://github.com/sipeed/Maix-TF-workspace.git

2.4.2  生成pb文件

打包Kfpkg固件:https://blog.sipeed.com/p/390.html

可参考参考上一小节MNIST代码,在目录下生成pb文件,即模型文件。

本次实验使用现有已生成的模型文件进行测试。相关资源文件在压缩包中存放。

2.4.3  生成固件文件

部署流程&模型转换:https://blog.csdn.net/dby_bright/article/details/99779311

得到上一小节pb文件后,将其转化为.bin和.kfpkg文件。具体流程参照上文模型部署链接以及自行百度搜索学习。

本次实验多用的MNIST资料中解压压缩包后得到两个文件,.bin和.kfpkg文件。

2.4.5  模型下载

运行MNIST模型:https://blog.sipeed.com/p/668.html

用Kflash_gui软件下载.kfpkg模型文件,尤其要注意代码中加载模型的地址要与.kfpkg模型文件中.json中的地址保持一致。

 

图 模型文件

模型下载完成后,可在编写的代码中使用该模型。

测试代码见下一章节。

2.5  Maixpy IDE测试

2.5.1  摄像头&LCD测试

测试代码见压缩包,代码风格如下:

 

图 LCD代码

2.5.2  深度学习模型测试

加载MNIST手写字体识别深度学习模型,用开发板上摄像头识别图片上数字。

测试代码见压缩包。

测试结果如图:

 

图 深度学习模型测试

 

3  总结

3.1  问题描述

3.1.1  散热;

长时间运行,芯片温度比较高。

 

图 Widora跑人脸检测温度

 

图 Sipeed跑人脸检测温度

3.1.2  内存;

运行模型不能太大,Micro-Python适合2MB到3MB之间,C语言开发可达到6MB。模型过大,或者处理图片比较大的时候容易出现爆内存的现象,程序跑飞。

3.1.3  离线运行

测试Maixpy离线运行时发现,离线运行程序不稳定。其次,容易出现程序跑飞的情况。可能原因是处理图片过大内存不够,或者离线运行测试时,所用图片非MNIST数据集图片,不能正常处理,所以程序跑飞。只需要在代码中,做相关处理。

3.2  可行方案

3.2.1  C语言开发

C语言开发环境在上文中已经调试完成,现在只需要将深度学习框架语言移植到C语言环境即可。再调用开发板上相关引脚完成相关任务。

3.2.2  python开发

依靠Maixpy用python进行开发K210程序。只需要将深度学习框架语言移植到C语言环境即可。再调用开发板上相关引脚完成相关任务。

3.2.3  CPU芯片协同处理

参照物联网或者无人机解决方案,可加入STM32芯片,和K210协同处理任务。可选用芯片有STM32F1、STM32MP1、STM32H7,根据项目需求选型即可,方案成本比较低。

 

 

你可能感兴趣的:(嵌入式AI,深度学习)