curl --request GET \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata \
--header 'x-api-key: <api-key>'import requests
url = "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"created": "2023-11-07T05:31:56Z",
"layers": [
{
"input": {
"shape": 33,
"name": "x_input:0",
"type": "<dtype: 'float32'>"
},
"output": {
"shape": 20,
"name": "dense_1/Relu:0",
"type": "<dtype: 'float32'>"
}
}
],
"classNames": [
"<string>"
],
"labels": [
"<string>"
],
"availableModelTypes": [
"int8"
],
"recommendedModelType": "int8",
"modelValidationMetrics": [
{
"type": "int8",
"loss": 123,
"confusionMatrix": [
[
31,
1,
0
],
[
2,
27,
3
],
[
1,
0,
39
]
],
"report": {},
"onDevicePerformance": [
{
"mcu": "<string>",
"name": "<string>",
"isDefault": true,
"latency": 123,
"tflite": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"eon": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"hasPerformance": true,
"eon_ram_optimized": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"customMetrics": [
{
"name": "<string>",
"value": "<string>"
}
],
"profilingError": "<string>"
}
],
"visualization": "featureExplorer",
"isSupportedOnMcu": true,
"additionalMetrics": [
{
"name": "<string>",
"value": "<string>",
"fullPrecisionValue": 123,
"tooltipText": "<string>",
"link": "<string>"
}
],
"accuracy": 123,
"predictions": [
{
"sampleId": 123,
"startMs": 123,
"endMs": 123,
"prediction": "<string>",
"label": "<string>",
"predictionCorrect": true,
"expectedAnomalyOutcome": "<string>",
"f1Score": 123,
"anomalyScores": [
[
123
]
],
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"labelMapPredictions": {}
}
],
"mcuSupportError": "<string>",
"profilingJobId": 123,
"profilingJobFailed": true
}
],
"hasTrainedModel": true,
"mode": "classification",
"imageInputScaling": "0..1",
"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>",
"dropdownOptions": [
{
"description": "<string>",
"value": "<string>"
}
]
}
],
"error": "<string>",
"objectDetectionLastLayer": "mobilenet-ssd",
"tensorboardGraphs": [
{
"title": "<string>",
"data": [
{
"title": "<string>",
"values": [
123
]
}
],
"xLabel": "<string>",
"yLabel": "<string>",
"description": "<string>",
"hideInUI": true
}
],
"kFoldsMetadata": {
"folds": [
{
"created": "2023-11-07T05:31:56Z",
"layers": [
{
"input": {
"shape": 33,
"name": "x_input:0",
"type": "<dtype: 'float32'>"
},
"output": {
"shape": 20,
"name": "dense_1/Relu:0",
"type": "<dtype: 'float32'>"
}
}
],
"classNames": [
"<string>"
],
"labels": [
"<string>"
],
"availableModelTypes": [
"int8"
],
"recommendedModelType": "int8",
"modelValidationMetrics": [
{
"type": "int8",
"loss": 123,
"confusionMatrix": [
[
31,
1,
0
],
[
2,
27,
3
],
[
1,
0,
39
]
],
"report": {},
"onDevicePerformance": [
{
"mcu": "<string>",
"name": "<string>",
"isDefault": true,
"latency": 123,
"tflite": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"eon": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"hasPerformance": true,
"eon_ram_optimized": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"customMetrics": [
{
"name": "<string>",
"value": "<string>"
}
],
"profilingError": "<string>"
}
],
"visualization": "featureExplorer",
"isSupportedOnMcu": true,
"additionalMetrics": [
{
"name": "<string>",
"value": "<string>",
"fullPrecisionValue": 123,
"tooltipText": "<string>",
"link": "<string>"
}
],
"accuracy": 123,
"predictions": [
{
"sampleId": 123,
"startMs": 123,
"endMs": 123,
"prediction": "<string>",
"label": "<string>",
"predictionCorrect": true,
"expectedAnomalyOutcome": "<string>",
"f1Score": 123,
"anomalyScores": [
[
123
]
],
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"labelMapPredictions": {}
}
],
"mcuSupportError": "<string>",
"profilingJobId": 123,
"profilingJobFailed": true
}
],
"hasTrainedModel": true,
"mode": "classification",
"imageInputScaling": "0..1",
"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>",
"dropdownOptions": [
{
"description": "<string>",
"value": "<string>"
}
]
}
],
"foldId": 1,
"foldName": "<string>",
"objectDetectionLastLayer": "mobilenet-ssd",
"tensorboardGraphs": [
{
"title": "<string>",
"data": [
{
"title": "<string>",
"values": [
123
]
}
],
"xLabel": "<string>",
"yLabel": "<string>",
"description": "<string>",
"hideInUI": true
}
]
}
],
"persistedFoldId": 123,
"persistedFoldName": "<string>",
"hasFinalRun": true,
"persistedFoldMetricType": "int8"
}
}Keras metadata
Get metadata about a trained Keras block. Use the impulse blocks to find the learnId.
curl --request GET \
--url https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata \
--header 'x-api-key: <api-key>'import requests
url = "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://studio.edgeimpulse.com/v1/api/{projectId}/training/keras/{learnId}/metadata")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"created": "2023-11-07T05:31:56Z",
"layers": [
{
"input": {
"shape": 33,
"name": "x_input:0",
"type": "<dtype: 'float32'>"
},
"output": {
"shape": 20,
"name": "dense_1/Relu:0",
"type": "<dtype: 'float32'>"
}
}
],
"classNames": [
"<string>"
],
"labels": [
"<string>"
],
"availableModelTypes": [
"int8"
],
"recommendedModelType": "int8",
"modelValidationMetrics": [
{
"type": "int8",
"loss": 123,
"confusionMatrix": [
[
31,
1,
0
],
[
2,
27,
3
],
[
1,
0,
39
]
],
"report": {},
"onDevicePerformance": [
{
"mcu": "<string>",
"name": "<string>",
"isDefault": true,
"latency": 123,
"tflite": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"eon": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"hasPerformance": true,
"eon_ram_optimized": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"customMetrics": [
{
"name": "<string>",
"value": "<string>"
}
],
"profilingError": "<string>"
}
],
"visualization": "featureExplorer",
"isSupportedOnMcu": true,
"additionalMetrics": [
{
"name": "<string>",
"value": "<string>",
"fullPrecisionValue": 123,
"tooltipText": "<string>",
"link": "<string>"
}
],
"accuracy": 123,
"predictions": [
{
"sampleId": 123,
"startMs": 123,
"endMs": 123,
"prediction": "<string>",
"label": "<string>",
"predictionCorrect": true,
"expectedAnomalyOutcome": "<string>",
"f1Score": 123,
"anomalyScores": [
[
123
]
],
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"labelMapPredictions": {}
}
],
"mcuSupportError": "<string>",
"profilingJobId": 123,
"profilingJobFailed": true
}
],
"hasTrainedModel": true,
"mode": "classification",
"imageInputScaling": "0..1",
"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>",
"dropdownOptions": [
{
"description": "<string>",
"value": "<string>"
}
]
}
],
"error": "<string>",
"objectDetectionLastLayer": "mobilenet-ssd",
"tensorboardGraphs": [
{
"title": "<string>",
"data": [
{
"title": "<string>",
"values": [
123
]
}
],
"xLabel": "<string>",
"yLabel": "<string>",
"description": "<string>",
"hideInUI": true
}
],
"kFoldsMetadata": {
"folds": [
{
"created": "2023-11-07T05:31:56Z",
"layers": [
{
"input": {
"shape": 33,
"name": "x_input:0",
"type": "<dtype: 'float32'>"
},
"output": {
"shape": 20,
"name": "dense_1/Relu:0",
"type": "<dtype: 'float32'>"
}
}
],
"classNames": [
"<string>"
],
"labels": [
"<string>"
],
"availableModelTypes": [
"int8"
],
"recommendedModelType": "int8",
"modelValidationMetrics": [
{
"type": "int8",
"loss": 123,
"confusionMatrix": [
[
31,
1,
0
],
[
2,
27,
3
],
[
1,
0,
39
]
],
"report": {},
"onDevicePerformance": [
{
"mcu": "<string>",
"name": "<string>",
"isDefault": true,
"latency": 123,
"tflite": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"eon": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"hasPerformance": true,
"eon_ram_optimized": {
"ramRequired": 123,
"romRequired": 123,
"arenaSize": 123,
"modelSize": 123
},
"customMetrics": [
{
"name": "<string>",
"value": "<string>"
}
],
"profilingError": "<string>"
}
],
"visualization": "featureExplorer",
"isSupportedOnMcu": true,
"additionalMetrics": [
{
"name": "<string>",
"value": "<string>",
"fullPrecisionValue": 123,
"tooltipText": "<string>",
"link": "<string>"
}
],
"accuracy": 123,
"predictions": [
{
"sampleId": 123,
"startMs": 123,
"endMs": 123,
"prediction": "<string>",
"label": "<string>",
"predictionCorrect": true,
"expectedAnomalyOutcome": "<string>",
"f1Score": 123,
"anomalyScores": [
[
123
]
],
"boundingBoxes": [
{
"label": "<string>",
"x": 123,
"y": 123,
"width": 123,
"height": 123,
"score": 123
}
],
"labelMapPredictions": {}
}
],
"mcuSupportError": "<string>",
"profilingJobId": 123,
"profilingJobFailed": true
}
],
"hasTrainedModel": true,
"mode": "classification",
"imageInputScaling": "0..1",
"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>",
"dropdownOptions": [
{
"description": "<string>",
"value": "<string>"
}
]
}
],
"foldId": 1,
"foldName": "<string>",
"objectDetectionLastLayer": "mobilenet-ssd",
"tensorboardGraphs": [
{
"title": "<string>",
"data": [
{
"title": "<string>",
"values": [
123
]
}
],
"xLabel": "<string>",
"yLabel": "<string>",
"description": "<string>",
"hideInUI": true
}
]
}
],
"persistedFoldId": 123,
"persistedFoldName": "<string>",
"hasFinalRun": true,
"persistedFoldMetricType": "int8"
}
}Authorizations
Path Parameters
Project ID
Learn Block ID, use the impulse functions to retrieve the ID
Query Parameters
If set to "true", the "labels" field is left empty (which can be big on e.g. regression projects).
Response
OK
Whether the operation succeeded
Date when the model was trained
Layers of the neural network
Show child attributes
Show child attributes
Labels for the output layer
Original labels in the dataset when features were generated, e.g. used to render the feature explorer.
The types of model that are available
int8, float32, akida, requiresRetrain The model type that is recommended for use
int8, float32, akida, requiresRetrain Metrics for each of the available model types
Show child attributes
Show child attributes
classification, regression, object-detection, visual-anomaly, anomaly-gmm, freeform, anomaly Normalization that is applied to images. If this is not set then 0..1 is used. "0..1" gives you non-normalized pixels between 0 and 1. "-1..1" gives you non-normalized pixels between -1 and 1. "0..255" gives you non-normalized pixels between 0 and 255. "-128..127" gives you non-normalized pixels between -128 and 127. "torch" first scales pixels between 0 and 1, then applies normalization using the ImageNet dataset (same as torchvision.transforms.Normalize()). "bgr-subtract-imagenet-mean" scales to 0..255, reorders pixels to BGR, and subtracts the ImageNet mean from each channel.
0..1, -1..1, -128..127, 0..255, torch, bgr-subtract-imagenet-mean List of configurable thresholds for this block.
Show child attributes
Show child attributes
Optional error description (set if 'success' was false)
mobilenet-ssd, fomo, yolov2-akida, yolov5, yolov5v5-drpai, yolox, yolov7, yolo-pro, tao-retinanet, tao-ssd, tao-yolov3, tao-yolov4, yolov11, yolov11-abs, paddleocr-detector, qc-face-det-lite, qc-yolox List of TensorBoard graphs associated with this model
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?