FOMO

FOMO es un localizador de puntos basado en una rejilla: cada celda de una rejilla de baja resolución se clasifica como fondo o como centro de un objeto, sin ninguna regresión de bounding box. LibreYOLO lo incluye para la tarea de puntos.

Tareas
point
Tamaños
Instalación
pip install libreyolo
Nivel de compatibilidad
Compatible, desde v. Modelos entrenables de apoyo: se mantienen operativos en CI y reciben funciones cuando surge la oportunidad.
Proyecto original
FOMO (Faster Objects, More Objects) de Edge Impulse, MIT. Artículo, fuente
Licencias
Código MIT, pesos MIT. Uso comercial

Instalación

FOMO no necesita nada más allá del paquete base.

bash
pip install libreyolo

Predicción

A diferencia de todas las demás familias de este sitio, los pesos de LibreFOMO no se descargan automáticamente: LibreYOLO("LibreFOMOs-point.pt") busca ese archivo en disco y lanza un ValueError que lo nombra en lugar de traerlo de Hugging Face. Descarga primero un checkpoint desde la organización LibreYOLO y cárgalo por su ruta local, o entrena el tuyo (ver Entrenamiento más abajo).

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Los pesos de LibreFOMO no se descargan solos (ver Checkpoints más abajo).# Apunta esto a un checkpoint que ya hayas descargado en local.model = LibreYOLO("./LibreFOMOs-point.pt")result = model(SAMPLE_IMAGE, save=True) for point in result.points:    print(point.cls, point.conf, point.xy)
CLI
libreyolo predict model=./LibreFOMOs-point.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

El resultado lleva una carga de points en lugar de boxes: cada fila es x, y, clase, confianza, disponible como result.points.data o a través de los accesores .xy, .xyn, .cls y .conf. No hay ningún umbral iou que fijar, porque no hay cajas que suprimir; predict(..., nms_radius=1) controla cuántas celdas de la rejilla deben separar a dos detecciones para que ambas sobrevivan, y el nombre del archivo tiene que llevar el sufijo de tarea -point de FOMO para que el cargador lo reconozca. Consulta predicción para fuentes, streaming y manejo de resultados.

Variantes

Tres tamaños, s, m y l, usan backbones de estilo MobileNetV2 progresivamente más anchos con resoluciones de entrada fijas correspondientemente mayores, cada uno detrás de una única cabeza de clasificación 1x1. Esta familia no lleva aquí una tabla de benchmarks; el tamaño del archivo de checkpoint en la tabla de más abajo es la señal por tamaño más clara publicada hasta ahora.

Entrenamiento

Python
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")model.train(    data="my-dataset.yaml",    epochs=40, batch=32, lr0=3e-4,)
CLI
# Hay que pasar imgsz: la CLI usa 640 por defecto, y el checkpoint s# solo acepta su valor nativo de 96.libreyolo train model=./LibreFOMOs-point.pt data=my-dataset.yaml imgsz=96 epochs=40 batch=32 lr0=3e-4

imgsz no es una elección libre: toma por defecto la resolución nativa del checkpoint cargado, y pasar un valor distinto lanza un ValueError que nombra el tamaño que espera. Esos tamaños son 96 para s, 192 para m y 224 para l. La CLI usa 640 por defecto para imgsz, así que un comando libreyolo train tiene que fijarlo explícitamente para que coincida con el checkpoint.

Si no lo tocas, el entrenador ejecuta 40 epochs con batch 32 usando Adam a lr0=3e-4, sin weight decay, y con la clase de primer plano ponderada 100x sobre el fondo en la loss de entropía cruzada por celda, ya que casi todas las celdas de la rejilla son fondo en una escena típica. EMA y precisión mixta están desactivadas por defecto, y no se aplica ninguno de los aumentos geométricos o de color que se usan en el resto de LibreYOLO: mosaic, mixup, jitter de HSV, volteo, rotación, traslación y shear están todos a cero.

Esta es la ruta con la que se entrenaron los checkpoints publicados de LibreFOMO, desde cero sobre COCO.

Consulta entrenamiento para datasets y loggers.

Validación

val() deriva a un validador a nivel de rejilla hecho para esta familia. Junto a las claves metrics/precision, metrics/recall y metrics/mAP@ de emparejamiento de puntos que comparte con otras tareas de puntos, barre umbrales de confianza y valores de nms_radius y publica la combinación de mejor F1 bajo metrics/grid_F1, metrics/grid_precision, metrics/grid_recall y metrics/grid_mean_distance, además del umbral y el radio que la produjeron bajo decode/threshold y decode/nms_radius.

Python
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/grid_F1"])print(metrics["metrics/grid_precision"], metrics["metrics/grid_recall"])
CLI
libreyolo val model=./LibreFOMOs-point.pt data=my-dataset.yaml

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
pointpoint to ONNX: compatiblepoint to TorchScript: compatiblepoint to ExecuTorch: compatiblepoint to TensorRT: compatiblepoint to OpenVINO: compatiblepoint to Paddle: no compatiblepoint to MNN: no compatiblepoint to RKNN: no compatiblepoint to ncnn: compatiblepoint to TFLite: no compatiblepoint to CoreML: no compatiblepoint to Core AI: compatible

Un artefacto exportado se vuelve a cargar con LibreYOLO() según la extensión de su archivo, así que un archivo .onnx o .engine se comporta como un checkpoint y devuelve el mismo Results. También se admite ejecutar el grafo en un runtime pelado, sin LibreYOLO instalado, pero entonces el preprocesado y el postprocesado corren de tu cuenta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=./LibreFOMOs-point.pt format=onnx
Usar el archivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factoría enruta según la extensión del archivo, así que un artefacto# exportado se carga como cualquier checkpoint y devuelve el mismo objeto Results.model = LibreYOLO("./LibreFOMOs-point.onnx")result = model(SAMPLE_IMAGE) print(result.points.xy)

Checkpoints

Todos los archivos de pesos publicados de esta familia. Ninguno se descarga automáticamente: consigue el archivo que quieras desde la página de Hugging Face enlazada y pasa su ruta local a LibreYOLO().

ArchivoEntrada (px)Licencia de los pesos
point
LibreFOMOs-point.ptmit
LibreFOMOm-point.ptmit
LibreFOMOl-point.ptmit

Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.

Licencia

Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.

Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.

Trabajo original
FOMO (Faster Objects, More Objects), Edge Impulse
Licencia del proyecto original
MIT
Código de LibreYOLO
MIT
Pesos
MIT, republicados en huggingface.co/LibreYOLO
Interpretación
FOMO is a technique Edge Impulse introduced through a blog post and its product documentation, not a code release, so there is no upstream repository or license to inherit. LibreYOLO's architecture is an original MobileNetV2-style reimplementation of the published description, and the LibreFOMO checkpoints are trained from scratch on COCO, so both the code and these weights are MIT, LibreYOLO's own. They are also not auto-downloaded: LibreYOLO("LibreFOMOs-point.pt") looks for that file locally and raises rather than fetching it, so get the checkpoint from the Hugging Face repository first. The name FOMO and the technique it describes remain Edge Impulse's.

No hay ningún repositorio de código upstream de FOMO al que enlazar: Edge Impulse describe la técnica en una entrada de blog y en la documentación de su producto, pero no ha publicado código de entrenamiento ni de inferencia de FOMO. La arquitectura y el entrenamiento que hay aquí son la implementación propia de LibreYOLO de esa descripción publicada, y los checkpoints de LibreFOMO publicados están entrenados desde cero sobre COCO, así que tanto el código como estos pesos son MIT, propios de LibreYOLO. El nombre FOMO y la técnica que describe siguen siendo de Edge Impulse.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.