Переглянути як Markdown

EfficientNetV2

EfficientNetV2 є класифікатором зображень, глибину, ширину й вибір блоків на кожному етапі якого знайдено пошуком нейронної архітектури зі спільною оптимізацією правильності та швидкості навчання, а не лише правильності. LibreYOLO підтримує її для одного завдання: класифікації.

Задачі
classify
Розміри
b0, b1, b2, b3 at 224 to 300 px
Встановлення
pip install libreyolo
Рівень підтримки
Підтримуваний, починаючи з v. Додаткові придатні до навчання моделі: тести CI підтримують справними, а функції додають за нагоди.
Першоджерело
EfficientNetV2, автори: Google, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання

Встановлення

EfficientNetV2 не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.

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=cat.jpg save=True

Повернений об'єкт Results є однаковим для всіх сімейств, тому заміна моделі потребує зміни одного рядка. Класифікатор не містить рамок або масок: result.probs містить передбачення для всього зображення з top1, top5, top1conf і top5conf. conf, iou і max_det приймаються для узгодженості API, але не впливають на результат, оскільки в одному векторі ймовірностей немає чого порогувати чи придушувати. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

Доступні чотири розміри від b0 до b3, кожен оцінюється з власною роздільною здатністю та часткою кадрування замість спільного розміру входу для всього сімейства. Вибір розміру прямо зіставляє кількість параметрів із правильністю. Завдання фіксоване: кожен розмір охоплює лише класифікацію. Назва файлу ваг кожного розміру завершується на -cls.pt, і за цим суфіксом фабрика маршрутизує до сімейства; аргумент task= не потрібен.

Навчання

Донавчання починається з опублікованого бекбона ImageNet і автоматично перебудовує завершальний шар класифікатора під кількість класів цільового датасету. Якщо imgsz не задано явно, типово використовується власна роздільна здатність оцінювання розміру.

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
Кілька GPU
libreyolo train model=LibreEfficientNetV2b0-cls.pt data=imagenette160 \  epochs=50 device=0,1 batch=-1

Без додаткових налаштувань тренер виконує 100 епох із lr0=1e-3, оптимізатором AdamW, батчем 64 і ранньою зупинкою після 50 епох без покращення. data приймає кореневий каталог датасету (train/ і val/, по одній папці на клас), відому коротку назву на кшталт imagenette160 або URL .zip. lora=True тут не підтримується; його передавання спричиняє помилку, оскільки LoRA в LibreYOLO націлена на трансформерні компоненти із шарами nn.Linear, яких немає в блоках MBConv цього сімейства.

Датасети, аугментацію, кілька GPU та логери описано в розділі навчання.

Валідація

val() повертає словник ключів metrics/. Для класифікації це правильність top-1 і top-5 на валідаційному поділі.

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

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: підтримуєтьсяclassify to TorchScript: підтримуєтьсяclassify to ExecuTorch: підтримуєтьсяclassify to TensorRT: підтримуєтьсяclassify to OpenVINO: підтримуєтьсяclassify to Paddle: не підтримуєтьсяclassify to MNN: не підтримуєтьсяclassify to RKNN: не підтримуєтьсяclassify to ncnn: підтримуєтьсяclassify to TFLite: підтримуєтьсяclassify to CoreML: не підтримуєтьсяclassify to Core AI: підтримується

Експортований артефакт знову завантажується через LibreYOLO() відповідно до суфікса файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий об'єкт Results. У розділі експорту наведено аргументи, які приймає кожен формат, і додаткові параметри деяких форматів.

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
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreEfficientNetV2b0-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
classify
LibreEfficientNetV2b0-cls.pt224apache-2.0
LibreEfficientNetV2b1-cls.pt240apache-2.0
LibreEfficientNetV2b2-cls.pt260apache-2.0
LibreEfficientNetV2b3-cls.pt300apache-2.0

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
EfficientNetV2, Google
Ліцензія першоджерела
Apache-2.0
Джерело першоджерела
github.com/huggingface/pytorch-image-models
Код LibreYOLO
MIT
Ваги
Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
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.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.