<< return to Pixycam.com

User Tools

Site Tools


wiki:v3:pixy_isn-27t_detecting_the_objects_i_taught_it

Pixy isn't detecting the objects I taught it

Generating color signatures requires some finesse in some situations.

Pixy2's color filtering algorithm can process an entire frame in 16.7 ms (60 times a second). But discrimination can sometimes be a problem – false positives and false negatives. False positives are when Pixy2 thinks an object matches a particular signature, but it's not the object you want to detect. It's often an object with a similar hue. For example, Pixy2 thinks your light green shirt matches a green ball. False negatives are when Pixy2 fails to detect an object that you intended to detect with a particular signature.

Let's go through adjustments you can make to improve Pixy2's detection accuracy.

Signature tuning

Signature range tuning is probably the most effective method to improve detection accuracy. Bring up the Configure dialog (click on the gear icon or select File➜Configure). Now select the Tuning tab under Pixy Parameters (it should be the first pane you see when you bring up the Configuration Dialog).

Tuning

Use the slider for Signature 1 range to adjust the inclusiveness of signature 1 (assuming it's signature 1 you're wanting to adjust). Slide it to the left if you want to be less inclusive (i.e. you're seeing false positives, like the picture below):

or slide it to the right if you want to be more inclusive (i.e. you're seeing false negatives) or the detection is intermittent or sparse (like in the picture below):

Choose a slider value that provides good strong detection like the picture below:

You can adjust all seven color signatures this way to maximize detection accuracy. Be sure to press Apply or OK to save the slider ranges! The adjusted values won't be saved if you press Cancel or dismiss the dialog.

Adjust minimum frames per second

Adjusting the Min frames per second slider in the Camera tab to smaller values can improve the image quality by reducing the noise and/or improving the exposure in low-light environments. The disadvantage of reducing the frames per second is that it reduces Pixy2's update rate.

The two pictures below show a low-light scene and the reduction in noise by reducing the frames per second. (The left frame is higher fps, more noise.)

Higher fps, more noise Lower fps, less noise

Increase block filtering

Pixy2 uses filtering to determine if a given block is likely to be valid or just a false positive detection. Increasing the Block filtering in the Expert tab can reduce the number of false positive detections. The cost of increasing the block filtering is longer latency when detecting new objects. That is, it will take Pixy2 longer to report detection of a new object and add it to the list of tracked objects. Once an object is added to Pixy2's list of tracked objects, the position of each object is not filtered so that the dynamics of the object's reported position/motion isn't affected.

Enabling overexposure highlighting and adjusting camera brightness/exposure

Like a camera, Pixy2 needs to get the correct exposure setting or its images won't contain enough dynamic range, and detection accuracy will suffer. PixyMon has a feature that highlights regions of the image that are overexposed. You can enable it by clicking on the box next to Highlight overexposure in the PixyMon Parameters tab (see below).

When this is enabled, overexposed parts of the image will be highlighted as black, as shown below:

We highly recommend enabling overexposure highlighting, because if the object you want to detect is overexposed, detection accuracy will suffer. So, after enabling overexposure highlighting, go to the Tuning tab in Pixy Parameters and choose a good setting for Camera Brightness by adjusting the slider (see below).

A good exposure setting leaves almost all of the pixels in your object correctly exposed, but not too dark (underexposed). It's OK for small parts of your object to be overexposed, especially if your object is shiny. See the picture below – note that a small part of the object (red ball) has a black region indicating overexposure. This is fine.

Adjust minimum brightness

The Min brightness slider in the Tuning tab sets a minimum brightness setting for all signatures. That is, if a pixel is below the minimum brightness setting it won't be considered as part of any color signature. So if you are seeing false positives that are sufficiently dark, you can adjust the Min brightness setting higher to reduce the false positives. If you are not able to detect objects that are sufficiently dark, you can adjust the Min brightness setting lower to reduce the false negatives.

Use the mouse to teach Pixy2 your object

There are two ways to teach Pixy2 an object: the button-press method and the mouse-select method. They are both described here. The mouse-select method makes sure that no unintended pixels make it into the teaching set when making a color signature.

Adjust the signature teach threshold

One of Pixy2's goals is to be able to easily learn different objects without needing to hook it up to a computer. The button-press teaching method allows you to do this. But for certain objects and/or lighting conditions, the button-press method might need some adjusting. The Signature teach threshold setting in the Expert tab allows you to adjust how inclusive Pixy2 is when determining which pixels are part of the object during teaching. You can adjust the Signature teach threshold while Pixy2 is in teach mode, so you can get “live” feedback while choosing a good threshold.

The picture below is an example of a threshold that is too inclusive. Note the regions that are not part of the green duck (the intended object). In this case, you should reduce the threshold.

The picture below is an example of a threshold that is not inclusive enough. Note that the regions do not include much of thegreen duck. In this case, you should increase the threshold.

The picture below is an example of a good threshold.

2018/04/09 21:52 · jfrench
wiki/v3/pixy_isn-27t_detecting_the_objects_i_taught_it.txt · Last modified: 2018/09/19 21:05 by jfrench