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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)