Grove Vision AI V2 Image Processing Module Unboxing Review
summaries
Today we're going to teach you how to quickly get started with the Grove Vision AI V2 image processing module, and together we're going to explore how to deploy AI models with SenseCraft and how to easily implement smart vision features by calling them through the XIAO ESP32C3!
Link to original article:
FreakStudio's Blog
Past Recommendations:
You're learning embedded and you don't know how to be object oriented?
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 00 Introduction to Object-Oriented Design Methods
The network's most suitable for the introduction of object-oriented programming tutorials: 01 Basic Concepts of Object-Oriented Programming
The Best Object-Oriented Programming Tutorials for Getting Started on the Web: 02 Python Implementations of Classes and Objects - Creating Classes with Python
The Best Object-Oriented Programming Tutorials for Getting Started on the Web: 03 Python Implementations of Classes and Objects - Adding Attributes to Custom Classes
The Best Object-Oriented Programming Tutorial on the Net for Getting Started: 04 Python Implementation of Classes and Objects - Adding Methods to Custom Classes
The Best Object-Oriented Programming Tutorial on the Net for Getting Started: 05 Python Implementation of Classes and Objects - PyCharm Code Tags
The best object-oriented programming tutorials on the net for getting started: 06 Python implementation of classes and objects - data encapsulation of custom classes
The best object-oriented programming tutorial on the net for getting started: 07 Python implementation of classes and objects - type annotations
The best object-oriented programming tutorial on the net for getting started: 08 Python implementation of classes and objects - @property decorator
The best object-oriented programming tutorials on the net for getting started: 09 Python implementation of classes and objects - the relationship between classes
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 10 Python Implementations of Classes and Objects - Class Inheritance and Richter's Replacement Principle
The best object-oriented programming tutorials on the net for getting started: 11 Python implementation of classes and objects - subclasses call parent class methods
The network's most suitable for the introduction of object-oriented programming tutorials: 12 classes and objects Python implementation - Python using the logging module to output the program running logs
The network's most suitable for the introduction of object-oriented programming tutorials: 13 classes and objects of the Python implementation - visual reading code artifacts Sourcetrail's installation use
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 14 Python Implementations of Classes and Objects - Static Methods and Class Methods for Classes
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 15 Python Implementations of Classes and Objects - __slots__ Magic Methods
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 16 Python Implementations of Classes and Objects - Polymorphism, Method Overriding, and the Principle of Open-Close
The Best Object-Oriented Programming Tutorials for Getting Started on the Web: 17 Python Implementations of Classes and Objects - Duck Types and "file-like objects"
The network's most suitable for the beginning of object-oriented programming tutorials: 18 classes and objects Python implementation - multiple inheritance and PyQtGraph serial data plotting graphs
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 19 Python Implementations of Classes and Objects - Using PyCharm to Automatically Generate File Annotations and Function Annotations
The best object-oriented programming tutorials on the net for getting started: 20 Python implementation of classes and objects - Combinatorial relationship implementation with CSV file saving
The best introductory object-oriented programming tutorials on the net: 21 Python implementation of classes and objects - Organization of multiple files: modulemodule and packagepackage
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 22 Python Implementations of Classes and Objects - Exceptions and Syntax Errors
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 23 Python Implementation of Classes and Objects - Throwing Exceptions
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 24 Python Implementations of Classes and Objects - Exception Catching and Handling
The best object-oriented programming tutorials on the web for getting started: 25 Python implementation of classes and objects - Python to determine the type of input data
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 26 Python Implementations of Classes and Objects - Context Managers and with Statements
The best introductory object-oriented programming tutorials on the web: 27 Python implementation of classes and objects - Exception hierarchy and custom exception class implementation in Python
The best object-oriented programming tutorials on the net for getting started: 28 Python implementations of classes and objects - Python programming principles, philosophies and norms in a big summary
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 29 Python Implementations of Classes and Objects - Assertions and Defensive Programming and Use of the help Function
The Best Object-Oriented Programming Tutorials for Getting Started on the Web: 30 Python's Built-In Data Types - the root class of object
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 31 Python's Built-In Data Types - Object Object and Type Type
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 32 Python's Built-in Data Types - Class Class and Instance Instance
The Best Object-Oriented Programming Tutorials for Getting Started on the Web: 33 Python's Built-In Data Types - The Relationship Between the Object Object and the Type Type
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 34 Python's Built-In Data Types - Python's Common Compound Data Types: Tuples and Named Tuples
The Best Object-Oriented Programming Tutorials on the Net for Getting Started: 35 Python's Built-In Data Types - Document Strings and the __doc__ Attribute
The Best Object-Oriented Programming Tutorials on the Web for Getting Started: 36 Python's Built-In Data Types - Dictionaries
More highlights to watch:
Accelerating Your Python: A Quick Guide to Python Parallel Computing
Understanding CM3 MCU Debugging Principles in One Article
Liver half a month, embedded technology stack summary out of the big
The "Secrets of the Martial Arts" of the Computer Competition
A MicroPython open source project collection: awesome-micropython, including all aspects of Micropython tool library
Avnet ZUBoard 1CG Development Board - A New Choice for Deep Learning
text
1. Introduction of hardware equipment
First, let's take a quick look at the hardware devices we'll be using.
The vision processing module we use is the Grove Vision AI V2 image processing module with the following features:
The Grove Vision AI module processes the images and performs model inference locally, and then sends the results via IIC or UART to the XIAO, which needs to receive and parse the data from the Grove Vision AI, and based on the results performs the appropriate actions, such as controlling the LEDs, driving the motors, or triggering other peripherals. This makes the XIAO the execution unit of the system, responding to the detection results delivered by the Grove Vision AI.
Deployment models
2.1 Introduction to the SenseCraft platform
Seeed SenseCraft Model Assistant (or SSCMA for short) is an open source project focused on embedded AI. Optimized for real-world scenarios, OpenMMLab's excellent algorithms make the implementation more humane and achieve faster and more accurate reasoning on embedded devices.
Algorithms in the following directions are currently supported:
SenseCraft AI provides a seamless and user-friendly experience that helps users easily deploy a large number of publicly available AI models to their edge devices.
2.2 Deployment process
Use the USB to link the module to your computer and then deploy it on the SenseCraft website:
2.3 Previewing the model recognition effect
2.4 SenseCraft Platform Benefits
- Lowering the Barrier to Entry to AI: SenseCraft's platform design simplifies the complexity of AI model development, making it easy for even beginners to get started.
- Wide range of hardware compatibilitySupports a wide range of Seeed hardware products, allowing users to choose the right device for their project.
- edge computing: Local reasoning capability reduces dependence on the network and improves application real-time and security
2.5 Rock-Paper-Scissors Classification Model Testing
coding
#include <Seeed_Arduino_SSCMA.h>
SSCMA AI;
void setup()
{
();
(9600);
}
void loop()
{
if (!())
{
("invoke success");
("perf: prepocess=");
(().prepocess);
(", inference=");
(().inference);
(", postpocess=");
(().postprocess);
for (int i = 0; i < ().size(); i++)
{
("Box[");
(i);
("] target=");
(()[i].target);
(", score=");
(()[i].score);
(", x=");
(()[i].x);
(", y=");
(()[i].y);
(", w=");
(()[i].w);
(", h=");
(()[i].h);
}
for (int i = 0; i < ().size(); i++)
{
("Class[");
(i);
("] target=");
(()[i].target);
(", score=");
(()[i].score);
}
for (int i = 0; i < ().size(); i++)
{
("Point[");
(i);
("] target=");
(()[i].target);
(", score=");
(()[i].score);
(", x=");
(()[i].x);
(", y=");
(()[i].y);
}
}
}
Next we briefly analyze the code:
-
Import library functions first <Seeed_Arduino_SSCMA.h>
- The main purpose of the SSCAM library is to process data streams for Grove Vision AI without involving model inference or image processing.
-
Initialization section:
-
SSCMA AI;
: Create a file namedAI
of SSCMA objects for communicating with the Grove Vision AI. -
void setup()
: insetup()
function, first use the()
Initialize the Grove Vision AI module. Then, initialize the Grove Vision AI module with the(9600)
Initializes serial communications for outputting results to the serial monitor.
-
-
primary cycle:
-
void loop()
:loop()
The function is executed iteratively and is mainly used to keep calling Grove Vision AI for inference and outputting results. -
if (!())
: Call()
Reasoning is performed, and if the reasoning is successful (i.e., theinvoke()
come (or go) backfalse
), then processing of the inference results begins. -
Performance Information Output:
-
()
: Obtain information on the performance of the inference process, including preprocessing (prepocess
), reasoning (inference
) and reprocessing (postprocess
) Time.
-
-
Detection frame output:
-
()
: Get all the detected frames in the inference result and loop through the output of information about each detected frame, including target, score, position (x, y) and size (w, h).
-
-
Classification Result Output:
-
()
: Get all the categorized information in the inference result and loop through the output for each categorization, including the goal and score.
-
-
Key point output:
-
()
: Get information about all the keypoints in the inference result and loop through the output for each keypoint, including the target, score, and position (x, y).
-
-
2.6 Parsing Serial Output Messages
invoke success
: This line indicates()
The method call is successful, i.e., the image recognition process is complete.
perf: prepocess=7, inference=80, postpocess=0
: This line shows three key performance indicators for the recognition process:
Box[0] target=1, score=81, x=209, y=161, w=63, h=114
: This line contains information about the first detected bounding box:
Web Link:
-
SenseCraft platform:/ai/#/model
-
Official Website:/cn/grove_vision_ai_v2/