Main Content


Predict unnormalized anomaly scores

Since R2022b



    scores = predict(detector,I) calculates the unnormalized anomaly scores predicted by an anomaly detector during inference for a set of test images, I. Use this function to get predictions from the output layers of the detector during inference.


    This functionality requires Deep Learning Toolbox™ and the Computer Vision Toolbox™ Automated Visual Inspection Library. You can install the Computer Vision Toolbox Automated Visual Inspection Library from Add-On Explorer. For more information about installing add-ons, see Get and Manage Add-Ons.

    scores = predict(detector,I,Name=Value) specifies options using one or more name-value arguments. For example, predict(detector,I,MiniBatchSize=32) limits the batch size to 32.


    collapse all

    Load calibration images and corresponding labels, then create a datastore that reads the calibration data. The data set consists of grayscale images of handwritten digits 0–9.

    [Xcal,gtLabels] = digitTest4DArrayData;
    dsCal = arrayDatastore(Xcal,IterationDimension=4);

    Load a pretrained FCDD anomaly detector. This detector has been trained to classify the digit 8 as normal and all other digits as anomalies. Therefore, specify the set of anomaly labels as the set of digits between 0 and 9, excluding 8.

    anomalyLabels = setdiff(string(0:9),"8");

    Predict the anomaly score of each calibration image.

    scores = predict(detector,dsCal);

    Calculate the optimal threshold and corresponding ROC metrics from the anomaly scores and ground truth labels.

    [T,roc] = anomalyThreshold(gtLabels,scores,anomalyLabels)
    T = single
    roc = 
      rocmetrics with properties:
        Metrics: [4976x4 table]
            AUC: 0.9114

    Set the Threshold property of the FCDD anomaly detector as the optimal threshold.

    net.Threshold = T;

    Input Arguments

    collapse all

    Anomaly detector, specified as an fcddAnomalyDetector object, a fastFlowAnomalyDetector object, or a patchCoreAnomalyDetector object.

    Test image, specified in one of these formats:

    FormatSupported Detectors

    M-by-N-by-3 numeric array representing a truecolor image.

    FCDD, FastFlow, PatchCore

    M-by-N-by-3-by-B numeric array representing a batch of B truecolor images.

    FCDD, FastFlow, PatchCore

    Datastore that reads and returns truecolor images. The images must all have the same size.

    FCDD, FastFlow, PatchCore

    Formatted dlarray (Deep Learning Toolbox) object with two spatial dimensions and one channel dimension. You can specify multiple test images by including a batch dimension.

    FCDD, FastFlow

    FCDD anomaly detectors also support grayscale test images, with one color channel instead of three.

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Example: MiniBatchSize=32

    Size of batches for calculating predictions, specified as a positive integer. Larger batch sizes lead to faster processing but take up more memory.

    Function for computing a scalar score from an anomaly map when detector is an fcddAnomalyDetector object or a fastFlowAnomalyDetector object, specified as a function handle. The function handle ScoreFunction must represent a function that accepts the input data I and returns an output in the form of a numeric scalar. I must be 2-D numeric image data, dlarray data with two spatial dimensions, or a datastore. The default value of ScoreFunction depends on the type of detector specified:

    Detector Specified in detector ArgumentDefault ScoreFunction Value

    @(I)max(I,[],[1 2])


    @(I)mean(I,[1 2])


    Not supported

    Hardware resource on which to run the detector, specified as "auto", "gpu", or "cpu". The table shows the valid hardware resource values.

    Resource Action
    "auto"Use a GPU if it is available. Otherwise, use the CPU.
    "gpu"Use the GPU. To use a GPU, you must have Parallel Computing Toolbox™ and a CUDA® enabled NVIDIA® GPU. If a suitable GPU is not available, the function returns an error. For information about the supported compute capabilities, see GPU Computing Requirements (Parallel Computing Toolbox).
    "cpu"Use the CPU.

    Output Arguments

    collapse all

    Predicted anomaly scores, returned as a numeric scalar, numeric vector, or formatted dlarray (Deep Learning Toolbox) object. scores contains one element for each image in I.

    Extended Capabilities

    Version History

    Introduced in R2022b

    expand all