Cloudflare Docs
Workers AI
Edit this page on GitHub
Set theme to dark (⇧+D)

Image Classification

Image classification models take an image input and assigns it labels or classes.

  • Task type: image-classification
  • TypeScript class: AiImageClassification

​​ Available Embedding Models

List of available models in for this task type:

Model IDDescription
@cf/microsoft/resnet-5050 layers deep image classification CNN trained on more than 1M images from ImageNet
More information

​​ Examples

import { Ai } from '@cloudflare/ai'
export interface Env {
AI: any;
}
export default {
async fetch(request: Request, env: Env) {
const res: any = await fetch("https://cataas.com/cat");
const blob = await res.arrayBuffer();
const ai = new Ai(env.AI);
const inputs = {
image: [...new Uint8Array(blob)],
};
const response = await ai.run("@cf/microsoft/resnet-50", inputs);
return new Response(JSON.stringify({ inputs: { image: [] }, response }));
}
}
$ curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/microsoft/resnet-50 \
-X POST \
-H "Authorization: Bearer {API_TOKEN}" \
--data-binary @orange-llama.png

Example Workers AI response

{
"inputs": { "image":[] },
"response": [
{ "label":"PERSIAN CAT" ,"score":0.4071170687675476 },
{ "label":"PEKINESE", "score":0.23444877564907074 },
{ "label":"FEATHER BOA", "score":0.22562485933303833 },
{ "label":"POMERANIAN", "score":0.033316344022750854 },
{ "label":"JAPANESE SPANIEL", "score":0.024184171110391617 }
]
}

​​ API schema

The following schema is based on JSON Schema

​​ Input

{
"oneOf": [
{
"type": "string",
"format": "binary"
},
{
"type": "object",
"properties": {
"image": {
"type": "array",
"items": {
"type": "number"
}
}
}
}
]
}

TypeScript class: AiImageClassificationInput

​​ Output

{
"type": "array",
"contentType": "application/json",
"items": {
"type": "object",
"properties": {
"score": {
"type": "number"
},
"label": {
"type": "string"
}
}
}
}

TypeScript class: AiImageClassificationOutput