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.
Origine
ResNet par Microsoft Research Asia, Apache-2.0. Article, source
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.

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("LibreResNet50-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreResNet50-cls.pt source=cat.jpg save=True

L'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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.train(data="imagenette160", epochs=5)
CLI
libreyolo train model=LibreResNet50-cls.pt data=imagenette160 epochs=5
Multi-GPU
libreyolo train model=LibreResNet50-cls.pt data=imagenette160 \  epochs=50 device=0,1 batch=-1

Avec 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreResNet50-cls.pt data=imagenette160

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX : pris en chargeclassify to TorchScript : pris en chargeclassify to ExecuTorch : pris en chargeclassify to TensorRT : pris en chargeclassify to OpenVINO : pris en chargeclassify to Paddle : non pris en chargeclassify to MNN : non pris en chargeclassify to RKNN : non pris en chargeclassify to ncnn : pris en chargeclassify to TFLite : pris en chargeclassify to CoreML : non pris en chargeclassify 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreResNet50-cls.pt format=onnxlibreyolo export model=LibreResNet50-cls.pt format=tensorrt half=True
Utiliser le fichier exporté
from 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.

FichierEntrée (px)Licence des poids
classify
LibreResNet18-cls.pt224apache-2.0
LibreResNet34-cls.pt224apache-2.0
LibreResNet50-cls.pt224apache-2.0
LibreResNet101-cls.pt224apache-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
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.

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.