MobileNetV4

MobileNetV4 est un classifieur d'images conçu pour le matériel mobile et edge. Son bloc Universal Inverted Bottleneck réunit plusieurs conceptions antérieures de blocs mobiles dans une structure unique pouvant faire l'objet d'une recherche. LibreYOLO le prend en charge pour une seule tâche : la classification.

Tâches
classify
Tailles
s, m, l at 224 to 256 px
Installer
pip install libreyolo
Niveau de support
Pris en charge, depuis v. Modèles entraînables complémentaires : maintenus au vert dans la CI, avec des fonctionnalités ajoutées selon les occasions.
Origine
MobileNetV4 par Google, Apache-2.0. Article, source
Licences
Code Apache-2.0, poids Apache-2.0. Usage commercial

Installer

MobileNetV4 ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation de base.

bash
pip install libreyolo

Prédire

Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis en cache localement.

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

L'objet Results renvoyé est le même pour toutes les familles, remplacer le modèle ne demande donc de modifier qu'une ligne. Un classifieur ne comporte ni boîtes ni masques : result.probs contient la prédiction de l'image entière, avec top1, top5, top1conf et top5conf. conf, iou et max_det sont acceptés pour la parité de l'API, mais n'ont aucun effet puisqu'un seul vecteur de probabilités ne contient rien à seuiller ou à supprimer. Consultez la prédiction pour les sources, le streaming et le traitement des résultats.

Variantes

Trois tailles, small/medium/large, reposent exclusivement sur des convolutions : cette famille exclut les variantes hybrides qui ajoutent l'attention Mobile MQA. Le choix d'une taille constitue un compromis direct entre nombre de paramètres et exactitude. La tâche est fixe : chaque taille couvre uniquement la classification. Le nom du fichier de poids se termine par -cls.pt pour chaque taille, et la factory utilise ce suffixe pour sélectionner cette famille ; aucun argument task= n'est nécessaire.

Entraîner

Le fine-tuning part du backbone ImageNet publié et reconstruit automatiquement la dernière couche de classification selon le nombre de classes du dataset cible.

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

Avec les réglages par défaut, l'entraîneur exécute 100 époques avec lr0=1e-3, AdamW, un batch de 64 et un early stopping après 50 époques sans amélioration. data accepte la racine d'un dataset (train/ et val/, un dossier par classe), un nom court connu comme imagenette160 ou l'URL d'un fichier .zip. lora=True n'est pas pris en charge ici ; son utilisation lève une erreur, car LoRA dans LibreYOLO cible les composants transformer dotés de couches nn.Linear, absentes des blocs UIB de cette famille.

Consultez l'entraînement pour les datasets, l'augmentation, le multi-GPU et les loggers.

Valider

val() renvoie un dictionnaire de clés metrics/. Pour la classification, il s'agit de l'exactitude top-1 et top-5 sur la partition de validation.

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

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX : pris en chargeclassify to TorchScript : pris en chargeclassify to ExecuTorch : pris en chargeclassify to TensorRT : pris en chargeclassify to OpenVINO : pris en chargeclassify to Paddle : non pris en chargeclassify to MNN : non pris en chargeclassify to RKNN : non pris en chargeclassify to ncnn : pris en chargeclassify to TFLite : pris en chargeclassify to CoreML : non pris en chargeclassify to Core AI : pris en charge

Un artefact exporté se recharge par LibreYOLO() à partir de son suffixe de fichier. Un fichier .onnx ou .engine se comporte donc comme un checkpoint et renvoie le même objet Results. La page Export répertorie les arguments acceptés par chaque format et les options supplémentaires de certains d'entre eux.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMobileNetV4s-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreMobileNetV4s-cls.pt format=onnxlibreyolo export model=LibreMobileNetV4s-cls.pt format=tensorrt half=True
Utiliser le fichier exporté
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory utilise le suffixe du fichier : un artefact exporté se charge# comme tout checkpoint et renvoie le même objet Results.model = LibreYOLO("LibreMobileNetV4s-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Tous les fichiers de poids publiés pour cette famille.

FichierEntrée (px)Licence des poids
classify
LibreMobileNetV4s-cls.pt224apache-2.0
LibreMobileNetV4m-cls.pt224apache-2.0
LibreMobileNetV4l-cls.pt256apache-2.0

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
MobileNetV4, Google
Licence du projet d'origine
Apache-2.0
Code de LibreYOLO
MIT
Poids
Apache-2.0, republiés sur huggingface.co/LibreYOLO
Interprétation
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 official code lives in the tensorflow/models repository; LibreYOLO's implementation follows the conv-only MobileNetV4 (small/medium/large) block definitions, channel rounding and naming in timm, whose mobilenetv4_conv_{small,medium,large} ImageNet-1k weights are licensed Apache-2.0 and are what LibreYOLO ships. The hybrid variants, which add Mobile MQA attention, are not part of this family.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.