本文简介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 WIKI | wiki.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. 使用其它图片
整理成上面的目录结构, 最后所有图片分辨率已经是, 如果不是, 后面还需要处理
-
如果所有图片已经都是的分辨率,本步骤跳过
-
如果有图片不是, 那么需要先把所有图片处理成, 稍后会推出预处理工具
对于不同的训练类型:
目标分类
跳过此步骤
目标检测 标注数据集
注意, 一定要先保证分辨率正确, 再标注
标注有以下两种工具:
-
-
创建项目, 这里比较麻烦的就是数据输入输出文件夹需要创建一个连接(connection)
-
然后左边导出设置, 选择格式
-
标注数据
-
标注完成后需要手动点击导出按钮来导出文件
-
结果文件目录结构, 注意是必须的,自动生成的, 不要手动修改
-
?
-
labelimg : 点击这里下载
如下图, 选择图片目录, 以及存放(输出)目录,(左边格式不要改动)按下按键后, 用鼠标框出图片中的物体, 并且给它给一个标签, 这里使用了作为标签(一张图中可以有多个物体)
保存后会生成格式的文件(即格式),每张图对应一个文件
结果文件: 完成后目录结构和文件如下:
?
或者两级目录
将前面处理好的数据集进行打包, 使用压缩,暂不支持其它格式, 而且文件不要超过
目标分类
一个文件夹一个分类, 分类名(标签/label)就是文件夹名
?
目标检测
-
vott的输出文件结构:
-
labelimg 的输出文件结构
新建了一个, 输入标记的标签, 每行一个, 比如这里:
这是必须的, 否则数据无效
然后目录结构如下
?
或者两级labelimg输出
?
到 Sipeed MaixHub – sipeed AI 模型平台 创建训练任务
-
选择训练类型
-
填写邮箱地址, 用于接收结果, 包括成功(模型等文件) 和 失败 (失败原因)结果
-
如果要求填写机器码(不要求则跳过此步骤):
-
警告: 由于需要进行模型加密,运行 将永远关闭 端口,并写入一次性 AES KEY,请确认对自己开发没有影响再进行烧录。(如果不使用调试开发或者仅使用开发不影响)
-
下载 固件 key_gen_v1.2.zip
-
下载 kflash-gui
-
使用 烧录 固件
-
打开串口终端, 重启开发板, 可以看到打印出的机器码。
-
其中 就是对应开发板的机器码
-
上传打包好的格式的数据集
-
点击创建训练任务
训练结果(成功或者失败) 会发送到邮箱。 是一个压缩文件, 解压后仔细阅读,使用了中英文对使用方法进行了说明
默认是在有最新版固件的情况下, 将结果文件全部拷贝到卡根目录, 断电插入开发板, 然后上电就可以运行了
如果需要将模型放到, 烧录方法参考教程
?以管理员的方式运行
下载模式? 高速改为低速模式