API - Referencia de respuesta.
Una llamada exitosa a POST /api/public/detect devuelve HTTP 200 con un cuerpo JSON que describe todo lo encontrado en su imagen o video. Esta página documenta cada campo.
La forma de la respuesta es la misma tanto para los modelos de la UE como para los globales; solo difiere el vocabulario de especies (deepfaune_label_en para eu, nombres comunes de SpeciesNet para global).
Ejemplo de respuesta (imagen)
json
{
"species": {
"red deer": 2
},
"metadata": {
"photo_id": "ca947365-cbd7-4651-bfc3-b7a505f99b33",
"camera_id": "b5fd3fef-7d54-4c14-86d2-699187eb0728"
},
"has_human": false,
"n_animals": 2,
"n_persons": 0,
"detections": [
{
"box": [0.7787, 0.4361, 0.9992, 0.7783],
"label": "animal",
"antlers": "no",
"species": "red deer",
"confidence": 0.909
},
{
"box": [0.0594, 0.2822, 0.1589, 0.4604],
"label": "animal",
"antlers": "yes",
"species": "red deer",
"sex_hint": "likely_male",
"antler_box": [0.0898, 0.1735, 0.1156, 0.2697],
"confidence": 0.522
}
],
"media_type": "image",
"n_vehicles": 0,
"needs_review": false
}
Campos de nivel superior
Campo | Tipo | Descripción |
|---|---|---|
| string |
|
| object | Un mapa resumen de nombre de especie → recuento, agregado a través de la captura. En el ejemplo, se encontraron dos ciervos rojos, por lo que |
| integer | Número total de animales detectados. |
| integer | Número de personas detectadas. |
| integer | Número de vehículos detectados. |
| boolean |
|
| boolean |
|
| array | Una entrada por objeto detectado (animal, persona o vehículo). Vea más abajo. |
| object | Devuelto sin cambios desde su solicitud. Lo que sea que envíe en |
El array detections
Cada elemento describe un objeto detectado.
Campo | Tipo | Presente cuando | Descripción |
|---|---|---|---|
| number[4] | siempre | Cuadro delimitador |
| string | siempre | La categoría de detección: |
| number | siempre | Confianza del modelo para esta detección, 0–1. En el ejemplo, el ciervo de pie obtuvo 0.909; el segundo, parcialmente oscurecido, 0.522. |
| string | solo animales | La especie reconocida, en el vocabulario del modelo (por ejemplo, |
| string | solo ciervos verificados |
|
| string |
| Siempre |
| number[4] |
| Cuadro delimitador de las astas, mismo formato que |
Las detecciones de personas y vehículos llevan un
boxylabelpero nospeciesni campos de astas.
Cuadros delimitadores
Todos los cuadros — box y antler_box — usan el mismo formato: cuatro números [x1, y1, x2, y2], cada uno entre 0 y 1, medidos desde la esquina superior izquierda de la imagen completa. Esto los hace independientes de la resolución, por lo que la misma respuesta funciona ya sea que renderice una miniatura o la imagen de tamaño completo.
Para convertir un cuadro a píxeles para dibujar una superposición:
js
const [x1, y1, x2, y2] = det.box;
const left = x1 * imageWidth;
const top = y1 * imageHeight;
const width = (x2 - x1) * imageWidth;
const height = (y2 - y1) * imageHeight;
// draw a rectangle at (left, top) of size width × heightantler_box se dibuja exactamente de la misma manera y, cuando está presente, marca dónde están las astas.
Campos de astas y sexo
La detección de astas es deliberadamente conservadora, y la respuesta refleja eso:
antlers: "yes"es el único valor que agregasex_hint: "likely_male"y unantler_box. Trátelo como probable, no seguro.antlers: "uncertain"contribuye aneeds_reviewpara que pueda echar un vistazo más de cerca.antlers: "no"(o la ausencia de campos de astas) nunca implica un animal hembra: una cierva, astas caídas o una cabeza girada o recortada simplemente no se pueden juzgar.
Solo las especies de ciervos que habilite para la verificación de astas llevarán estos campos; todos los demás animales los omiten.
needs_review
Esta bandera es true cuando el resultado contiene algo que vale la pena una mirada humana, típicamente:
una llamada de astas
"uncertain", ouna especie reconocida que queda fuera de la lista de permitidos que envió en
species(o sus valores predeterminados de perfil).
Un resultado marcado aún se devuelve completo — needs_review simplemente le dice a su aplicación que lo enrute para confirmación en lugar de tratarlo como final.
Respuestas de video
Una solicitud de video devuelve los mismos campos de nivel superior con media_type: "video", donde los recuentos (species, n_animals, …) se agregan a través de los fotogramas muestreados, más detalles adicionales a nivel de fotograma (un fotograma clave representativo y un desglose por fotograma). Los campos exactos de fotograma están documentados por separado; consulte el ejemplo de video en la documentación.
Estado HTTP
Una respuesta 200 siempre lleva el JSON anterior. Cualquier estado no 200 indica un problema (autenticación, créditos, validación, etc.); consulte la referencia de Errores para obtener la lista completa y cómo manejar cada uno.
¿Te resultó útil este artículo?