JeVois Tutorials
1.22
JeVois Smart Embedded Machine Vision Tutorials
|
|
The ObjectDetect module allows JeVois to detect objects that it has seen before.
With JeVois v1.2 and later you can train this algorithm live.
In this tutorial, you will learn how to train the algorithm live to recognize new objects.
The module finds objects by matching keypoint descriptors between the current image and a set of training images. Here we use SURF keypoints and descriptors as provided by OpenCV.
The algorithm consists of 4 phases:
Because this alogrithm performs matching between the current image captured by JeVois and a collection of reference images, only one training examplar is needed for each new object.
The ObjectDetect module provides commands and parameters to assist you in collecting a good training image for each new object that you want to be able to detect:
showwin
- shows a rectangular window that will be used to collect training samples. Training images will be collected for objects that should fit inside this window and occupy as much of it as possible.win
- defines the size and shape of the window. You should size the window so that the training view of a new object fills that window when the object of interest is placed at a distance from JeVois that is expected to be the typical distance at which one would like to later recognize that object. The algorithm does provide some degree of scale invariance, but training with the object at the typical distance at which you would later want to detect it will help making detections even more reliable.First, enable display of a training window using:
setpar showwin true
You should now see a grey rectangle. You can adjust the window size and aspect ratio using the win
parameter. By default, the algorithm will train new objects that occupy half width and height of the camera image.
Point your JeVois camera to a clean view of an object you want to learn (if possible, with a blank, featureless background, as this algorithm does not attempt to segment objects and would otherwise also learn features of the backgrouns as part of the object). Make sure the objects fits inside the grey rectangle and fills as much of it as possible. You should adjust the distance between th eobject and the camera, and the grey rectangle, to roughly match the distance at which you want to detect that object in the future. Then issue the command:
save somename
over a serial connection to JeVois, where somename is the name you want to give to this object. This will grab the current camera image, crop it using the grey rectangle, and save the crop as a new training image somename.png for immediate use. The algorithm will immediately re-train on all objects, including the new one. You should see the object being detected shortly after you send your save command. Note that we save the image as grayscale since this algorithm does not use color anyway.
You can see the list of current images by using command:
list
Finally, you can delete an image using command:
del somename
where somename is the object name without extension, and a .png extension will be added. The image will immediately be deleted and that object will not be recognized anymore.
hessian
- higher means that less crisp keypoints (smoother appearance) will not be usedgoodpts
- a broader range will allow detection of an object under wider conditions but may slow down the algorithm and/or give rise to more false alarms.distthresh
- a higher value will enforce a stricter matching of descriptors between the training image and the current image, which may decrease false alarms but also increase misses.