classify
Description
predicts whether test image isAnomaly
= classify(detector
,I
)I
is anomalous or normal, given an anomaly
detector with an anomaly threshold.
Note
This functionality requires Deep Learning Toolbox™ and the Automated Visual Inspection Library for Computer Vision Toolbox™. You can install the Automated Visual Inspection Library for Computer Vision Toolbox from Add-On Explorer. For more information about installing add-ons, see Get and Manage Add-Ons.
specifies options using one or more name-value arguments. For example,
isAnomaly
= classify(detector
,I
,Name=Value
)classify(detector,I,MiniBatchSize=32)
limits the batch size to
32.
Examples
Load test images and corresponding labels, then create a datastore that reads the test data. The data set consists of grayscale images of handwritten digits 0–9.
[Xtest,gtLabels] = digitTest4DArrayData; dsTest = arrayDatastore(Xtest,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.
load("digit8AnomalyDetector.mat"); anomalyLabels = setdiff(string(0:9),"8");
Classify each test image as normal or anomalous.
predLabels = classify(detector,dsTest);
Calculate metrics for the anomaly detection results.
metrics = evaluateAnomalyDetection(predLabels,gtLabels,anomalyLabels)
Evaluating anomaly detection results ------------------------------------ * Finalizing... Done. * Data set metrics: GlobalAccuracy MeanAccuracy Precision Recall Specificity F1Score FalsePositiveRate FalseNegativeRate ______________ ____________ _________ ______ ___________ _______ _________________ _________________ 0.7662 0.839 0.98971 0.748 0.93 0.85204 0.07 0.252
metrics = anomalyDetectionMetrics with properties: ConfusionMatrix: [2×2 table] NormalizedConfusionMatrix: [2×2 table] DataSetMetrics: [1×8 table] ClassMetrics: [2×2 table]
Display the confusion matrix.
cm = metrics.ConfusionMatrix
cm=2×2 table
Normal Anomaly
______ _______
Normal 465 35
Anomaly 1134 3366
Input Arguments
Anomaly detector, specified as an efficientADAnomalyDetector
object, an fcddAnomalyDetector
object, a fastFlowAnomalyDetector
object, or a patchCoreAnomalyDetector
object. You must set the
Threshold
property of the detector before calling this
function.
Test image, specified in one of these formats:
Format | Supported Detectors |
---|---|
M-by-N-by-3 numeric array representing a truecolor image. | EfficientAD, FCDD, FastFlow, PatchCore |
M-by-N-by-3-by-B numeric array representing a batch of B truecolor images. | EfficientAD, FCDD, FastFlow, PatchCore |
Datastore that reads and returns truecolor images. The images must all have the same size. | EfficientAD, FCDD, FastFlow, PatchCore |
Formatted | EfficientAD, 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: isAnomaly = classify(detector,I,MiniBatchSize=32)
limits the
batch size to 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 efficientADAnomalyDetector
object, 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 Argument | Default ScoreFunction Value |
---|---|
FastFlow |
|
EfficientAD |
|
FCDD |
|
PatchCore | 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
Test image is anomaly, returned as an N-element logical vector,
where N is the number of test images in I
. The
value true
indicates an anomaly (positive detection). The value
false
indicates normality (negative detection).
Data Types: logical
Extended Capabilities
Usage notes and limitations:
FCDD, FastFlow, PatchCore | EfficientAD |
---|---|
|
|
Usage notes and limitations:
FCDD, FastFlow, PatchCore | EfficientAD |
---|---|
|
|
Version History
Introduced in R2022bYou can now specify the detector
argument as an efficientADAnomalyDetector
object.
Specify a custom anomaly score function, which the classify
function
uses to compute a scalar score from the anomaly map, by using the ScoreFunction
name-value argument.
You can now specify the detector
argument as a fastFlowAnomalyDetector
object or a patchCoreAnomalyDetector
object.
classify
now supports the
generation of C code (requires MATLAB®
Coder™) and optimized CUDA code (requires GPU Coder™).
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)