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.
- Licences
- Code MIT, poids MIT. Usage commercial
Installer
YOLOv7 ne nécessite aucun extra au-delà du package de base.
pip install libreyoloPrédire
Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis en cache localement.
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)libreyolo predict model=LibreYOLO7b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueL'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
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.train(data="my-dataset.yaml", epochs=300, imgsz=640, batch=16, lr0=0.01)libreyolo train model=LibreYOLO7b.pt data=my-dataset.yaml \ epochs=300 imgsz=640 batch=16 lr0=0.01from 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreYOLO7b.pt data=my-dataset.yamlExporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX : pris en charge | Detection to TorchScript : pris en charge | Detection to ExecuTorch : pris en charge | Detection to TensorRT : pris en charge | Detection to OpenVINO : pris en charge | Detection to Paddle : non pris en charge | Detection to MNN : non pris en charge | Detection to RKNN : non pris en charge | Detection to ncnn : pris en charge | Detection to TFLite : non pris en charge | Detection to CoreML : non pris en charge | Detection 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO7b.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)libreyolo export model=LibreYOLO7b.pt format=onnx imgsz=640libreyolo export model=LibreYOLO7b.pt format=tensorrt imgsz=640 half=Truefrom 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.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| Detection | ||
| LibreYOLO7b.pt | 640 | mit |
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.