RetinaNet
RetinaNet est un détecteur à une étape entraîné avec la focal loss, qui réduit le poids des négatifs faciles afin qu'une grille dense d'ancres conserve une bonne exactitude sans étape distincte de proposition. LibreYOLO porte l'implémentation torchvision pour la détection.
- Tâches
- detection
- Tailles
- r50, r50v2 at 800 px
- Installer
pip install libreyolo- Niveau de support
- Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
- Licences
- Code BSD-3-Clause, poids BSD-3-Clause. Usage commercial
Installer
RetinaNet ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation 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("LibreRetinaNetr50v2.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreRetinaNetr50v2.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueL'objet Results renvoyé est le même pour toutes les familles, remplacer le
détecteur ne demande donc de modifier qu'une ligne. conf et iou définissent
les seuils de confiance et de NMS ; RetinaNet conserve son étape NMS amont sur
la grille dense d'ancres. Consultez la prédiction pour les
sources, le streaming et le traitement des résultats.
Variantes
Deux tailles sont proposées, toutes deux avec ResNet-50 et une pyramide de
caractéristiques : r50 utilise la tête originale, tandis que r50v2 la
remplace par une tête GroupNorm et un bloc P6 plus large alimenté par la dernière
étape du backbone au lieu de la sortie FPN.
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 dans le format
utilisé pour l'entraînement.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRetinaNetr50v2.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreRetinaNetr50v2.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 : non pris en charge | Detection to ExecuTorch : non pris en charge | Detection to TensorRT : non pris en charge | Detection to OpenVINO : non 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 : non pris en charge | Detection to TFLite : non pris en charge | Detection to CoreML : non pris en charge | Detection to Core AI : non pris en charge |
RetinaNet s'exporte uniquement vers ONNX, avec un batch de 1. RetinaNet
redimensionne les images vers une entrée variable qui conserve les proportions.
LibreYOLO force donc dynamic=True quelle que soit la valeur fournie, afin que
le graphe reste valide pour des sources de formes différentes. Un fichier
.onnx exporté se recharge par LibreYOLO() à partir de son suffixe de fichier
et renvoie le même objet Results.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRetinaNetr50v2.pt")model.export(format="onnx", imgsz=800)libreyolo export model=LibreRetinaNetr50v2.pt format=onnx imgsz=800from 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("LibreRetinaNetr50v2.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 | ||
| LibreRetinaNetr50.pt | 800 | bsd-3-clause |
| LibreRetinaNetr50v2.pt | 800 | bsd-3-clause |
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
- RetinaNet, PyTorch
- Licence du projet d'origine
- BSD-3-Clause
- Source du projet d'origine
- github.com/pytorch/vision
- Code de LibreYOLO
- MIT
- Poids
- BSD-3-Clause, republiés sur huggingface.co/LibreYOLO
- Interprétation
- BSD-3-Clause is a permissive license, so this code can be used in commercial and closed-source products with no obligation on your own application code. It asks only that you keep the copyright notice and disclaimer with any copy you redistribute, and it carries no patent grant. The two published checkpoints used for parity testing are not distributed in the LibreYOLO source tree: torchvision's own documentation notes that a pretrained model's terms may depend on its training data, so each Hugging Face mirror ships the BSD text on that implied basis and repeats the caveat rather than issuing an explicit checkpoint-specific grant.