onnx-community/yolov10x

onnx-community
Detección de objetos

YOLOv10: Detección de Objetos en Tiempo Real de Extremo a Extremo con pesos ONNX para YOLOv10. Ofrece compensaciones entre la latencia y precisión, así como entre el tamaño y precisión del modelo.

Como usar

Si aún no lo has hecho, puedes instalar la librería de JavaScript Transformers.js desde NPM usando:

npm i @xenova/transformers

Ejemplo: Realizar detección de objetos.

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

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

// Cargar procesador
const processor = await AutoProcessor.from_pretrained('onnx-community/yolov10x');

// 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, reshaped_input_sizes } = await processor(image);

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

const threshold = 0.5;
const [newHeight, newWidth] = reshaped_input_sizes[0]; // Altura y ancho reajustados
const [xs, ys] = [image.width / newWidth, image.height / newHeight]; // Escalas de redimensionamiento x e y
for (const [xmin, ymin, xmax, ymax, score, id] of predictions) {
  if (score < threshold) continue;

  // Convertir a coordenadas de imagen originales
  const bbox = [xmin * xs, ymin * ys, xmax * xs, ymax * ys].map(x => x.toFixed(2)).join(', ');
  console.log(`Se encontró "${model.config.id2label[id]}" en [${bbox}] con una puntuación de ${score.toFixed(2)}.`);
}
// Se encontró "car" en [559.30, 472.72, 799.58, 598.15] con una puntuación de 0.95.
// Se encontró "car" en [221.91, 422.56, 498.09, 521.85] con una puntuación de 0.94.
// Se encontró "bicycle" en [1.59, 646.99, 137.72, 730.35] con una puntuación de 0.92.
// Se encontró "bicycle" en [561.25, 593.65, 695.01, 671.73] con una puntuación de 0.91.
// Se encontró "person" en [687.74, 324.93, 739.70, 415.04] con una puntuación de 0.89.
// ...

Funcionalidades

Detección de objetos en tiempo real
Peso en formato ONNX
Compensaciones de latencia versus precisión
Compensaciones de tamaño versus precisión

Casos de uso

Detección de coches
Detección de bicicletas
Detección de personas