ConvNeXt

ConvNeXt ist ein Bildklassifikator, der vollständig aus gewöhnlichen Faltungen aufgebaut ist, Block für Block von einem ResNet in Richtung der Designentscheidungen eines Vision Transformers modernisiert. LibreYOLO unterstützt ihn für eine Aufgabe: die Klassifikation.

Aufgaben
classify
Größen
t, s, b at 224 px
Installation
pip install libreyolo
Supportstufe
Unterstützt, seit v. Ergänzende trainierbare Modelle: Die CI bleibt grün, Funktionen kommen bei Gelegenheit hinzu.
Upstream
ConvNeXt von Meta AI (FAIR), Apache-2.0. Publikation, Quelle
Lizenzen
Code MIT, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

ConvNeXt braucht kein optionales Extra. Alles, was es importiert, steckt in der Basisinstallation.

bash
pip install libreyolo

Fine-Tuning mit Adaptern über lora=True ist die Ausnahme und braucht das Extra lora.

bash
pip install "libreyolo[lora]"

Vorhersage

Die Gewichte werden beim ersten Aufruf von Hugging Face geladen und lokal zwischengespeichert.

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

Das zurückgegebene Results-Objekt ist dasselbe, das jede Familie liefert, ein anderes Modell einzusetzen ist also eine Änderung von einer Zeile. Ein Klassifikator führt keine Boxen und keine Masken mit: result.probs enthält die Vorhersage für das ganze Bild, mit top1, top5, top1conf und top5conf. conf, iou und max_det werden aus Gründen der API-Parität akzeptiert, haben aber keine Wirkung, denn bei einem einzelnen Wahrscheinlichkeitsvektor gibt es nichts, worauf ein Schwellenwert oder eine Unterdrückung wirken könnte. Siehe Vorhersage für Quellen, Streaming und den Umgang mit Ergebnissen.

Varianten

Drei Größen, tiny/small/base, alle gleich trainiert und gleich ausgewertet, die Wahl ist also ein direkter Tausch von Parameterzahl gegen Accuracy. Die Aufgabe liegt fest: jede Größe deckt nur die Klassifikation ab. Der Name der Gewichtsdatei endet bei jeder Größe auf -cls.pt, und genau dieses Suffix liest die Factory, um an diese Familie zu routen; ein task=-Argument ist nicht nötig.

Training

Das Fine-Tuning startet vom veröffentlichten ImageNet-Backbone und baut die letzte Klassifikatorschicht automatisch auf die Klassenzahl des Zieldatensatzes um.

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

Ohne weitere Angaben läuft das Training 100 Epochen mit lr0=1e-3, AdamW, einem Batch von 64 und Early Stopping nach 50 Epochen ohne Verbesserung. data akzeptiert ein Datensatzverzeichnis (train/ und val/, ein Ordner pro Klasse), einen bekannten Kurznamen wie imagenette160 oder eine .zip-URL. Die Blöcke von ConvNeXt enthalten die nn.Linear-MLPs, die LoRA braucht, deshalb wird lora=True hier unterstützt und schleust Adapter in die Block-MLPs ein, statt das ganze Backbone nachzutrainieren.

Siehe Training für Datensätze, Augmentierung, Multi-GPU und Logger.

Validierung

val() gibt ein Dictionary mit metrics/-Schlüsseln zurück. Bei der Klassifikation sind das die Top-1- und die Top-5-Accuracy über dem Validierungs-Split.

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

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: unterstütztclassify to TorchScript: unterstütztclassify to ExecuTorch: unterstütztclassify to TensorRT: unterstütztclassify to OpenVINO: unterstütztclassify to Paddle: nicht unterstütztclassify to MNN: nicht unterstütztclassify to RKNN: nicht unterstütztclassify to ncnn: unterstütztclassify to TFLite: unterstütztclassify to CoreML: nicht unterstütztclassify to Core AI: unterstützt

Ein exportiertes Artefakt lädt über sein Dateisuffix wieder durch LibreYOLO(), eine .onnx- oder .engine-Datei verhält sich also wie ein Checkpoint und liefert dasselbe Results. Export listet die Argumente auf, die jedes Format akzeptiert, und die zusätzlichen, die einige davon mitbringen.

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
Die exportierte Datei nutzen
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory routet über das Dateisuffix: ein exportiertes Artefakt# lädt wie ein Checkpoint und liefert dasselbe Results-Objekt.model = LibreYOLO("LibreConvNeXtt-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Jede veröffentlichte Gewichtsdatei dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
classify
LibreConvNeXtt-cls.pt224apache-2.0
LibreConvNeXts-cls.pt224apache-2.0
LibreConvNeXtb-cls.pt224apache-2.0

Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
ConvNeXt, Meta AI (FAIR)
Upstream-Lizenz
Apache-2.0
LibreYOLO-Code
MIT
Gewichte
Apache-2.0, erneut unter huggingface.co/LibreYOLO veröffentlicht
Einordnung
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.

In dieser Familie wird nur ConvNeXt V1 ausgeliefert. Die kleinen vortrainierten Checkpoints von ConvNeXt-V2 stehen unter CC-BY-NC 4.0 und sind bewusst ausgeschlossen, denn nicht-kommerzielle Gewichte lassen sich nicht innerhalb einer MIT-lizenzierten, kommerziell nutzbaren Bibliothek weiterverbreiten.

Zitieren

@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},
}

Aus dem Zitierblock der Autoren unter github.com/facebookresearch/ConvNeXt#citation kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.