YOLOX

YOLOX est un détecteur mono-étape sans ancres, doté d'une tête découplée de classification et de régression, entraîné avec l'affectation d'étiquettes SimOTA. LibreYOLO le prend en charge pour la détection.

Tâches
detection
Tailles
n, t, s, m, l, x at 416 to 640 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
YOLOX par Megvii, Apache-2.0. Article, source
Licences
Code Apache-2.0, poids Apache-2.0. Usage commercial

Installer

YOLOX ne nécessite aucun extra au-delà du package 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("LibreYOLOXs.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLOXs.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

L'objet Results renvoyé est celui de toutes les familles, le remplacement du détecteur ne demande donc de modifier qu'une ligne. conf définit le seuil de confiance et iou le seuil de NMS appliqué aux trois échelles de prédiction découplées. Consultez la prédiction pour les sources, le streaming et la gestion des résultats.

Variantes

Six tailles partagent le même backbone CSP et le même neck PAFPN. Les deux plus petites, n et t, s'exécutent à une résolution d'entrée fixe plus faible que les quatre autres\u00a0; le tableau de benchmark ci-dessous donne la valeur exacte de chacune.

CheckpointEntrée (px)mAP 50-95Paramètres (M)
LibreYOLOXnano41628.80.91
LibreYOLOXtiny41635.15.06
LibreYOLOXl64053.954.21
LibreYOLOXm64050.925.33
LibreYOLOXs64043.08.97
LibreYOLOXx64056.399.07

COCO val2017, 500 images. Mesuré par le banc de benchmark de LibreYOLO et publié sur Vision Analysis, où sont comparées la latence selon le matériel et les runtimes et où sont conservés les enregistrements complets des exécutions.

Entraîner

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLOXs.pt")model.train(data="my-dataset.yaml", epochs=300, imgsz=640, batch=16, lr0=0.01)
CLI
libreyolo train model=LibreYOLOXs.pt data=my-dataset.yaml \  epochs=300 imgsz=640 batch=16 lr0=0.01

Sans autre réglage, le trainer exécute 300 époques avec lr0=0.01, un momentum SGD de 0.9, un warmup de 5 époques, et désactive les augmentations mosaic et mixup pendant les 15 dernières époques. train() accepte également un argument pretrained, mais sa valeur n'est jamais lue dans la méthode\u00a0: l'entraînement continue toujours depuis les poids ayant servi à construire le modèle. pretrained=False ne réinitialise donc pas le réseau.

La valeur par défaut de imgsz est fixe dans la configuration d'entraînement de base, elle ne correspond pas à la résolution native du checkpoint chargé. Cela concerne tout particulièrement les checkpoints n et t\u00a0: si vous poursuivez l'entraînement de l'un ou de l'autre sans définir explicitement imgsz, il passe à la plus grande valeur par défaut et n'utilise plus la taille inférieure avec laquelle il a été publié.

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

Valider

val() renvoie un dictionnaire de clés metrics/ couvrant la précision, le rappel, la mAP 50 et la mAP 50-95, mesurés sur tout dataset au format utilisé pour l'entraînement.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLOXs.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLOXs.pt data=my-dataset.yaml
Sur COCO
# Le YAML COCO fourni contient un script de téléchargement intégré, il nécessite donc# une autorisation explicite sauf si le dataset est déjà présent localement.libreyolo val model=LibreYOLOXn.pt data=coco.yaml imgsz=416 \  allow_download_scripts=True

Exporter

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

Un artefact exporté se recharge dans LibreYOLO() grâce au suffixe de son fichier. Un fichier .onnx ou .engine se comporte donc comme un checkpoint et renvoie les mêmes Results. Vous pouvez également exécuter le graphe dans un runtime nu, sans installer LibreYOLO, mais vous devez alors écrire vous-même le prétraitement et le post-traitement. Un export CoreML peut intégrer la NMS au graphe avec nms=True\u00a0; YOLOX et YOLOv9 sont les deux seules familles pour lesquelles ce paramètre est actuellement accepté.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLOXs.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)
CLI
libreyolo export model=LibreYOLOXs.pt format=onnx imgsz=640libreyolo export model=LibreYOLOXs.pt format=tensorrt imgsz=640 half=True
Utiliser le fichier exporté
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La fabrique détermine le chemin selon le suffixe du fichier ; un artefact exporté se charge# donc comme tout checkpoint et renvoie le même objet Results.model = LibreYOLO("LibreYOLOXs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoints

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

FichierEntrée (px)Licence des poids
Detection
LibreYOLOXn.pt416apache-2.0
LibreYOLOXt.pt416apache-2.0
LibreYOLOXs.pt640apache-2.0
LibreYOLOXm.pt640apache-2.0
LibreYOLOXl.pt640apache-2.0
LibreYOLOXx.pt640apache-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
YOLOX, Megvii
Licence du projet d'origine
Apache-2.0
Source du projet d'origine
github.com/Megvii-BaseDetection/YOLOX
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.

Citation

@article{yolox2021,
  title={YOLOX: Exceeding YOLO Series in 2021},
  author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal={arXiv preprint arXiv:2107.08430},
  year={2021}
}

Copié depuis le bloc de citation des auteurs sur github.com/Megvii-BaseDetection/YOLOX#cite-yolox.

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.