SenseCraft 部署模型到Grove Vision AI V2图像处理模块

Grove Vision AI V2 图像处理模块开箱测评

摘要

今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型,和如何通过 XIAO ESP32C3 调用这些模型,轻松实现智能视觉功能!

原文链接:

FreakStudio的博客

往期推荐:

可能是全网最适合入门的面向对象编程教程:Python实现-嵌入式爱好者必看!

全网最适合入门的面向对象编程教程:00 面向对象设计方法导论

全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念

全网最适合入门的面向对象编程教程:02 类和对象的Python实现-使用Python创建类

全网最适合入门的面向对象编程教程:03 类和对象的Python实现-为自定义类添加属性

全网最适合入门的面向对象编程教程:04 类和对象的 Python 实现-为自定义类添加方法

全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签

全网最适合入门的面向对象编程教程:06 类和对象的 Python 实现-自定义类的数据封装

全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解

全网最适合入门的面向对象编程教程:08 类和对象的 Python 实现-@property 装饰器

全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系

全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则

全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法

全网最适合入门的面向对象编程教程:12 类和对象的 Python 实现-Python 使用 logging 模块输出程序运行日志

全网最适合入门的面向对象编程教程:13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用

全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法

全网最适合入门的面向对象编程教程:15 类和对象的Python实现-__slots__魔法方法

全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则

全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“

全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图

全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释

全网最适合入门的面向对象编程教程:20 类和对象的 Python 实现-组合关系的实现与 CSV 文件保存

全网最适合入门的面向对象编程教程:21 类和对象的 Python 实现-多文件的组织:模块 module 和包 package

全网最适合入门的面向对象编程教程:22 异常捕获-异常和语法错误

全网最适合入门的面向对象编程教程:23 异常捕获-抛出异常

全网最适合入门的面向对象编程教程:24 异常捕获现-异常的捕获与处理:try/except语句、文件读写示例、Exception引用

全网最适合入门的面向对象编程教程:25 异常捕获-Python 判断输入数据类型

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:27 异常捕获-Python 中异常层级与自定义异常类的实现

全网最适合入门的面向对象编程教程:28 异常捕获-Python编程原则、哲学和规范大汇总

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类

全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type

全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组

全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性

全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典

更多精彩内容可看:

CM3调试系统简析

肝了半个月,嵌入式技术栈大汇总出炉

Avnet ZUBoard 1CG开发板上手—深度学习新选择

比赛获奖的武林秘籍:09 一文速通计算机设计大赛,比赛人必看的获奖秘籍

比赛获奖的武林秘籍:08 一文速通光电设计大赛,电子人必看

比赛获奖的武林秘籍:07 一文速通电子设计大赛,电子人必看的获奖秘籍!

比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验!

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容

比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南

比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍:01 如何看待当代大学生竞赛中“卷”“祖传老项目”“找关系”的现象?

比赛获奖的武林秘籍:00 学科竞赛-工科类大学生绕不开的话题,你了解多少?

正文部分

1.硬件设备介绍

首先,让我们快速了解一下我们即将使用的硬件设备。

image

我们使用的视觉处理模块为 Grove Vision AI V2 图像处理模块,具有如下特点:

image

image

Grove Vision AI 模块会本地处理图像并执行模型推理,然后将结果通过 IIC 或 UART 发送到 XIAO。XIAO 需要接收并解析来自 Grove Vision AI 的数据,根据这些结果执行相应的操作,如控制 LED、驱动电机或触发其他外设。这使得 XIAO 成为系统的执行单元,响应 Grove Vision AI 传递的检测结果。

image

image

2.SenseCraft 部署模型

2.1 SenseCraft 平台简介

Seeed SenseCraft Model Assistant(或简称 SSCMA)是一个专注于嵌入式 AI 的开源项目。针对真实场景优化了 OpenMMLab 的优秀算法,使实现更加人性化,在嵌入式设备上实现更快、更准确的推理。

目前支持以下方向的算法:

SenseCraft AI 提供了无缝且用户友好的体验,可以帮助用户轻松地将大量公开可用的 AI 模型部署到他们的边缘设备上。

image

2.2 部署流程

使用 USB 链接模块和电脑,然后在 SenseCraft 网站上进行部署:

image

image

2.3 预览模型识别效果

image

2.4 SenseCraft 平台优势

  • 降低 AI 入门门槛:SenseCraft 的平台设计简化了 AI 模型开发的复杂性,使得初学者也能快速上手
  • 广泛的硬件兼容性:支持多种 Seeed 硬件产品,用户可以根据项目需求选择适合的设备
  • 边缘计算:本地推理能力减少了对网络的依赖,提高了应用的实时性和安全性

2.5 石头剪刀布分类模型测试

image

上代码

#include <Seeed_Arduino_SSCMA.h>

SSCMA AI;

void setup()
{
    AI.begin();
    Serial.begin(9600);
}

void loop()
{
    if (!AI.invoke())
    {
        Serial.println("invoke success");
        Serial.print("perf: prepocess=");
        Serial.print(AI.perf().prepocess);
        Serial.print(", inference=");
        Serial.print(AI.perf().inference);
        Serial.print(", postpocess=");
        Serial.println(AI.perf().postprocess);

        for (int i = 0; i < AI.boxes().size(); i++)
        {
            Serial.print("Box[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.boxes()[i].target);
            Serial.print(", score=");
            Serial.print(AI.boxes()[i].score);
            Serial.print(", x=");
            Serial.print(AI.boxes()[i].x);
            Serial.print(", y=");
            Serial.print(AI.boxes()[i].y);
            Serial.print(", w=");
            Serial.print(AI.boxes()[i].w);
            Serial.print(", h=");
            Serial.println(AI.boxes()[i].h);
        }
        for (int i = 0; i < AI.classes().size(); i++)
        {
            Serial.print("Class[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.classes()[i].target);
            Serial.print(", score=");
            Serial.println(AI.classes()[i].score);
        }
        for (int i = 0; i < AI.points().size(); i++)
        {
            Serial.print("Point[");
            Serial.print(i);
            Serial.print("] target=");
            Serial.print(AI.points()[i].target);
            Serial.print(", score=");
            Serial.print(AI.points()[i].score);
            Serial.print(", x=");
            Serial.print(AI.points()[i].x);
            Serial.print(", y=");
            Serial.println(AI.points()[i].y);
        }
    }
}

接下来我们对代码进行简单分析:

  1. 先导入库函数 <Seeed_Arduino_SSCMA.h>

    • SSCAM 库的主要目的是处理 Grove Vision AI 的数据流,而不涉及模型推理或图像处理。
  2. 初始化部分

    • SSCMA AI;:创建一个名为 AI 的 SSCMA 对象,用于与 Grove Vision AI 进行通信。
    • void setup():在 setup() 函数中,首先使用 AI.begin() 初始化 Grove Vision AI 模块。然后,通过 Serial.begin(9600) 初始化串口通信,以便将结果输出到串口监视器。
  3. 主循环

    • void loop()loop() 函数会反复执行,主要用来不断调用 Grove Vision AI 进行推理,并输出结果。
    • if (!AI.invoke()):调用 AI.invoke() 进行推理,如果推理成功(即 invoke() 返回 false),则开始处理推理结果。
    • 性能信息输出
      • AI.perf():获取推理过程的性能信息,包括预处理(prepocess)、推理(inference)和后处理(postprocess)的时间。
    • 检测框输出
      • AI.boxes():获取推理结果中的所有检测框,并循环输出每个检测框的信息,包括目标、得分、位置(x, y)和大小(w, h)。
    • 分类结果输出
      • AI.classes():获取推理结果中的所有分类信息,并循环输出每个分类的信息,包括目标和得分。
    • 关键点输出
      • AI.points():获取推理结果中的所有关键点信息,并循环输出每个关键点的信息,包括目标、得分和位置(x, y)。

2.6 串口输出消息解析

invoke success:这行表明 AI.invoke() 方法调用成功,即图像识别过程已经完成。

image

perf: prepocess=7, inference=80, postpocess=0:这行显示了识别过程中的三个关键性能指标:

image

Box[0] target=1, score=81, x=209, y=161, w=63, h=114:这行表示检测到的第一个边界框(box)的信息:

image

网站链接:

在这里插入图片描述

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Freak嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值