Xenova/gelan-e

Xenova
Detección de objetos

El modelo Xenova/gelan-e es un modelo de detección de objetos utilizando Transformers.js y pesos ONNX. Está diseñado para ser compatible con la biblioteca Transformers.js de JavaScript, haciéndolo ideal para aplicaciones web que requieren capacidades avanzadas de detección de objetos.

Como usar

Uso (Transformers.js)

Si no lo has hecho ya, puedes instalar la biblioteca de JavaScript Transformers.js desde NPM usando:

npm i @xenova/transformers

Ejemplo: Realiza la detección de objetos con Xenova/gelan-e.

import { AutoModel, AutoProcessor, RawImage } from '@xenova/transformers';

// Cargar modelo
const model = await AutoModel.from_pretrained('Xenova/gelan-e', {
  // quantized: false,    // (Opcional) Usar la versión no cuantizada.
})

// Cargar procesador
const processor = await AutoProcessor.from_pretrained('Xenova/gelan-e');
// processor.feature_extractor.do_resize = false;                   // (Opcional) Desactivar redimensionamiento
// processor.feature_extractor.size = { width: 128, height: 128 }   // (Opcional) Actualizar valor de redimensionamiento

// Leer imagen y ejecutar procesador
const url = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/city-streets.jpg';
const image = await RawImage.read(url);
const { pixel_values } = await processor(image);

// Ejecutar detección de objetos
const { outputs } = await model({ images: pixel_values })
const predictions = outputs.tolist();

for (const [xmin, ymin, xmax, ymax, score, id] of predictions) {
  const bbox = [xmin, ymin, xmax, ymax].map(x => x.toFixed(2)).join(', ')
  console.log(`Found "${model.config.id2label[id]}" at [${bbox}] with score ${score.toFixed(2)}.`)
}
// Found "car" at [177.60, 337.36, 398.55, 416.89] with score 0.93.
// Found "car" at [447.15, 378.75, 639.80, 477.55] with score 0.93.
// Found "bicycle" at [1.58, 518.34, 109.99, 584.37] with score 0.90.
// Found "person" at [551.19, 261.01, 591.45, 330.76] with score 0.89.
// Found "bicycle" at [449.09, 477.33, 555.91, 537.40] with score 0.89.
// Found "bicycle" at [352.70, 528.23, 463.36, 588.13] with score 0.88.
// Found "traffic light" at [376.77, 65.71, 401.59, 111.02] with score 0.86.
// Found "traffic light" at [208.46, 55.44, 233.45, 101.43] with score 0.85.

Demo

¡Pruébalo aquí!

Nota: Tener un repositorio separado para pesos ONNX está pensado como una solución temporal hasta que WebML gane más tracción. Si deseas hacer tus modelos compatibles con la web, te recomendamos convertir a ONNX usando 🤗 Optimum y estructurando tu repositorio de esta manera (con pesos ONNX ubicados en una subcarpeta llamada "onnx").

Funcionalidades

Detección de objetos
Compatibilidad con Transformers.js
Pesos ONNX

Casos de uso

Detección de objetos en imágenes para aplicaciones web
Reconocimiento de diferentes tipos de objetos en tiempo real
Aplicaciones de vigilancia y seguridad
Análisis de tráfico y vehículos