OpenMV
Shields
Lens
Robotics
Book
Video
Download
Docs
Forum
OpenMV.io
GithubArtificial intelligence has two very common tasks in the visual domain: classification and object detection.
Category:Determine which category the image belongs to, for example, whether it is a cat or a dog.
Object Detection:Used to locate the positions, quantities, and dimensions of multiple distinct objects within an image.
In the previous video tutorial, we explained how to use the OpenMV4 Plus to train neural networks online for classifying different objects. It can determine in real time whether an image within the OpenMV field of view contains a specific object—for example, whether a face is wearing a mask—but it cannot output the coordinates of faces or masks, nor the number of faces.
Because object detection is significantly more complex and computationally intensive than classification, it is rare in the microcontroller domain. The main control MCU of OpenMV is the STM32H7; now, we have added a new feature to OpenMV that enables object detection–like tasks to run on microcontrollers, delivering outstanding performance.

Today, we will explain to youTraining demonstrates traffic sign detection in real-road environments, detecting traffic signs on our actual roadssuch as no honking, no parking, and a speed limit of 80 km/h, rather than a laboratory interference-free environment.
You can view the entire project content, including all code and models, at the following address: https://book.openmv.cc/project/traffic-sign.html
It is widely known that real-world environments—especially road environments—are highly complex and contain numerous interfering factors. We captured images of traffic signs in real-world environments using devices such as smartphones, trained the model on EdgeImpulse—the online platform of our OpenMV partner—and manually labelled approximately 270 images. The training process took only ten minutes, yielding a model with an F1 score accuracy of 92%. When deployed on OpenMV, the model achieves a frame rate of 10 frames per second, delivering both smooth performance and high accuracy.
Users can train the system to detect any target of interest—such as various digits, different fruits, distinct landmarks, diverse components, or even any specific irregular object—by following our video tutorials, thereby enabling detection of the target’s count, coordinates, and object class name.
Note:This video tutorial covers the neural network keypoint detection feature, which is compatible with both the OpenMV4 H7 Plus and the OpenMV4 H7. Since the trained FOMO keypoint detection model is compact—only several tens of kilobytes—and delivers excellent performance, it can run efficiently on the OpenMV4 H7 despite its smaller RAM capacity compared to the Plus version; we can therefore train a slightly smaller model for deployment on the OpenMV4.
Below is a brief introduction to the principle:
The primary design decision behind FOMO object detection on OpenMV is based on the idea that many object detection tasks do not actually require the size of objects but only their positions within an image. Once we know the positions of objects, subsequent operations can be performed—such as using OpenMV to control a robot car to move toward a detected target, enabling a drone to land at a designated location, or controlling a robotic arm to grasp a specific target object.
The FOMO model is a model specially designed by EdgeImpulse for microcontroller environments; unlike conventional object detection, it can only detect the positions and number of multiple objects but cannot determine their exact dimensions.
The underlying principle of the FOMO model is very simple and flexible. It first divides an image into patches, each measuring 8×8 pixels. For a 96×96-resolution image, this results in a 12×12 grid of cells; for a 360×360 image, it yields a 40×40 grid. Image classification is then performed independently on each cell.
FOMO performs significantly better than YOLO V5 or MobileNet SSD on a large number of small objects. FOMO object point detection is 30 times faster than MobileNet SSD.
FOMO performs better when the objects to be detected are of similar sizes—for instance, when the signage you aim to identify varies little in dimensions, rather than comprising both extremely large and extremely small objects.
OpenMV uses EdgeImpulse to train neural network object detection models online, which mainly involves the following steps: collecting and uploading image datasets, annotating objects, training, testing the model, and deployment.
* Collection of image datasets: Capture images of specific objects in the actual environments where they will be identified. Images are collected in the same environments where identification will occur, ensuring that the actual training environment closely matches the actual detection environment, thereby improving performance.
* Annotation Target: Draw bounding boxes around each object to be detected in our dataset and label them accurately with the corresponding object names to facilitate subsequent training, object localization, and object naming.
* Training the Model: After annotation is completed, train the model using the convolutional neural network parameters designed by us.
* Test Model: We evaluate the trained model; if performance is unsatisfactory, we accordingly expand the training dataset or adjust training parameters and continue training until we obtain a satisfactory model.
*Deployment: We simply place the trained model file onto the built-in USB drive of the OpenMV and run it.
Below is a demonstration of the specific process:
01. Collect and upload the image dataset
1. First, log in to the website edgeimpulse.com, select “Log In”, enter the name of the new project, and select “Images” → “Classify multiple objects”

II. Select an image to upload. There are several ways to obtain the image dataset:
1. Capture images in real time using the OpenMV IDE. Use the “Dataset Editor” tool in the OpenMV IDE to create a new dataset and capture images in real time; for details, refer to our previous video tutorial on object classification and mask detection.

2. Images downloaded from the internet or captured using a mobile phone—preferably matching your actual detection environment. We have prepared four to five hundred images of traffic signs, including “No Parking,” “No Honking,” and “Speed Limit 80 km/h,” all collected from real road conditions. This dataset is available for download on our GitHub repository and tutorial website.
02. Annotation Objective
Upload approximately 100 images for each category; after uploading the images, proceed to annotate them by marking both the location and category of the objects to be identified.


03. Train the Model
Configure the training parameters, change the resolution to 128×128, and select all default parameter settings; then click Save.

Generate features, with three colours representing three distinct indicators.

Configure the target detection training parameters. The default number of training epochs is 60, the learning rate is 0.001, and the validation set proportion is 20%. Enable data augmentation. For transfer learning, select either the default MobileNetV2 0.35 or MobileNetV2 0.1. (Note: SSD cannot be used, as it is not supported on OpenMV.)
Select Start Training. Upon completion of training, the neural network model achieves an F1 Score of 91.2%, and we can save the current version.

Select Storage, enter your description, and then select Save.

04. Deploy the Model
Export the trained model file. Only the library needs to be exported; select OpenMV and click Build to begin deploying and exporting the model.

It will automatically download the exported model, which in this case is the model trained on our 300 images, thereby completing the entire training process.

05. Run the Model
Run the model on OpenMV:
Connect the OpenMV Plus, save the three trained files to the OpenMV’s built-in USB drive, and open the ei_object_detection.py file in the OpenMV IDE. Click Run, and the results will appear in the serial terminal.


This feature is also compatible with the OpenMV4. Since the OpenMV4 does not have external SDRAM and has less memory, we can reduce the model size to enable it to run on the OpenMV4.
There are two methods to reduce the model’s size:
1. Reduce the training resolution from 128×128 to 96×96.
II. Modify the transfer learning model used by changing MobileNetV2 0.35 to MobileNetV2 0.1.
Finally, load the trained new file into the OpenMV4 and run it.
The above is our target point detection tutorial. We look forward to your results!

AI Sentinel Based on OpenMV: Automatic Alert for Unattended Key Locations
Automatically detects whether the doors of key locations remain open for an extended period and issues timely alerts.

Personnel crossing boundary triggers alarm; OpenMV interprets “sense of security boundary”
Detects personnel or equipment crossing virtual perimeter lines.

“AI City Management” is Here: An Automated Obstruction Detection System Built on OpenMV
Automatically identifies illegal street vending activities to support daily urban governance.

Improper Storage of Gas Cylinders? Use OpenMV to Automatically Trigger Hazard Warnings
Automatically identifies non-compliant placement of gas cylinders to proactively detect gas-related safety hazards.

Did you perform live-line work without wearing insulating gloves? OpenMV will immediately alert you!
Automatically identifies whether personnel are wearing insulating gloves to assist in safe operations.

Utilise the OpenMV smart camera to detect surface defects on aluminium plates in real time
Online identification of defects such as scratches and dents on aluminium plate surfaces to support quality control.