K210 图像识别 (加训练模型)

  常见问题     |      2025-03-05 15:47

本文简介K210的图像识别

首先要明确的是图像识别 ,我们需要识别的是什么? ,如何让机器代替我们识别? ,我们人类认识世界万物? 知道这个是玫瑰花? 这个是豆腐? 这个是火车 这个是我们一步一步的学习所得的,当然如何让机器识别出物品? 也需要机器学习

关于具体的机器学习? 神经网络? 不再这里讲解?

本例程所用的硬件环境是最近新出的K210开发板模块 maixpy

https://maixpy.sipeed.com/zh/course/ai/train/maixhub.html

链接:https://pan.baidu.com/s/1LLx7VPyuz1IGLjyCP4RiMA?
提取码:fmdd

?

网站导航地址
MaixPy 唯一官方文档官网官网: maixpy.sipeed.com
中文站: cn.maixpy.sipeed.com
MaixPy 例程仓库github: github/maixpy_script
国内:gitee/maixpy_scripts
MaixPy 源码github: MaixPy
开发板资料下载dl.sipeed.com
Sipeed WIKIwiki.sipeed.com

MaixPy 是将 Micropython 移植到 K210(一款 64 位双核带硬件 FPU、卷积加速器、FFT、Sha256 的 RISC-V CPU ) 的一个项目, 支持 MCU 常规操作, 更集成了硬件加速的 机器视觉和麦克风阵列, 算力 核心模块却不到, 以快速开发具有极低成本和体积实用的 领域智能应用。

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

MaixPy 让我们在 K210 上编程更加简单快捷, 我们也将源代码开源在 github

使用 MaixPy 可以做很多有趣的事情, 具体可以看这里

比如我们需要扫描 I2C 总线上的设备,不需要复杂的开发环境和工程,只需要通过串口发送如下代码即可实现:

 

同样,我们需要实现一个呼吸灯,只需要如下代码:

 

实时拍照

 

我们本次例程? 就以识别汽车为例

我们要识别汽车要有足够的图片来训练模型 然后将模型装载在K210中

关于模型的训练

我们如何获取汽车的图片? 可以从网络上选择下载? 这是不方便的,? 合理的运用爬虫是最合理的

下面是我下载好的图片

K210训练的模型? 需要修改图片的格式? (224*224)

Sipeed MaixHub – sipeed AI 模型平台

采用下面的工具将图片大小修改? (最后都会放上百度网盘链接)

或者

如果想要拍照训练模型这里有拍照脚本?

上面标注的两个脚本文件是? 加载在K210进行拍照的? 拍下的照片自动保存在内存卡中

 

上述拍照的效果并不太好

在电脑上加载摄像仪进行拍照脚本

 

有了照片? 开始标注

vott标注和 labimag

标注400张

labeIimg 标注

标注完之后 打包上传到云端?

注意上传的格式要求 labeIimg

VOTT

确定了方案,就可以采集照片了, 目标是采集目标分辨率的照片, 以下都以为例, 将他们按照目录进行分类收集, 比如 采集整理好的目录结构:

采集照片有以下几种方式:

  1. 使用开发板采集到卡, 直接采集成需要的分辨率 (推荐)

  2. 手机拍照, 然后使用预处理工具处理成需要的分辨率, 注意, 处理完后一定要手动检查数据是否符合要求, 不然可能影响训练精准度

  3. 使用现成的图片, 使用预处理工具处理成需要的分辨率, 注意, 处理完后一定要手动检查数据是否符合要求, 不然可能影响训练精准度

1. 使用开发板进行数据采集

  • 使用 这个 脚本来进行采集图片

  • 按照 图片采集脚本使用说明 采集图片到卡

  • 将卡中的图片拷贝到电脑, 整理成上面的目录结构, 所有图片的分辨率为

  • 注意 卡需要硬件支持通信, 并使用分区方案,并格式化为格式

2. 使用其它图片

整理成上面的目录结构, 最后所有图片分辨率已经是, 如果不是, 后面还需要处理

  • 如果所有图片已经都是的分辨率,本步骤跳过

  • 如果有图片不是, 那么需要先把所有图片处理成, 稍后会推出预处理工具

对于不同的训练类型:

目标分类

跳过此步骤

目标检测 标注数据集

注意, 一定要先保证分辨率正确, 再标注

标注有以下两种工具:

  1. vott: 点击这里下载

    • 创建项目, 这里比较麻烦的就是数据输入输出文件夹需要创建一个连接(connection)

    • 然后左边导出设置, 选择格式

    • 标注数据

    • 标注完成后需要手动点击导出按钮来导出文件

    • 结果文件目录结构, 注意是必须的,自动生成的, 不要手动修改

?

  1. labelimg : 点击这里下载
    如下图, 选择图片目录, 以及存放(输出)目录,(左边格式不要改动)按下按键后, 用鼠标框出图片中的物体, 并且给它给一个标签, 这里使用了作为标签(一张图中可以有多个物体)


保存后会生成格式的文件(即格式),每张图对应一个文件

结果文件: 完成后目录结构和文件如下:

?

或者两级目录

将前面处理好的数据集进行打包, 使用压缩,暂不支持其它格式, 而且文件不要超过

目标分类

一个文件夹一个分类, 分类名(标签/label)就是文件夹名

?

目标检测

  1. vott的输出文件结构:

  1. labelimg 的输出文件结构

新建了一个, 输入标记的标签, 每行一个, 比如这里:

这是必须的, 否则数据无效

然后目录结构如下

?

或者两级labelimg输出

?

Sipeed MaixHub – sipeed AI 模型平台 创建训练任务

  • 选择训练类型

  • 填写邮箱地址, 用于接收结果, 包括成功(模型等文件) 和 失败 (失败原因)结果

  • 如果要求填写机器码(不要求则跳过此步骤):

    • 警告: 由于需要进行模型加密,运行 将永远关闭 端口,并写入一次性 AES KEY,请确认对自己开发没有影响再进行烧录。(如果不使用调试开发或者仅使用开发不影响)

    • 下载 固件 key_gen_v1.2.zip

    • 下载 kflash-gui

    • 使用 烧录 固件

    • 打开串口终端, 重启开发板, 可以看到打印出的机器码。

 

其中 就是对应开发板的机器码

  • 上传打包好的格式的数据集

  • 点击创建训练任务

训练结果(成功或者失败) 会发送到邮箱。 是一个压缩文件, 解压后仔细阅读,使用了中英文对使用方法进行了说明

默认是在有最新版固件的情况下, 将结果文件全部拷贝到卡根目录, 断电插入开发板, 然后上电就可以运行了

如果需要将模型放到, 烧录方法参考教程

?以管理员的方式运行

下载模式? 高速改为低速模式