A recognition specification describes the output format of your recognition algorithm. You may attach multiple algorithms that perform the same task to the same specification in order to leverage automatic updates of your embedded recognition models.
Parameter
Type
Attributes
Description
id
int (string)
read-only
The ID of the recognition specification. This field is a string for public recognition models.
name
string
A short name for your recognition specification.
description
string
A longer description of your recognition specification.
update_date
string
read-only
Date time (ISO 8601 format) of the last update of the recognition specification.
metadata
object
A JSON field containing any kind of information that you may find interesting to store.
current_version_id
int
nullable, hidden for public models
The ID of the current recognition version object that this specification will execute if you ask it to perform an inference. This is convenient if you want to allow your app to point to a constant API endpoint while keeping the possibility to smoothly update the recognition model behind. This field is hidden for public recognition models
outputs
hidden
The specification of the outputs you would like to recognize. It's an array of output objects. As this field tends to be large, it is hidden when you access the list of recognition models.
The id field is an integer for private models and a string for public recognition models.
Output object
Parameter
Type
Description
labels
An output of type labels.
Labels output
Parameter
Type
Description
labels
A list of labels objects that will be recognized by your model.
exclusive
bool
A boolean describing if the declared labels are mutually exclusive or not.
roi
string
ROI stands for "Region Of Interest". Possible values are:
NONE: if your model is performing classification only without object localisation
BBOX: if your model can also output bounding boxes for the multiple objects detected in the image.
Label Object
Parameter
Type
Description
id
int
The numeric ID of your label. Can be anything you want, this ID will be present in the inference response for you to use it.
name
string
The name of the label. It will also be present in the inference response.
{"id": 42,"name": "hot-dog VS not hot-dog classifier","description": "My great hot-dog VS not hot-dog classifier !","task_id": 123,"update_date": "2018-02-16T16:37:25.148189Z","metadata": {"author":"me","project":"my secret project" },"outputs": [{"labels": {"roi":"NONE","exclusive":true,"labels": [{"id":0,"name":"hot-dog" }, {"id":1,"name":"not hot-dog" }] } }],"current_version_id": null}
List specifications
Definition
Get the list of existing recognition specifications.
# To list public specifications, use:GEThttps://api.deepomatic.com/v0.7/recognition/public# To list your own specifications, use:GEThttps://api.deepomatic.com/v0.7/recognition/specs
import osfrom deepomatic.api.client import Clientclient =Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))# To list public specifications, use:client.RecognitionSpec.list(public=True)# To list your own specifications, use:client.RecognitionSpec.list()
Code sample
# For public specifications:curlhttps://api.deepomatic.com/v0.7/recognition/public \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}"# For private networks:curlhttps://api.deepomatic.com/v0.7/recognition/specs \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}"
import os, deepomaticclient = deepomatic.Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))# For public specifications:for spec in client.RecognitionSpec.list(public=True):print(spec)# For private specifications:for spec in client.RecognitionSpec.list():print(spec)
Response
A paginated list of responses.
Parameter
Type
Description
count
int
The total number of results.
next
string
The URL to the next page.
previous
string
The URL to the previous page.
results
A list of your recognition specification objects. Please note that the outputfield is not present and that current_version_id is unavailable for public recognition models.
JSON
{"count": 2,"next": null,"previous": null,"results": [ {"id":42,"name":"My great hot-dog VS not hot-dog classifier !","description":"Very complicated classifier","update_date":"2018-03-09T18:30:43.404610Z","current_version_id":1,"metadata": {} },... ]}
Retrieve a specification
Definition
Retrieve a recognition specification by ID.
# To retrieve a public specification, use:GEThttps://api.deepomatic.com/v0.7/recognition/public/{SPEC_ID}# To retrieve your own specification, use:GEThttps://api.deepomatic.com/v0.7/recognition/specs/{SPEC_ID}
import osfrom deepomatic.api.client import Clientclient =Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))# {SPEC_ID} may be a string for a public specification# or an integer for your own specification.client.RecognitionSpec.retrieve({SPEC_ID})
Arguments
Parameter
Type
Default
Description
spec_id
int
The ID of the recognition specification to get.
Code sample
# For a public specification:curlhttps://api.deepomatic.com/v0.7/recognition/public/fashion-v4 \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}"# For a private specification:curlhttps://api.deepomatic.com/v0.7/recognition/specs/42 \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}"
import os, deepomaticclient = deepomatic.Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))# For a public specification:client.RecognitionSpec.retrieve("fashion-v4")# For a private specification:client.RecognitionSpec.retrieve(42)
Run inference on the current version of the specification. Therefore, its current_version_id field must not be null. This endpoint returns a task ID.
# To run inference on a public specification, use:POSThttps://api.deepomatic.com/v0.7/recognition/public/{SPEC_ID}/inference# To run inference on your own specification, use:POSThttps://api.deepomatic.com/v0.7/recognition/specs/{SPEC_ID}/inference
import osfrom deepomatic.api.client import Clientclient =Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))# {SPEC_ID} may be a string for a public specification# or an integer for your own specification.spec = client.RecognitionSpec.retrieve({SPEC_ID})spec.inference(...)
Arguments
Parameter
Type
Default
Description
spec_id
int
The neural network ID
inputs
The inputs of the neural network as an array of input objects. Must be non empty.
show_discarded
bool
false
A boolean indicating if the response must include labels which did not pass the recognition threshold.
max_predictions
int
100
The maximum number of predicted and discarded objects to return.
Input object
Parameter
Type
Description
image
An image input. It is the only supported type for now.
Image input
Parameter
Type
Default
Description
source
string
Either the URL of the image (in which case it must start with http: or https: ), or directly the binary content of the image (in which case it must start with data:image/jpeg;encoding, with encoding being either binaryor base64. jpeg might be replaced by another image type).
bbox
null
(optional) A bounding box object to crop the image before performing inference.
Code sample
URL=https://static.deepomatic.com/resources/demos/api-clients/dog2.jpg# Inference from an URL:curlhttps://api.deepomatic.com/v0.7/recognition/public/fashion-v4/inference \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}" \-d "{\"inputs\":[{\"image\": {\"source\": \"${URL}\"}}]}" \-d show_discarded="True" \-H "Content-Type: application/json" \-d max_predictions=100# You can also directly send an image file or binary content using multipart/form-data:curl ${URL} >/tmp/img.jpgcurlhttps://api.deepomatic.com/v0.7/recognition/public/fashion-v4/inference \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}" \-F inputs[0]image.source=@/tmp/img.jpg# You can also send base64 data by prefixing it with 'data:image/*;base64,' and sending it as application/json:BASE64_DATA=$(cat/tmp/img.jpg|base64)curlhttps://api.deepomatic.com/v0.7/recognition/public/fashion-v4/inference \-H "X-API-KEY: ${DEEPOMATIC_API_KEY}" \-H "Content-Type: application/json" \-d "{\"inputs\":[{\"image\": {\"source\": \"data:image/*;base64,${BASE64_DATA}\"}}]}"
import base64import sys, tarfileif sys.version_info >= (3,0):from urllib.request import urlretrieveelse:from urllib import urlretrieveimport osfrom deepomatic.api.client import Clientfrom deepomatic.api.inputs import ImageInputclient =Client(api_key=os.getenv('DEEPOMATIC_API_KEY'))spec = client.RecognitionSpec.retrieve("fashion-v4")# Inference from an URL:url ="https://static.deepomatic.com/resources/demos/api-clients/dog2.jpg"spec.inference(inputs=[ImageInput(url)], show_discarded=True, max_predictions=100)# You can also directly send an image file:urlretrieve(url, '/tmp/img.jpg')withopen('/tmp/img.jpg', 'rb')as fp: spec.inference(inputs=[ImageInput(fp)])# You can also send binary data:withopen('/tmp/img.jpg', 'rb')as fp: binary_data = fp.read()spec.inference(inputs=[ImageInput(binary_data, encoding="binary")])# If you finally want to send base64 data, you can use:base64_data = base64.b64encode(binary_data)spec.inference(inputs=[ImageInput(base64_data, encoding="base64")])
Response
On success, this endpoint will return a task ID. See Inference output section for a description of the response format.
The ID of the current that this specification will execute if you ask it to perform an inference. This is convenient if you want to allow your app to point to a constant API endpoint while keeping the possibility to smoothly update the recognition model behind.