首页 > 其他分享 >SenseCraft 部署模型到Grove Vision AI V2图像处理模块

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

时间:2024-08-14 20:07:02浏览次数:15  
标签:SenseCraft Python Grove 教程 AI V2 面向对象编程 print Serial

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

摘要

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

原文链接:

FreakStudio的博客

往期推荐:

学嵌入式的你,还不会面向对象??!

全网最适合入门的面向对象编程教程: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 类和对象的Python实现-异常和语法错误

全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出异常

全网最适合入门的面向对象编程教程:24 类和对象的Python实现-异常的捕获与处理

全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型

全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句

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

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

全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用

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

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

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

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

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

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

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

更多精彩内容可看:

给你的 Python 加加速:一文速通 Python 并行计算

一文搞懂 CM3 单片机调试原理

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

电子计算机类比赛的“武林秘籍”

一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库

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

正文部分

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

网站链接:

image

标签:SenseCraft,Python,Grove,教程,AI,V2,面向对象编程,print,Serial
From: https://www.cnblogs.com/FreakEmbedded/p/18359673

相关文章

  • YOLOv8改进系列,YOLOv8替换主干网络为MobileNetV2(轻量化架构+助力涨点)
    原论文摘要MobileNetV2架构在多个任务和基准测试中提高了移动模型的最先进性能,并在不同的模型规模中表现出色。我们还介绍了在一种我们称之为SSDLite的新框架中应用这些移动模型进行目标检测的高效方法。MobileNetV2理论详解可以参考链接:论文地址本文在YOLOv8中的主干......
  • CSC7166B 内置高压启动12V1A(5V2.1A)芯片
    CSC7166B是反激式内置MOS,12W电源原边控制IC。在不使用光耦和TL431的情况下可提供恒定输出电压(CV)和恒定输出电流(CC)。CSC7166B采用多模式控制技术,可有效减少开关损耗,保证全负载和线性范围内的较高的转换效率,满足能源之星6级能效标准。CSC7166B内置高压启动回路和650V高压功率MOSF......
  • 计算机视觉1:cv2模块函数学习
    cv2模块函数学习importcv2ascv (下文同一用cv)1.cv.imread()cv.imread(filename[,flags]) -> retval其中,参数filename表示要读取得图像得文件名,flags表示读取模式,取值如下:flags=2,表示载入的图像深度为16位或者32位,就返回对应深度的图像,否者转换为8位图像再返......
  • 夏日狂欢,游戏新体验,植物大战僵尸杂交版 v2.3.5
    ......
  • 965div2补题
    A.FindKDistinctPointswithFixedCenter思路简单构造,我居然在这个题上因为没看懂英文还有机翻英太过逆天导致我WA了好几发......ACcode:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;voidsolve(){intx,y,k;cin>>x>>y>>k;in......
  • 界面控件DevExpress WPF v24.1系统环境配置要求
    DevExpressWPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中......
  • Blazor开发框架Known-V2.0.7
    V2.0.7Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。官网:http://known.pumantech.comGitee:https://gitee.com/known/KnownGithub:https://github.com/known/Known概述基于C#和Blazor的快速开发框架,开箱即用,跨平台。模块化,单页应用,混合......
  • WPS Office 2023专业版 v12.8.2.17149v2 精简优化版
    概述WPSOffice是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。具有内存占用低、运行速度快、体积小巧、强大插件平台支持、免费提供海量在线存储空间及文档模板、支持阅读和输出PDF文件、全面兼容微软Office97-2010格......
  • CF1998 div2 & abc366
    1CF1.1B被诈骗了。我们的构造要向“每个区间只有1个数不一样考虑”。1.2C比较难。但是出的好。注意到如果我们不删除中位数这个位置的数,那么那个数是一定的。所以我们可以把\(k\)加到最大的可以加的数上,统计答案就在这个数,然后二分算中位数即可。其它策略?我们可不......
  • Mac植物大战僵尸杂交版V2.3一键点击安装(实测有效)
    文章目录前言系统环境下载遇到问题提示安装包已经损坏窗口不显示画面总结前言植物大战僵尸杂交版V2.3Mac一键安装,本机亲测安装成功安装耗时5-10分钟系统环境MacMiniM2macOSSonoma下载下载点击这里下载拖动安装即可遇到问题提示安装包已经损......