ConvNeXt

ConvNeXt es un clasificador de imágenes construido enteramente con convoluciones estándar, modernizado bloque a bloque desde una ResNet hacia las decisiones de diseño de un vision transformer. LibreYOLO lo soporta para una tarea: clasificación.

Tareas
classify
Tamaños
t, s, b at 224 px
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
ConvNeXt de Meta AI (FAIR), Apache-2.0. Artículo, fuente
Licencias
Código MIT, pesos Apache-2.0. Uso comercial

Instalación

ConvNeXt no necesita ningún extra opcional. Todo lo que importa está en la instalación base.

bash
pip install libreyolo

El fine-tuning con adaptadores mediante lora=True es la excepción, y necesita el extra lora.

bash
pip install "libreyolo[lora]"

Predicción

Los pesos se descargan de Hugging Face en el primer uso y se guardan en la caché local.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreConvNeXtt-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreConvNeXtt-cls.pt source=cat.jpg save=True

El objeto Results devuelto es el mismo que devuelven todas las familias, así que cambiar a otro modelo es un cambio de una línea. Un clasificador no lleva cajas ni máscaras: result.probs contiene la predicción de la imagen completa, con top1, top5, top1conf y top5conf. conf, iou y max_det se aceptan por paridad de API, pero no tienen efecto, porque no hay nada que umbralizar ni suprimir en un único vector de probabilidades. Consulta predicción para fuentes, streaming y manejo de resultados.

Variantes

Tres tamaños, tiny/small/base, todos entrenados y evaluados de la misma forma, así que elegir uno es un intercambio directo entre número de parámetros y precisión. La tarea es fija: todos los tamaños cubren solo clasificación. El nombre del archivo de pesos termina en -cls.pt en todos los tamaños, y ese sufijo es lo que lee la factoría para enrutar a esta familia; no hace falta ningún argumento task=.

Entrenamiento

El fine-tuning parte del backbone de ImageNet publicado y reconstruye automáticamente la capa final del clasificador para que coincida con el número de clases del dataset objetivo.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5)
CLI
libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 epochs=5
LoRA
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train(data="imagenette160", epochs=5, lora=True)
Multi-GPU
libreyolo train model=LibreConvNeXtt-cls.pt data=imagenette160 \  epochs=50 device=0,1 batch=-1

Si no tocas nada, el trainer ejecuta 100 épocas con lr0=1e-3 y AdamW, un batch de 64 y parada temprana tras 50 épocas sin mejora. data acepta la raíz de un dataset (train/ y val/, una carpeta por clase), un nombre corto conocido como imagenette160, o una URL a un .zip. Los bloques de ConvNeXt llevan los MLP de nn.Linear que LoRA necesita, así que lora=True está soportado aquí, e inyecta adaptadores en los MLP de los bloques en lugar de hacer fine-tuning del backbone completo.

Consulta entrenamiento para datasets, aumento de datos (data augmentation), multi-GPU y loggers.

Validación

val() devuelve un diccionario de claves metrics/. En clasificación son la precisión top-1 y top-5 sobre el split de validación.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreConvNeXtt-cls.pt data=imagenette160

Exportación

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

Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión de archivo, así que un archivo .onnx o .engine se comporta como un checkpoint y devuelve el mismo Results. Exportación lista los argumentos que acepta cada formato y los extras que añaden algunos de ellos.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreConvNeXtt-cls.pt format=onnxlibreyolo export model=LibreConvNeXtt-cls.pt format=tensorrt half=True
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("LibreConvNeXtt-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Todos los archivos de pesos publicados de esta familia.

ArchivoEntrada (px)Licencia de los pesos
classify
LibreConvNeXtt-cls.pt224apache-2.0
LibreConvNeXts-cls.pt224apache-2.0
LibreConvNeXtb-cls.pt224apache-2.0

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
ConvNeXt, Meta AI (FAIR)
Licencia del proyecto original
Apache-2.0
Código de LibreYOLO
MIT
Pesos
Apache-2.0, republicados en huggingface.co/LibreYOLO
Interpretación
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The architecture is Meta AI's original design, released under MIT at facebookresearch/ConvNeXt; the block definitions, layer-scale parameter and module naming that LibreYOLO's implementation follows come from timm, whose convnext_{tiny,small,base}.fb_in1k ImageNet-1k weights are licensed Apache-2.0 and are what LibreYOLO ships. Only ConvNeXt V1 is shipped here: ConvNeXt-V2's small pretrained checkpoints are CC-BY-NC 4.0 and are deliberately excluded as not redistributable in a commercial library.

En esta familia solo se distribuye ConvNeXt V1. Los checkpoints preentrenados pequeños de ConvNeXt-V2 son CC-BY-NC 4.0 y se excluyen deliberadamente, porque unos pesos no comerciales no pueden redistribuirse dentro de una biblioteca MIT/comercial.

Cita

@Article{liu2022convnet,
  author  = {Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie},
  title   = {A ConvNet for the 2020s},
  journal = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year    = {2022},
}

Copiado del bloque de cita de los autores en github.com/facebookresearch/ConvNeXt#citation.

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.