YOLOv7

YOLOv7 est un détecteur mono-étape avec ancres dont la tête ajoute des décalages appris de connaissances implicites avant la convolution finale. LibreYOLO prend en charge son unique taille publiée pour la détection.

Tâches
detection
Tailles
b at 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
YOLOv7 par MultimediaTechLab, MIT. Article, source
Licences
Code MIT, poids MIT. Usage commercial

Installer

YOLOv7 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("LibreYOLO7b.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLO7b.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é après le décodage de la tête avec ancres. Consultez la prédiction pour les sources, le streaming et la gestion des résultats.

Variantes

LibreYOLO fournit une seule taille, b. L'upstream publie un unique modèle YOLOv7, vous n'avez donc aucune taille à choisir.

Entraîner

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.train(data="my-dataset.yaml", epochs=300, imgsz=640, batch=16, lr0=0.01)
CLI
libreyolo train model=LibreYOLO7b.pt data=my-dataset.yaml \  epochs=300 imgsz=640 batch=16 lr0=0.01
Démarrage à chaud depuis un nouveau modèle
from libreyolo import LibreYOLO7 # pretrained=True charge toujours le checkpoint LibreYOLO7b.pt publié,# quel que soit l'objet avec lequel cette instance a été construite. Construire# la classe directement plutôt que via LibreYOLO() démarre sans aucun# poids chargé.model = LibreYOLO7(None, size="b")model.train(data="my-dataset.yaml", epochs=300, pretrained=True)

pretrained est pris en compte, contrairement au paramètre homonyme sans effet de certaines autres familles présentées ici\u00a0: transmettez True pour démarrer à chaud depuis le checkpoint LibreYOLO7b.pt publié (téléchargé automatiquement), ou un chemin ou un nom pour tout autre fichier. Ce checkpoint publié utilise les 80 classes COCO. Si vous le demandez sur un modèle déjà reconstruit pour un nombre de classes différent, le modèle repasse d'abord à 80 classes, charge le checkpoint, puis transfère tous les tenseurs dont la forme correspond vers la tête cible une fois le nombre de classes du dataset lu. resume=True ne peut pas être combiné à pretrained. Avec la valeur par défaut None, l'entraînement continue depuis l'état ayant servi à construire le modèle, ou depuis une initialisation aléatoire si aucun poids n'a été chargé.

Sans autre réglage, le trainer exécute 300 époques avec lr0=0.01, un momentum SGD de 0.937, un warmup de 3 époques, ainsi que la même affectation SimOTA et la même phase finale sans augmentation de 15 époques que YOLOX, adaptées à la tête avec ancres. Une différence subsiste\u00a0: YOLOX ajoute durant ces dernières époques un raffinement L1 de la régression des bounding boxes, que v7 omet, car sa loss SimOTA ne possède aucune branche L1 de décalage brut à affiner.

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("LibreYOLO7b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLO7b.pt data=my-dataset.yaml

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 : non pris en chargeDetection to CoreML : non 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)
CLI
libreyolo export model=LibreYOLO7b.pt format=onnx imgsz=640libreyolo export model=LibreYOLO7b.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("LibreYOLO7b.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
LibreYOLO7b.pt640mit

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
YOLOv7, MultimediaTechLab
Licence du projet d'origine
MIT
Source du projet d'origine
github.com/MultimediaTechLab/YOLO
Code de LibreYOLO
MIT
Poids
MIT, republiés sur huggingface.co/LibreYOLO
Interprétation
MIT is a permissive license, so these weights can be used in commercial and closed-source products. The one standing obligation is to keep the license text and the copyright notice, Kin-Yiu Wong and Hao-Tang Tsui, with any copy you redistribute. It places no condition on your own application code, and a model you train yourself on your own data is yours. The port follows the authors' MIT re-release of YOLOv7, not the GPL-3.0 WongKinYiu/yolov7 repository that carries the same model, so the permissive terms come from the source LibreYOLO actually derives from.

Citation

@inproceedings{wang2022yolov7,
      title={{YOLOv7}: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectors},
      author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
      year={2023},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
}

Copié depuis le bloc de citation des auteurs sur github.com/MultimediaTechLab/YOLO#citations.

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.