Als Markdown anzeigen

EfficientNetV2

EfficientNetV2 ist ein Bildklassifikator, dessen Tiefe, Breite und blockweise Auswahl durch Neural Architecture Search ermittelt wurden. Dabei wurden Accuracy und Trainingsgeschwindigkeit gemeinsam optimiert und nicht nur die Accuracy. LibreYOLO unterstützt es für eine Aufgabe: Klassifizierung.

Aufgaben
classification
Größen
b0, b1, b2, b3 at 224 to 300 px
Installation
pip install libreyolo
Supportstufe
Unterstützt, seit v1.3.0. Ergänzende trainierbare Modelle: Die CI bleibt grün, Funktionen kommen bei Gelegenheit hinzu.
Upstream
EfficientNetV2 von Google, Apache-2.0. Publikation, Quelle
Lizenzen
Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

EfficientNetV2 benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.

bash
pip install libreyolo

Vorhersage

Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreEfficientNetV2b0-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreEfficientNetV2b0-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Das zurückgegebene Results-Objekt entspricht dem aller anderen Familien. Der Wechsel zu einem anderen Modell erfordert daher nur eine Änderung in einer Zeile. Ein Klassifikator enthält weder Boxen noch Masken: result.probs enthält die Ganzbildvorhersage mit top1, top5, top1conf und top5conf. conf, iou und max_det werden aus Gründen der API-Parität akzeptiert, haben aber keine Wirkung. Bei einem einzelnen Wahrscheinlichkeitsvektor gibt es nichts, worauf ein Schwellenwert oder eine Unterdrückung angewendet werden könnte. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

Varianten

Es gibt vier Größen von b0 bis b3. Jede wird mit ihrer eigenen Auflösung und ihrem eigenen Crop-Verhältnis ausgewertet, statt eine Eingabegröße für die gesamte Familie zu verwenden. Die Wahl einer Größe ist ein direkter Tausch von Parameteranzahl gegen Accuracy. Die Aufgabe ist fest: Jede Größe unterstützt nur Klassifizierung. Der Dateiname der Gewichte endet bei jeder Größe mit -cls.pt. An diesem Suffix erkennt die Factory die Familie. Ein Argument task= ist nicht erforderlich.

Training

Das Fine-Tuning beginnt mit dem veröffentlichten ImageNet-Backbone und baut die letzte Klassifikatorschicht automatisch für die Klassenanzahl des Zieldatensatzes neu auf. Wenn du imgsz nicht ausdrücklich festlegst, wird standardmäßig die eigene Auswertungsauflösung der Größe verwendet.

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

Ohne Änderungen läuft der Trainer 100 Epochen mit lr0=1e-3, AdamW, einem Batch von 64 und Early Stopping nach 50 Epochen ohne Verbesserung. data akzeptiert ein Datensatz-Stammverzeichnis (train/ und val/ mit einem Ordner pro Klasse), einen bekannten Kurznamen wie imagenette160 oder eine .zip-URL. lora=True wird hier nicht unterstützt und löst einen Fehler aus. LoRA richtet sich in LibreYOLO an Transformer-Komponenten mit nn.Linear-Schichten, die in den MBConv-Blöcken dieser Familie nicht vorkommen.

Unter Training findest du Datensätze, Datenaugmentierung, Multi-GPU und Logger.

cls_pw=0 deaktiviert die Loss-Gewichtung; Werte bis 1 verwenden inverse Häufigkeitsgewichte, die auf den Mittelwert 1 normiert sind. class_weights=True verwendet stattdessen anhand der Stichproben normierte inverse Häufigkeiten und lässt sich nicht mit cls_pw>0 kombinieren. Diese Einstellungen müssen beim Fortsetzen übereinstimmen. Siehe Klassifikation.

Validierung

val() gibt ein Dictionary mit metrics/-Schlüsseln zurück. Bei der Klassifizierung sind dies Top-1- und Top-5-Accuracy auf dem Validierungssplit.

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

Validierung und INT8-Kalibrierung verwenden die Auswertungstransformation der Familie. Die Exportmetadaten speichern norm_mean, norm_std und resize_mode; ältere Artefakte greifen auf die Familienwerte zurück. Kalibrierungsvorverarbeiter geben das erforderliche CHW-Array und das Verhältnis zurück.

Export

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

Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück. Export führt die Argumente auf, die jedes Format akzeptiert, sowie die Zusatzpakete, die einige davon benötigen.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreEfficientNetV2b0-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreEfficientNetV2b0-cls.pt format=onnxlibreyolo export model=LibreEfficientNetV2b0-cls.pt format=tensorrt half=True
Exportierte Datei verwenden
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory entscheidet anhand der Dateiendung, daher wird ein Exportartefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreEfficientNetV2b0-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Alle veröffentlichten Gewichtsdateien dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
Classification
LibreEfficientNetV2b0-cls.pt224apache-2.0
LibreEfficientNetV2b1-cls.pt240apache-2.0
LibreEfficientNetV2b2-cls.pt260apache-2.0
LibreEfficientNetV2b3-cls.pt300apache-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
EfficientNetV2, Google
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 Google's design, whose reference implementation at google/automl is also Apache-2.0; LibreYOLO's implementation follows the block definitions, TensorFlow "SAME" padding and naming in timm, whose tf_efficientnetv2_b{0,1,2,3} ImageNet-1k weights (ported by Ross Wightman, no ImageNet-21k or extra data) are licensed Apache-2.0 and are what LibreYOLO ships.

Mit LibreYOLO v1.6.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.

EfficientNetV2-Architektur

Wähle eine Variante oder die Familienübersicht und dann einen Block für Details. Öffne das vollständige Diagramm zum Zoomen oder Herunterladen als SVG und PNG. Die Diagramme sind auf Englisch.