ResNet
ResNet est un classifieur d'images composé de blocs résiduels, des connexions de saut qui permettent d'ajouter bien davantage de couches à un réseau sans la perte d'exactitude que subissent les empilements convolutionnels profonds ordinaires. LibreYOLO le prend en charge pour une seule tâche : la classification.
- Tâches
- classify
- Tailles
- 18, 34, 50, 101 at 224 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 Apache-2.0, poids Apache-2.0. Usage commercial
Installer
ResNet 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("LibreResNet50-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)libreyolo predict model=LibreResNet50-cls.pt source=cat.jpg save=TrueL'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
Quatre profondeurs sont entraînées et évaluées de la même manière. Le choix de
l'une d'elles constitue donc 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.train(data="imagenette160", epochs=5)libreyolo train model=LibreResNet50-cls.pt data=imagenette160 epochs=5libreyolo train model=LibreResNet50-cls.pt data=imagenette160 \ epochs=50 device=0,1 batch=-1Avec 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 de ResNet.
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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])libreyolo val model=LibreResNet50-cls.pt data=imagenette160Exporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX : pris en charge | classify to TorchScript : pris en charge | classify to ExecuTorch : pris en charge | classify to TensorRT : pris en charge | classify to OpenVINO : pris en charge | classify to Paddle : non pris en charge | classify to MNN : non pris en charge | classify to RKNN : non pris en charge | classify to ncnn : pris en charge | classify to TFLite : pris en charge | classify to CoreML : non pris en charge | classify 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreResNet50-cls.pt format=onnxlibreyolo export model=LibreResNet50-cls.pt format=tensorrt half=Truefrom 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("LibreResNet50-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Checkpoints
Tous les fichiers de poids publiés pour cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| classify | ||
| LibreResNet18-cls.pt | 224 | apache-2.0 |
| LibreResNet34-cls.pt | 224 | apache-2.0 |
| LibreResNet50-cls.pt | 224 | apache-2.0 |
| LibreResNet101-cls.pt | 224 | apache-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
- ResNet, Microsoft Research Asia
- Licence du projet d'origine
- Apache-2.0
- Source du projet d'origine
- github.com/huggingface/pytorch-image-models
- 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 the original Microsoft Research Asia design; the pretrained weights LibreYOLO ships are timm's resnet{18,34,50,101}.a1_in1k reproduction (the "ResNet Strikes Back" A1 recipe), trained by Ross Wightman and the timm contributors on ImageNet-1k and licensed Apache-2.0 there. LibreYOLO's module and attribute names mirror timm so the state dict loads unchanged and inference matches bit-identically.
Citation
@article{He2015,
author = {Kaiming He and Xiangyu Zhang and Shaoqing Ren and Jian Sun},
title = {Deep Residual Learning for Image Recognition},
journal = {arXiv preprint arXiv:1512.03385},
year = {2015}
}Copié depuis le bloc de citation des auteurs sur github.com/KaimingHe/deep-residual-networks#citation.