Surface Detection

Surface Detection can be trained to detect a specific surface or known surface defects, it is suitable especially for detecting scratches, cracks, and defects on a highly variable background.

This module serves to detect a specific surface and it can also classify the types of surface, which are to be detected, into different classes like the Classifier.

 

Training Overview

 

Annotations

Surfaces can be marked in two ways - by brush painting in the image or by making polygons, those ways can also be combined. Each surface class has one color assigned. For quick color switching, you can press a numeric key indicating the number of the class that is given in square brackets.

Brush painting

Basic painting into the image by a brush of selected size. To change the brush size or switch between paint- and erase- mode, you can either use the sliders at the top, or you can use shortcuts, which can be found in the Help section under the ‘?’ symbol.

Polygons

When you choose the polygon mode, you left-click into the image to define vertices of the polygon, which are being connected with a line in the order you put them in. You can move existing vertices by clicking and dragging them, or use double-click to delete them. When you're satisfied with the shape, use right-click which joins the last vertex with the first one and fills the polygon with chosen color. Polygons work in the erase-mode as well.

Include

It is used to include the selected image for training if it does not contain any defects. The picture does not fall into one of the classes which were created, its whole surface is marked as defect-free.

It can be used when a defect-free/OK image has some noise or it’s slightly scratched for instance, or it has some very variable background and we get false defects detected on it. It can help achieve higher accuracy.

Ignore

Surfaces marked with ‘Ignore’ class are excluded from the training. Whereas, parts of the image which are left unannotated, are part of the training, but are considered an ‘OK’ class, which is not displayed when detected. Can be used e.g. in case we are unsure whether specific part of an image is OK or NG or if there’s some distortion and we don’t want to put that part into training. Precise type of surface detector doesn't use Ignore class.

Settings

Types of Surface Detection

Two types of surface detector are available, each based on a different kind of neural network.

 

Fast:

  • Detects a wide range of defects, however can suffer from a higher amount of false positives (good parts evaluated as bad by the software), adjusting the Confidence threshold after training can help reduce this.

  • Faster inference and training

  • Multiple options for view-finder size

  • The model can optionally be optimized using Tensor RT for the specific GPU used when you check the TRT switch in model list. The optimisation improves inference times when processing images using this model.

The model is optimized for specific GPU, so if you transfer the project to a PC with different type of GPU, the optimisation needs to be done again for the new graphics card.

The TRT optimisation is available only for models with one class.

  • This type does not require large datasets, however, performance on highly variable patterns may be more suitable for the Precise option.

 

Precise:

  • This type produces very precise heatmaps and usually doesn’t have too much false positives. It's ideal for searching for objects/defects with closed shape. It also takes into account the surroundings, not just the surface itself.

  • Training time is usually longer.

  • View-finder size is not used in this type & ignore function is not included.

 

View-finder

Size of the view-finder determines how much the inspection will be focused. The size is selected depending on how detailed inspection model is desired. If you choose a size which is too small, you lose the knowledge of the surroundings and therefore can miss some defects; on the other hand, if chosen size is too large, details can be overlooked.

Just as when a human eye focuses on detecting errors. Some errors are seen from a larger distance, and others can only be seen through a magnifying glass.

Along with the size, the recognition speed also varies. There is no general rule on how to set the right size, you need to try out a number of sizes and learn how to estimate the best size at the first try. The size of the defects you are searching for might be of help.

The Precise type of surface detector doesn't use this parameter.

Detection

The detection result is a set of heatmaps (one for each class). When validating, heatmaps are plotted in the image for better illustration. In the heatmaps, the searched-for areas surrounded by rectangles are added to the context to ‘detectedRectangles’. Each rectangle has a class assigned, depending on which heatmap it was found in.