curl --request GET \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/classify/anomaly-gmm/{blockId}/{sampleId} \
--header 'x-api-key: <api-key>'{
"success": true,
"classifications": [
{
"learnBlock": {
"id": 2,
"type": "anomaly",
"name": "NN Classifier",
"dsp": [
27
],
"title": "Classification (Keras)",
"createdBy": "createImpulse",
"createdAt": "2023-11-07T05:31:56Z"
},
"result": [
{
"idle": 0.0002,
"wave": 0.9998,
"anomaly": -0.42
}
],
"minimumConfidenceRating": 123,
"expectedLabels": [
{
"startIndex": 123,
"endIndex": 123,
"label": "<string>"
}
],
"thresholds": [
{
"key": "min_score",
"description": "Score threshold",
"helpText": "Threshold score for bounding boxes. If the score for a bounding box is below this the box will be discarded.",
"value": 0.5,
"suggestedValue": 123,
"suggestedValueText": "<string>"
}
],
"anomalyResult": [
{
"boxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"scores": [
[
123
]
],
"meanScore": 123,
"maxScore": 123
}
],
"structuredResult": [
{
"boxes": [
[
123
]
],
"scores": [
123
],
"mAP": 123,
"f1": 123,
"precision": 123,
"recall": 123,
"labels": [
"<string>"
],
"debugInfoJson": "{\n \"y_trues\": [\n {\"x\": 0.854, \"y\": 0.453125, \"label\": 1},\n {\"x\": 0.197, \"y\": 0.53125, \"label\": 2}\n ],\n \"y_preds\": [\n {\"x\": 0.916, \"y\": 0.875, \"label\": 1},\n {\"x\": 0.25, \"y\": 0.541, \"label\": 2}\n ],\n \"assignments\": [\n {\"yp\": 1, \"yt\": 1, \"label\": 2, \"distance\": 0.053}\n ],\n \"normalised_min_distance\": 0.2,\n \"all_pairwise_distances\": [\n [0, 0, 0.426],\n [1, 1, 0.053]\n ],\n \"unassigned_y_true_idxs\": [0],\n \"unassigned_y_pred_idxs\": [0]\n}\n"
}
],
"details": [
{
"boxes": [
[
123
]
],
"labels": [
123
],
"scores": [
123
],
"mAP": 123,
"f1": 123
}
],
"objectDetectionLastLayer": "mobilenet-ssd"
}
],
"sample": {
"sample": {
"id": 2,
"filename": "idle01.d8Ae",
"signatureValidate": true,
"created": "2023-11-07T05:31:56Z",
"lastModified": "2023-11-07T05:31:56Z",
"category": "training",
"coldstorageFilename": "<string>",
"label": "healthy-machine",
"intervalMs": 16,
"frequency": 62.5,
"originalIntervalMs": 16,
"originalFrequency": 62.5,
"deviceType": "<string>",
"sensors": [
{
"name": "accX",
"units": "<string>"
}
],
"valuesCount": 123,
"added": "2023-11-07T05:31:56Z",
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123
}
],
"boundingBoxesType": "object_detection",
"chartType": "chart",
"isDisabled": true,
"isProcessing": true,
"processingError": true,
"isCropped": true,
"projectId": 123,
"sha256Hash": "<string>",
"signatureMethod": "HS256",
"signatureKey": "<string>",
"deviceName": "<string>",
"totalLengthMs": 123,
"thumbnailVideo": "<string>",
"thumbnailVideoFull": "<string>",
"processingJobId": 123,
"processingErrorString": "<string>",
"metadata": {},
"projectOwnerName": "<string>",
"projectName": "<string>",
"projectLabelingMethod": "single_label",
"structuredLabels": [
{
"startIndex": 123,
"endIndex": 123,
"label": "<string>"
}
],
"structuredLabelsList": [
"<string>"
],
"createdBySyntheticDataJobId": 123,
"imageDimensions": {
"width": 123,
"height": 123
},
"videoUrl": "<string>",
"videoUrlFull": "<string>"
},
"payload": {
"device_type": "DISCO-L475VG-IOT01A",
"sensors": [
{
"name": "accX",
"units": "<string>"
}
],
"values": [
[
123
]
],
"device_name": "ac:87:a3:0a:2d:1b",
"cropStart": 0,
"cropEnd": 128
},
"totalPayloadLength": 123
},
"windowSizeMs": 2996,
"windowIncreaseMs": 10,
"alreadyInDatabase": true,
"error": "<string>",
"warning": "<string>"
}This API is deprecated, use classifySampleByLearnBlockV2 (/v1/api/{projectId}/classify/anomaly-gmm/v2/{blockId}/{sampleId}) instead. Classify a complete file against the specified learn block. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and classify for every window that is extracted.
curl --request GET \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/classify/anomaly-gmm/{blockId}/{sampleId} \
--header 'x-api-key: <api-key>'{
"success": true,
"classifications": [
{
"learnBlock": {
"id": 2,
"type": "anomaly",
"name": "NN Classifier",
"dsp": [
27
],
"title": "Classification (Keras)",
"createdBy": "createImpulse",
"createdAt": "2023-11-07T05:31:56Z"
},
"result": [
{
"idle": 0.0002,
"wave": 0.9998,
"anomaly": -0.42
}
],
"minimumConfidenceRating": 123,
"expectedLabels": [
{
"startIndex": 123,
"endIndex": 123,
"label": "<string>"
}
],
"thresholds": [
{
"key": "min_score",
"description": "Score threshold",
"helpText": "Threshold score for bounding boxes. If the score for a bounding box is below this the box will be discarded.",
"value": 0.5,
"suggestedValue": 123,
"suggestedValueText": "<string>"
}
],
"anomalyResult": [
{
"boxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"scores": [
[
123
]
],
"meanScore": 123,
"maxScore": 123
}
],
"structuredResult": [
{
"boxes": [
[
123
]
],
"scores": [
123
],
"mAP": 123,
"f1": 123,
"precision": 123,
"recall": 123,
"labels": [
"<string>"
],
"debugInfoJson": "{\n \"y_trues\": [\n {\"x\": 0.854, \"y\": 0.453125, \"label\": 1},\n {\"x\": 0.197, \"y\": 0.53125, \"label\": 2}\n ],\n \"y_preds\": [\n {\"x\": 0.916, \"y\": 0.875, \"label\": 1},\n {\"x\": 0.25, \"y\": 0.541, \"label\": 2}\n ],\n \"assignments\": [\n {\"yp\": 1, \"yt\": 1, \"label\": 2, \"distance\": 0.053}\n ],\n \"normalised_min_distance\": 0.2,\n \"all_pairwise_distances\": [\n [0, 0, 0.426],\n [1, 1, 0.053]\n ],\n \"unassigned_y_true_idxs\": [0],\n \"unassigned_y_pred_idxs\": [0]\n}\n"
}
],
"details": [
{
"boxes": [
[
123
]
],
"labels": [
123
],
"scores": [
123
],
"mAP": 123,
"f1": 123
}
],
"objectDetectionLastLayer": "mobilenet-ssd"
}
],
"sample": {
"sample": {
"id": 2,
"filename": "idle01.d8Ae",
"signatureValidate": true,
"created": "2023-11-07T05:31:56Z",
"lastModified": "2023-11-07T05:31:56Z",
"category": "training",
"coldstorageFilename": "<string>",
"label": "healthy-machine",
"intervalMs": 16,
"frequency": 62.5,
"originalIntervalMs": 16,
"originalFrequency": 62.5,
"deviceType": "<string>",
"sensors": [
{
"name": "accX",
"units": "<string>"
}
],
"valuesCount": 123,
"added": "2023-11-07T05:31:56Z",
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123
}
],
"boundingBoxesType": "object_detection",
"chartType": "chart",
"isDisabled": true,
"isProcessing": true,
"processingError": true,
"isCropped": true,
"projectId": 123,
"sha256Hash": "<string>",
"signatureMethod": "HS256",
"signatureKey": "<string>",
"deviceName": "<string>",
"totalLengthMs": 123,
"thumbnailVideo": "<string>",
"thumbnailVideoFull": "<string>",
"processingJobId": 123,
"processingErrorString": "<string>",
"metadata": {},
"projectOwnerName": "<string>",
"projectName": "<string>",
"projectLabelingMethod": "single_label",
"structuredLabels": [
{
"startIndex": 123,
"endIndex": 123,
"label": "<string>"
}
],
"structuredLabelsList": [
"<string>"
],
"createdBySyntheticDataJobId": 123,
"imageDimensions": {
"width": 123,
"height": 123
},
"videoUrl": "<string>",
"videoUrlFull": "<string>"
},
"payload": {
"device_type": "DISCO-L475VG-IOT01A",
"sensors": [
{
"name": "accX",
"units": "<string>"
}
],
"values": [
[
123
]
],
"device_name": "ac:87:a3:0a:2d:1b",
"cropStart": 0,
"cropEnd": 128
},
"totalPayloadLength": 123
},
"windowSizeMs": 2996,
"windowIncreaseMs": 10,
"alreadyInDatabase": true,
"error": "<string>",
"warning": "<string>"
}Project ID
Sample ID
Block ID
OK
Whether the operation succeeded
Show child attributes
Show child attributes
Identifier for this block. Make sure to up this number when creating a new block via getNewBlockId, and don't re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and greather than zero (>0).
x >= 1The type of learning block (anomaly, keras, keras-transfer-image, keras-transfer-kws, keras-object-detection, keras-regression). Each behaves differently.
anomaly, anomaly-gmm, keras, keras-transfer-image, keras-transfer-kws, keras-object-detection, keras-regression, keras-akida, keras-akida-transfer-image, keras-akida-object-detection, keras-visual-anomaly Block name, will be used in menus. If a block has a baseBlockId, this field is ignored and the base block's name is used instead.
"NN Classifier"
DSP dependencies, identified by DSP block ID
Block title, used in the impulse UI
"Classification (Keras)"
The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
"createImpulse"
The datetime that the block version was created. Cannot be set via API.
DEPRECATED, see "thresholds" instead. The minimum confidence rating for this block. For regression, this is the absolute error (which can be larger than 1).
An array with an expected label per window.
Show child attributes
Start index of the label (e.g. 0)
End index of the label (e.g. 3). This value is inclusive, so { startIndex: 0, endIndex: 3 } covers 0, 1, 2, 3.
The label for this section.
List of configurable thresholds for this block.
Show child attributes
Identifier to reference the threshold. You'll need to refer to the threshold by this key when you set the threshold).
"min_score"
User-friendly description of the threshold.
"Score threshold"
Additional help text (shown in the UI under a "?" icon)
"Threshold score for bounding boxes. If the score for a bounding box is below this the box will be discarded."
Current value of the threshold
0.5
If the threshold has a suggested value, e.g. a max. absolute error for regression projects; or the min. anomaly score for visual anomaly detection, then this is the numeric value of that threshold.
If the threshold has a suggested value, e.g. a max. absolute error for regression projects; or the min. anomaly score for visual anomaly detection, then this is the stringified value of that threshold.
Anomaly scores and computed metrics for visual anomaly detection, one item per window.
Show child attributes
For visual anomaly detection. An array of bounding box objects, (x, y, width, height, score, label), one per detection in the image. Filtered by the minimum confidence rating of the learn block.
Show child attributes
2D array of shape (n, n) with raw anomaly scores for visual anomaly detection, where n can be calculated as ((1/8 of image input size)/2 - 1). The scores corresponds to each grid cell in the image's spatial matrix.
Mean value of the scores.
Maximum value of the scores.
Results of inferencing that returns structured data, such as object detection
Show child attributes
For object detection. An array of bounding box arrays, (x, y, width, height), one per detection in the image.
For object detection. An array of probability scores, one per detection in the image.
For object detection. A score that indicates accuracy compared to the ground truth, if available.
For FOMO. A score that combines the precision and recall of a classifier into a single metric, if available.
A measure of how many of the positive predictions made are correct (true positives).
A measure of how many of the positive cases the classifier correctly predicted, over all the positive cases.
For object detection. An array of labels, one per detection in the image.
Debug info in JSON format
"{\n \"y_trues\": [\n {\"x\": 0.854, \"y\": 0.453125, \"label\": 1},\n {\"x\": 0.197, \"y\": 0.53125, \"label\": 2}\n ],\n \"y_preds\": [\n {\"x\": 0.916, \"y\": 0.875, \"label\": 1},\n {\"x\": 0.25, \"y\": 0.541, \"label\": 2}\n ],\n \"assignments\": [\n {\"yp\": 1, \"yt\": 1, \"label\": 2, \"distance\": 0.053}\n ],\n \"normalised_min_distance\": 0.2,\n \"all_pairwise_distances\": [\n [0, 0, 0.426],\n [1, 1, 0.053]\n ],\n \"unassigned_y_true_idxs\": [0],\n \"unassigned_y_pred_idxs\": [0]\n}\n"
Structured outputs and computed metrics for some model types (e.g. object detection), one item per window.
Show child attributes
Bounding boxes predicted by localization model
Labels predicted by localization model
Scores predicted by localization model
For object detection, the COCO mAP computed for the predictions on this image
For FOMO, the F1 score computed for the predictions on this image
mobilenet-ssd, fomo, yolov2-akida, yolov5, yolov5v5-drpai, yolox, yolov7, yolo-pro, tao-retinanet, tao-ssd, tao-yolov3, tao-yolov4, yolov11, yolov11-abs Show child attributes
Show child attributes
2
"idle01.d8Ae"
Whether signature validation passed
true
Timestamp when the sample was created on device, or if no accurate time was known on device, the time that the file was processed by the ingestion service.
Timestamp when the sample was last modified.
training, testing, post-processing "training"
"healthy-machine"
Interval between two windows (1000 / frequency). If the data was resampled, then this lists the resampled interval.
16
Frequency of the sample. If the data was resampled, then this lists the resampled frequency.
62.5
Interval between two windows (1000 / frequency) in the source data (before resampling).
16
Frequency of the sample in the source data (before resampling).
62.5
Show child attributes
Name of the axis
"accX"
Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
Number of readings in this file
Timestamp when the sample was added to the current acquisition bucket.
object_detection, constrained_object_detection chart, image, video, table True if the current sample is excluded from use
True if the current sample is still processing (e.g. for video)
Set when processing this sample failed
Whether the sample is cropped from another sample (and has crop start / end info)
Unique identifier of the project this sample belongs to
Data sample SHA 256 hash (including CBOR envelope if applicable)
"HS256"
Either the shared key or the public key that was used to validate the sample
Total length (in ms.) of this file
Set when sample is processing and a job has picked up the request
Error (only set when processing this sample failed)
Name of the owner of the project this sample belongs to
Name of the project this sample belongs to
What labeling flow the project this sample belongs to uses
single_label, object_detection Show child attributes
Start index of the label (e.g. 0)
End index of the label (e.g. 3). This value is inclusive, so { startIndex: 0, endIndex: 3 } covers 0, 1, 2, 3.
The label for this section.
If this sample was created by a synthetic data job, it's referenced here.
Video link, cropped and in original resolution.
Video link in original resolution.
Sensor readings and metadata
Show child attributes
Device type, for example the exact model of the device. Should be the same for all similar devices.
"DISCO-L475VG-IOT01A"
Array with sensor axes
Show child attributes
Name of the axis
"accX"
Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
Array of sensor values. One array item per interval, and as many items in this array as there are sensor axes. This type is returned if there are multiple axes.
Unique identifier for this device. Only set this when the device has a globally unique identifier (e.g. MAC address).
"ac:87:a3:0a:2d:1b"
New start index of the cropped sample
0
New end index of the cropped sample
128
Total number of payload values
Size of the sliding window (as set by the impulse) in milliseconds.
2996
Number of milliseconds that the sliding window increased with (as set by the impulse)
10
Whether this sample is already in the training database
Optional error description (set if 'success' was false)
Was this page helpful?