timm documentation

Journal des modifications

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.0.31).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Journal des modifications

24 octobre 2026

  • forward_intermediates() et prune_intermediate_layers() sont désormais pris en charge par tous les modèles. Ajouts récents pour CSPNet, NFNet, DLA, DenseNet (#2870, merci à ghaith-mq), CoaT, ConViT, ConvMixer, CrossViT, HRNet, Inception-v3, Inception-ResNet-v2, NASNet, PNASNet, SelecSLS, SENet, Sequencer2d, VGG, Visformer, Xception et Aligned Xception, avec prune_intermediate_layers() pour les encodeurs NaFlexViT et MobileNetV5. CoaT, ConViT, ConvMixer, CrossViT et Visformer bénéficient du support de features_only.
  • prune_intermediate_layers() corrections
    • prune_head=True supprime l’ensemble de la tête (normalisation de la tête, couches pré-logits, pooling d’attention) afin que le modèle élagué ne conserve aucun paramètre inutilisé (DDP sans find_unused_parameters), à l’exception de CoaT, CrossViT et HRNet lorsque seuls certains de leurs échelles / branches parallèles sont conservées. Passez prune_head=False pour la conserver.
    • Le podage d'un modèle hiérarchique à un stade antérieur supprime la norme finale et la tête dimensionnées pour le dernier stade, forward_features() s'arrête à la dernière fonction conservée et num_features / head_hidden_size correspondent à celle-ci. Le podage à la fonction de tige supprime le pooling de tige qui la suit.
    • Corrections pour le checkpointing des gradients, stop_early, la suppression du jeton de classe / du post-réseau, et le TorchScript des modèles élagués / feature_cls='getter' dans de nombreuses familles.
  • head_hidden_size est la largeur réelle pré-logits (pooled) dans tous les modèles, y compris le pooling concat (catavgmax) et après reset_classifier(). Les types de pooling qu’un modèle ne peut pas appliquer lèvent désormais une erreur à la création / au reset, au lieu d’être ignorés silencieusement ou d’échouer dans le forward.
  • Autres correctifs : la sortie de VOLO avec num_classes=0 est l’embedding du jeton de classe (correspondant à forward_head(pre_logits=True)), vit_pe_core reset_classifier() avec un pool non map supprime le pool d’attention, l’export du type de pool via save_for_hf lit le pooling actuel de la tête, et les checkpoints sans tête (num_classes=0) de Swin, SwinV2, DaViT et NextViT se rechargent correctement.

13 octobre 2026

  • Balayages d’hyperparamètres via un nouveau sweep.py : recherche par grille ou aléatoire sur n’importe quel argument de train.py, un --config effectif par tâche, exécution sur un pool de GPU locaux et reprise possible. Les balayages WSD entraînent un tronc stable par combinaison d’hyperparamètres et dérivent des cooldowns indépendants à partir de ses points de contrôle de jalon, comparant l’annealing à plusieurs budgets pour une fraction du coût des exécutions complètes. Consultez la documentation d’entraînement.
  • train.py : --resume auto reprend sur place depuis le last.pth.tar propre à l’expérience (l’historique des points de contrôle, model_best et summary.csv restent cohérents), --stop-epoch N s’arrête sans modifier le planning, --save-epochs N [N ...] conserve des instantanés milestone-N.pth.tar, et les valeurs YAML de --config sont validées par rapport aux arguments du script.
  • Déprécier PlateauLRScheduler (--sched plateau). Les planificateurs timm sont des fonctions sans état de l'époque ou du nombre de mises à jour ; le planificateur plateau piloté par métrique ne s'y prêtait pas et son état n'est pas sauvegardé, si bien que la reprise n'était jamais exacte. Utilisez cosine ou wsd.
  • Docs : nouvelle page API des modèles, pages de familles de modèles générées pour chaque module de modèle remplaçant les anciennes pages par modèle, et pages de référence étendues pour les données / pertes / modèles.
  • Corrections de cohérence de l’API des modèles : reset_classifier() conserve le pooling actuel dans tous les modèles, les arguments de constructeur inconnus déclenchent TypeError partout, dynamic_img_size pour la famille Swin, décroissance du taux d’apprentissage par couche pour LeViT, noms de no_weight_decay qui ne correspondaient à aucun paramètre (NesT, SwinV2, XCiT, FocalNet), état de redimensionnement enregistré pour toutes les familles set_input_size.
  • Corrections : GCViT mélangeait les images globales de requête au sein d'un lot, checkpointing de gradient pour RDNet et MobileNetV5, taille d'entrée de test obsolète pour save_for_hf, redimensionnement rectangulaire pour EfficientViT (MSRA), erreurs de conversion d'image dans ImageDataset (#2846). reparameterize_model déplacé vers timm.models.

9 octobre 2026

  • Ajout de CSPNeXt (backbone de RTMDet) cspnext_{tiny,s,m,l,x} avec des poids de classification ImageNet-1k convertis depuis OpenMMLab. Merci à Munehiro Kobayashi.
  • Améliorations des optimiseurs
    • Implémentations Foreach (multi-tenseur) pour RMSpropTF, LaProp, LAMB, LARS, AdaBelief. Les étapes Foreach sont découpées en fonction de la taille du cache L2 du périphérique (TIMM_FOREACH_CHUNK_SIZE pour définir une valeur personnalisée).
    • RMS update clipping (clipping_threshold) pour AdamWLegacy / NAdamW, nouvelles variantes NovoGrad de décroissance de poids découplée / corrigée (novogradw, novogradc).
    • Corrections de justesse pour de nombreux optimiseurs, notamment la correction du weight decay avec mise à jour in-place du tenseur lr, la résolution des blocages des mises à jour FP16 à faible lr, la gestion des états à faible précision (Kron, AdaBelief, NovoGrad) et la suppression de la modification in-place de p.grad.
    • Corrections de torch.compile / graphes CUDA pour Adopt, SGDW, AdafactorBV.
    • Nouvelle documentation sur les optimiseurs, couvrant l'utilisation, les conventions de nommage et les familles.
  • Ajouter le planificateur de taux d’apprentissage WSD (warmup-stable-decay) (--sched wsd, --lr-decay-fn, --lr-stable-timescale).
  • Corrections du Model EMA pour les modèles bfloat16 / float16. Les EMA bfloat16 de ModelEmaV3 utilisent par défaut l’arrondi stochastique, tandis que les modèles float16 conservent un EMA en float32.
  • Redimensionnement des modèles via set_input_size()
    • Prise en charge étendue des modèles à fenêtre (MaxViT, CoAtNet, BEiT, EfficientViT-MSRA, ViT relpos, famille Swin).
    • Swin / SwinV2 / SwinV2-CR conservent le ratio fenêtre/grille de chaque étape lors du redimensionnement ; un appel à la taille actuelle est désormais sans effet. Prise en charge de window_size / window_ratio par étape. Corrige les modèles Swin S3 et SwinV2 window16 / window12 qui modifiaient les sorties lors d'un appel de même taille.
    • Correction des valeurs NaN dans SwinV2 avec une taille de fenêtre de 1, des tailles de fonction de stage impaires et le redimensionnement hybride ViT sur CUDA / basse précision.
  • Correction de la gestion du reste de l'accumulation des gradients (#2821), de l'échantillonnage distribué / de l'augmentation répétée sur les petits jeux de données, des remplacements de la source pré-entraînée et de la configuration de l'enseignant pour la distillation, de train.py avec --sched none, et de l'interpolation du recadrage centré pour l'évaluation sur des entrées non carrées.
  • Corrections de la compatibilité de l’export ONNX sur les différentes versions de PyTorch, corrections de la cohérence du dropout, et autres corrections de l’initialisation sur le méta-appareil.

25 septembre 2026

  • Prise en charge de la classification multi-étiquettes
    • Ajoutez --task multilabel à train.py / validate.py, entraîné avec BCE (MultiLabelClassificationTask). Consultez la documentation d’entraînement pour plus de détails.
    • Les cibles peuvent être des listes d’indices de classes, des vecteurs multi-hot denses (--target-format multihot) ou un champ binaire par classe (--target-key a,b,c), avec des chemins / vers des champs imbriqués. Pris en charge par les lecteurs hfds, hfids, tfds (clés multi-champs) et wds.
    • Les chargeurs Mixup / CutMix et NaFlex prennent en charge les cibles multi-étiquettes. Le lissage d'étiquettes rapproche chaque cible de 0,5 et est défini sur 0 par défaut pour le multi-étiquettes.
    • La validation rapporte le mAP (la valeur par défaut de --eval-metric) ainsi que les F1 micro, macro et par échantillon, avec un seuil de F1 défini par --multilabel-threshold.
    • Les nouveaux évaluateurs au niveau du jeu de données calculent les métriques sur l'ensemble de validation complet à travers les rangs distribués, en excluant le bourrage du répartiteur distribué.
    • Consultez par exemple la collection timm multi-label image datasets sur le Hub pour des jeux de données d’exemple ou de référence fonctionnant immédiatement.
  • Nouvelles options de perte via --loss
    • Poly-1, Two-way, ZLPR et pertes équilibrées par distribution.
    • Pondération par fréquence des classes pour BCE / ASL, calculée à partir des comptes de labels collectés par class_weights.py.
    • ASL est désormais compatible fp16 et utilise par défaut la réduction batchmean
  • Refactorisation de RoPE
    • Étendre l’augmentation des coordonnées RoPE réservée à l’entraînement (décalage, bruit, rééchelonnement) aux embeddings axiaux, mixtes et MRoPE, en partageant les utilitaires avec DINOv3 tout en préservant son comportement d’augmentation existant.
    • Ajouter les options grid_type et normalize_coords aux constructeurs Fourier / rotary (build_fourier_pos_embed, build_rotary_pos_embed) et aux modules RoPE axiaux, ainsi que des sections MRoPE configurables dans EVA.
    • Prise en charge de rotate_half dans la sortie en tuple de RotaryEmbedding et dans la variante de fabrique base.
    • Correction de la transmission de la rotation-layout dans l'attention pooling de EVA, NaFlexViT et MRoPE.
    • Conservez les tampons de fréquence et de coordonnées RoPE non appris au moins en float32 dans les modèles half/bfloat16, et calculez les phases RoPE mixtes en float32 sous autocast. Ces corrections de précision peuvent modifier les sorties des modèles à basse précision.
    • Correction des embeddings RoPE par lots pour les grilles de pixels et le redimensionnement de la forme de référence. DINOv3 grid_indexing='xy' échange désormais les canaux de coordonnées comme demandé ; les sorties pour ces configurations précédemment incorrectes changent.
    • Faire en sorte que apply_rot_embed, apply_rot_embed_cat et apply_rot_embed_list renvoient le dtype de chaque entrée, en effectuant le cast après la rotation sans d’abord convertir sin/cos en un type de plus faible précision.
    • Consolider les deux modules RoPE axiaux derrière une base privée. Les appels existants restent compatibles, mais le tampon bands est désormais conservé dans les modes en cache et dynamique (rope.bands n'est plus None en mode en cache).
  • Corrections du passage en mode entraînement/évaluation et du changement de dtype pour LeViT et les modèles associés (EfficentFormer*, EfficientViT-MSRA, TinyViT) avec biais d'attention mis en cache.

22 septembre 2026

  • Ajouter les poids de la tour de vision de Qwen-Drive-1.0-4B.
  • Corriger la réutilisation et la synchronisation du flux du chargeur de préchargement ainsi qu’AugMix pour les images non carrées et à bande unique.
  • Correction de l'échelle du taux d'apprentissage des convolutions pour AdaMuon, de la coupure pour AdafactorBigVision, de l'historique des gradients pour MARS et du chargement des points de contrôle pour Kron.
  • Corrige les caches de biais d'attention obsolètes lors de l'évaluation, les métadonnées des fonctionnalités des modèles élagués, le bourrage du pooling max dilaté et le mode de gradient de perte asymétrique.
  • Release 1.0.30

10-11 septembre 2026

  • Ajout des variantes de classifieur et d’encodeur ViT pour Qwen3-VL / Qwen3.5 / Qwen3.8, y compris les classifieurs avec et sans le fusionneur spatial natif.
  • Ajout des ViTs Sapiens2 avec prise en charge de EVA et NaFlexViT. Les deux ajouts de modèles incluent des poids natifs du Hub timm. Merci à Yonghye Kwon.
  • Ajout de iFormer avec des poids natifs du Hub timm. Merci à Ryan Hou.
  • Ajout d'EfficientViM avec des poids natifs du Hub timm. Merci à smellslikeml.
  • Ajout des classifieurs et encodeurs ViT de DeepSeek-V4 / V4.1 avec des poids natifs du Hub timm. Merci à Yonghye Kwon.
  • Bascule de l’interpolation de position par défaut de NaFlex SigLIP, de la sélection de la taille d’entrée de inference.py et amélioration de l’analyse de --model-kwargs.
  • Correction de la construction sur le méta-appareil et de la prise en charge des usines d'appareil/dtype pour quelques modèles ; déplacement des tests de configuration vers le méta pour accélérer la CI, couverture du contexte méta.

27 août 2026

  • Ajouter le modèle et les poids LowFormer
  • Corriger ou fusionner une série de bugs réels mais mineurs ou peu courants, détectés par les agents
  • Release 1.0.29

11 août 2026

  • Ajout des définitions de modèles et des poids préentraînés pour
  • Ajouter la planification par lot de l’image et de la taille du lot pour l’entraînement non-NaFlex, y compris les plans de résolution progressifs allant du petit au grand.
  • Améliorer NaFlexViT avec des masques d'attention basés uniquement sur les clés, un échantillonnage de positions compatible avec la compilation et économe en mémoire, ainsi qu'une interpolation de patches variables mise en cache.
  • Améliorer le chemin de l’usine de modèles et la gestion des points de contrôle ; corriger le rééchantillonnage des embeddings positionnels pour les jetons égaux.

10 juillet 2026

  • Améliorer la prise en charge de l'optimiseur torch.compile et du taux d'apprentissage des tenseurs.
  • Étendre la mise en page des patches de NaFlexViT (pour NaFlex-CLAP) et la prise en charge de forward_intermediates (entrée dictionnaire NaFlex).
  • Renforcer le chargement de pickle et améliorer l’inférence avec des étiquettes personnalisées.
  • Release 1.0.28

27 mai 2026

  • Ajout des définitions de modèles et des poids préentraînés pour les modèles EUPE ViT (style DINOv3) et ConvNeXt. Consultez le paper Efficient Universal Perception Encoder.
  • Ajout des définitions de modèles et des poids préentraînés pour les ViT (de type DINOv2) TIPSv2. Voir l'article TIPSv2.

8 mai 2026

  • Release 1.0.27

23 avril 2026

  • Ajout des encodeurs ViT de Gemma4 avec prise en charge du pipeline NaFlex (aspect/taille variables par image). Merci à Yonghye Kwon
  • Prise en charge des poids DINOv3 dans NaFlexVit. Merci à Yonghye Kwon
  • Quelques améliorations du comportement du taux d'apprentissage lors du repli de Muon (AdamW/NadamW)

23 mars 2026

  • Améliorer la sécurité de la gestion des points de contrôle pickle. Par défaut, toutes les opérations de chargement utilisent weights_only=True et un paramètre safe_global est ajouté pour ArgParse.
  • Améliorer la gestion des masques d'attention pour les modèles et couches ViT/EVA de base. Résoudre les masques booléens et transmettre is_causal pour les tâches SSL.
  • Correction de l'utilisation des jetons de classe et d'enregistrement avec ViT et sans intégration de position activée.
  • Ajout de la représentation affinée par patch (PRR) en tant qu’option de pooling dans ViT. Merci à Sina (https://github.com/sinahmr).
  • Améliorer la cohérence des dimensions de la projection de sortie / du MLP pour les couches de pooling d'attention.
  • Optimisation du modèle Hiera F.SDPA pour permettre l'utilisation du noyau Flash Attention.
  • Précaution ajoutée à l'optimiseur SGDP.
  • Version 1.0.26. Première version de maintenance depuis mon départ de Hugging Face.

23 février 2026

  • Ajouter la prise en charge de l’entraînement par distillation de jetons aux enveloppes de tâches de distillation
  • Supprimer certaines utilisations de torch.jit en préparation de la dépréciation officielle
  • Ajout d'une précaution à l'optimiseur AdamP
  • Appeler reset_parameters() même lors de l’initialisation sur le méta-appareil afin que les tampons soient initialisés avec des astuces comme init_empty_weights
  • Ajuster l'optimiseur Muon pour fonctionner avec DTensor/FSDP2 (utiliser au lieu de clamp_min, branche NS alternative pour DTensor)
  • Release 1.0.25

21 janv. 2026

  • Compat Break: Correction d'une omission concernant les biais QKV par rapport aux biais MLP dans ParallelScalingBlock (& DiffParallelScalingBlock)
    • N'affecte aucun modèle timm entraîné, mais peut affecter les utilisations en aval.

5 et 6 janvier 2026

  • Release 1.0.24
  • Ajout de nouveaux fichiers CSV de résultats de benchmark pour le chronométrage de l’inférence sur tous les modèles avec des cartes RTX Pro 6000, 5090 et 4090, avec PyTorch 2.9.1
  • Correction de l'erreur de module déplacé dans le chemin d'importation obsolète timm.models.layers qui affecte les importations héritées
  • Release 1.0.23

30 déc. 2025

12 déc. 2025

  • Ajout du modèle CSATV2 (merci à https://github.com/gusdlf93) — un modèle léger mais haute résolution avec tige DCT & attention spatiale. https://huggingface.co/Hyunil/CSATv2
  • Ajout du support des optimiseurs AdaMuon et NAdaMuon à l’implémentation Muon existante de timm. Apparaît plus compétitif par rapport à AdamW avec des hyperparamètres familiers pour les tâches d’images.
  • Nettoyage des PR en fin d'année, fusion des aspects de plusieurs PR ouvertes depuis longtemps
  • Mise à jour des tests unitaires vers PyTorch 2.9.1 + Python 3.13 pour la borne supérieure, et maintien de PyTorch 1.13 + Python 3.10 pour la borne inférieure

1er déc. 2025

  • Ajouter une abstraction de tâches légère, ajouter la prise en charge de la distillation des logits et des caractéristiques au script d’entraînement via de nouvelles tâches.
  • Supprimer l'ancienne prise en charge d'APEX AMP

4 nov. 2025

  • Correction du bug d’initialisation de LayerScale / LayerScale2d (valeurs d’initialisation ignorées), introduit dans la version 1.0.21. Merci à https://github.com/Ilya-Fradlin
  • Release 1.0.22

31 octobre 2025 🎃

  • Mettre à jour les fichiers csv des résultats imagenet & OOD variant pour inclure quelques nouveaux modèles et vérifier la justesse sur plusieurs versions de torch & timm
  • Poids des modèles EfficientNet-X et EfficientNet-H B5 ajoutés dans le cadre d'une recherche d'hyperparamètres pour AdamW vs Muon (itérations toujours en cours sur les exécutions Muon)

16-20 octobre 2025

  • Ajouter une implémentation de l'optimiseur Muon (basé sur https://github.com/KellerJordan/Muon) avec des personnalisations
    • flexibilité accrue et gestion améliorée des poids de convolution, ainsi que des solutions de repli pour les formes de poids non adaptées à l'orthogonalisation
    • Légère amélioration de la vitesse des itérations NS en réduisant les allocations et en utilisant des opérations (b)add(b)mm fusionnées
    • utilise par défaut AdamW (ou NAdamW si nesterov=True) pour les mises à jour si muon n'est pas adapté à la forme du paramètre (ou s'il est exclu via le drapeau de groupe de paramètres)
    • comme l'implémentation torch, sélectionnez parmi plusieurs fonctions d'ajustement de l'échelle du taux d'apprentissage via adjust_lr_fn
    • sélectionner parmi plusieurs préréglages de coefficients NS ou spécifier les vôtres via ns_coefficients
  • Les 2 premières étapes de l’initialisation du modèle sur l’appareil « meta » sont prises en charge
    • Correction de plusieurs opérations qui cassaient la création dans le contexte d’appareil ‘meta’
    • Ajouter la prise en charge des mots-clés de fabrique de device et de dtype à tous les modèles et modules (tout ce qui hérite de nn.Module) dans timm
  • Champs de licence ajoutés aux cfg pré-entraînés dans le code
  • Release 1.0.21

21 septembre 2025

  • Remapper les balises de poids DINOv3 ViT de lvd_1689m -> lvd1689m pour correspondre (idem pour sat_493m -> sat493m)
  • Release 1.0.20

17 septembre 2025

23 juillet 2025

  • Ajouter la méthode set_input_size() aux modèles EVA, utilisée par OpenCLIP 3.0.0 pour permettre le redimensionnement des modèles d'encodeurs basés sur timm.
  • Release 1.0.18, nécessaire pour les modèles PE-Core S & T dans OpenCLIP 3.0.0
  • Correction d'un petit problème de typage qui cassait la compatibilité avec Python 3.9. Publication de la version correcte 1.0.19.

21 juillet 2025

  • Prise en charge de ROPE ajoutée à NaFlexViT. Tous les modèles couverts par la base EVA (eva.py), y compris EVA, EVA02, Meta PE ViT, timm SBB ViT avec ROPE et Naver ROPE-ViT, peuvent désormais être chargés dans NaFlexViT lorsque use_naflex=True est passé lors de la création du modèle
  • Ajout de plus d'encodeurs Meta PE ViT, y compris des variantes small/tiny, des variantes lang avec tiling, et plus de variantes spatiales.
  • PatchDropout corrigé avec NaFlexViT et également avec les modèles EVA (régression après l'ajout de Naver ROPE-ViT)
  • Correction de l'ordre XY avec grid_indexing='xy', impactant l'utilisation d'images non carrées en mode 'xy' (seuls ROPE-ViT et PE sont concernés).

7 juillet 2025

  • Ajustements du backbone MobileNet-v5 pour améliorer le comportement de Google Gemma 3n (à associer aux poids officiels mis à jour)
    • Ajouter un biais de tige (mis à zéro dans les poids mis à jour, rupture de compatibilité avec les anciens poids)
    • GELU -> GELU (approximation tanh). Un changement mineur pour se rapprocher de JAX
  • Ajouter deux arguments à la prise en charge de la décroissance par couche : une limite d'échelle minimale et un seuil d'échelle « sans optimisation »
  • Ajouter des variantes ‘Fp32’ de LayerNorm, RMSNorm et SimpleNorm qui peuvent être activées pour forcer le calcul de la norme en float32
  • Certaines annotations de types et le nettoyage des arguments pour les couches norm, norm+act ont été effectués avec ce qui précède
  • Prise en charge de Naver ROPE-ViT (https://github.com/naver-ai/rope-vit) dans eva.py, ajout du module RotaryEmbeddingMixed pour le mode mixte, poids sur HuggingFace Hub
modelimg_sizetop1top5param_count
vit_large_patch16_rope_mixed_ape_224.naver_in1k22484.8497.122304.4
vit_large_patch16_rope_mixed_224.naver_in1k22484.82897.116304.2
vit_large_patch16_rope_ape_224.naver_in1k22484.6597.154304.37
vit_large_patch16_rope_224.naver_in1k22484.64897.122304.17
vit_base_patch16_rope_mixed_ape_224.naver_in1k22483.89496.75486.59
vit_base_patch16_rope_mixed_224.naver_in1k22483.80496.71286.44
vit_base_patch16_rope_ape_224.naver_in1k22483.78296.6186.59
vit_base_patch16_rope_224.naver_in1k22483.71896.67286.43
vit_small_patch16_rope_224.naver_in1k22481.2395.02221.98
vit_small_patch16_rope_mixed_224.naver_in1k22481.21695.02221.99
vit_small_patch16_rope_ape_224.naver_in1k22481.00495.01622.06
vit_small_patch16_rope_mixed_ape_224.naver_in1k22480.98694.97622.06
  • Certaines opérations de nettoyage des modules ROPE, des fonctions utilitaires et de l'enregistrement des feuilles de traçage FX
  • Préparation de la version 1.0.17

26 juin 2025

  • Backbone MobileNetV5 (variante avec encodeur uniquement) pour l'encodeur d'images de Gemma 3n
  • Version 1.0.16 publiée

23 juin 2025

  • Ajout du redimensionnement des embeddings de position 2D et factorisés basé sur F.grid_sample à NaFlexViT. Plus rapide lorsqu’il y a beaucoup de tailles différentes (basé sur un exemple de https://github.com/stas-sl).

  • Accélérer encore le rééchantillonnage de l'incorporation de patch en remplaçant vmap par matmul (basé sur un extrait de https://github.com/stas-sl).

  • Ajouter 3 points de contrôle natifs NaFlexViT initiaux créés lors des tests, ImageNet-1k et 3 configurations d’embeddings de position différentes avec les mêmes hyperparamètres.

    ModèlePrécision Top-1Top-5 AccParamètres (M)Longueur de séquence d'évaluation
    naflexvit_base_patch16_par_gap.e300_s576_in1k83.6796.4586.63576
    naflexvit_base_patch16_parfac_gap.e300_s576_in1k83.6396.4186.46576
    naflexvit_base_patch16_gap.e300_s576_in1k83.5096.4686.63576
  • Prise en charge du gradient checkpointing pour forward_intermediates et correction de certains bugs de checkpointing. Merci à https://github.com/brianhou0208

  • Ajouter le « corrected weight decay » (https://arxiv.org/abs/2506.02285) en tant qu’option pour les optimiseurs AdamW (legacy), Adopt, Kron, Adafactor (BV), Lamb, LaProp, Lion, NadamW, RmsPropTF, SGDW

  • Passer les modèles PE (encodeur de perception) ViT de Switch à l'utilisation de poids timm natifs plutôt qu'à un remappage à la volée

  • Correction du bug du flux cuda dans le chargeur de préchargement

5 juin 2025

  • Code initial du modèle NaFlexVit. NaFlexVit est un Vision Transformer doté de :
    1. Encapsulation de l'embedding et du position encoding dans un module unique
    2. Prise en charge de l'intégration de patch nn.Linear sur des entrées pré-patchifiées (dictionnaires)
    3. Prise en charge de l'aspect variable et de la résolution variable NaFlex (SigLip-2 : https://arxiv.org/abs/2502.14786)
    4. Prise en charge de la taille de patch variable de FlexiViT (https://arxiv.org/abs/2212.08013)
    5. Prise en charge de l'incorporation de position fractionnaire/factorisée de NaViT (https://arxiv.org/abs/2307.06304)
  • Les modèles vit existants dans vision_transformer.py peuvent être chargés dans le modèle NaFlexVit en ajoutant le drapeau use_naflex=True à create_model
    • Quelques poids natifs arrivent bientôt
  • Un pipeline de données NaFlex complet est disponible, permettant l'entraînement, l'ajustement fin et l'évaluation avec des images de rapport et de taille variables.
    • Pour l'activer dans train.py et validate.py, ajoutez l'argument --naflex-loader, qui doit être utilisé avec un NaFlexVit
  • Pour évaluer un ViT existant (classique) chargé dans le modèle NaFlexVit avec le pipeline de données NaFlex :
    • python validate.py /imagenet --amp -j 8 --model vit_base_patch16_224 --model-kwargs use_naflex=True --naflex-loader --naflex-max-seq-len 256
  • L'entraînement comporte quelques arguments supplémentaires à noter
    • L'argument --naflex-train-seq-lens' spécifie les longueurs de séquences à choisir aléatoirement par lot pendant l'entraînement
    • L'argument --naflex-max-seq-len définit la longueur de séquence cible pour la validation
    • L'ajout de --model-kwargs enable_patch_interpolator=True --naflex-patch-sizes 12 16 24 active la sélection aléatoire de la taille des patches par lot avec interpolation
    • L’argument --naflex-loss-scale modifie le mode de mise à l’échelle de la perte par lot par rapport à la taille du lot, tandis que le chargement NaFlex de timm modifie la taille du lot pour chaque longueur de séquence

28 mai 2025

21 février 2025

  • Ajout des encodeurs d'image SigLIP 2 ViT (https://huggingface.co/collections/timm/siglip-2-67b8e72ba08b09dd97aecaf9)
    • Les versions NaFlex à résolution / ratio variable sont en cours de développement
  • Ajout des poids ViT « SO150M2 » entraînés avec les recettes SBB, excellents résultats, supérieurs à ImageNet par rapport à la tentative précédente avec moins d'entraînement.
    • vit_so150m2_patch16_reg1_gap_448.sbb_e200_in12k_ft_in1k - 88,1 % top-1
    • vit_so150m2_patch16_reg1_gap_384.sbb_e200_in12k_ft_in1k - 87,9 % top-1
    • vit_so150m2_patch16_reg1_gap_256.sbb_e200_in12k_ft_in1k - 87,3 % top-1
    • vit_so150m2_patch16_reg4_gap_256.sbb_e200_in12k
  • Poids InternViT-300M ‘2.5’ mis à jour
  • Release 1.0.15

1er février 2025

  • Pour information, PyTorch 2.6 et Python 3.13 sont testés et fonctionnent avec la version actuelle de main et la version publiée de timm

27 janvier 2025

19 janvier 2025

  • Correction du chargement des poids safetensor de LeViT, suppression du code de conversion qui aurait dû être désactivé
  • Ajout des poids ViT « SO150M » entraînés avec les recettes SBB, résultats corrects, mais forme non optimale pour le pré-entraînement/fine-tuning sur ImageNet-12k/1k
    • vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k_ft_in1k - 86,7 % top-1
    • vit_so150m_patch16_reg4_gap_384.sbb_e250_in12k_ft_in1k - 87,4 % top-1
    • vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k
  • Diverses corrections de frappe, de coquilles, etc.
  • Publication de la version 1.0.14 pour corriger le problème de LeViT

9 janvier 2025

  • Ajouter la prise en charge de l’entraînement et de la validation en bfloat16 ou float16 pur
  • Argument du nom de projet wandb ajouté par https://github.com/caojiaolong, utilisez arg.experiment pour le nom
  • Correction d'un ancien problème lié à l'enregistrement des points de contrôle qui ne fonctionnait pas sur les systèmes de fichiers sans prise en charge des liens durs (par exemple, les montages de systèmes de fichiers FUSE)
  • Sortie de la version 1.0.13

6 janvier 2025

  • Ajouter l’habillage torch.utils.checkpoint.checkpoint() dans timm.models avec use_reentrant=False par défaut, sauf si TIMM_REENTRANT_CKPT=1 est défini dans l’environnement.

31 déc. 2024

  • convnext_nano 384x384 pré-entraînement et fine-tuning sur ImageNet-12k. https://huggingface.co/models?search=convnext_nano%20r384
  • Ajouter les encodeurs AIM-v2 de https://github.com/apple/ml-aim, voir sur Hub : https://huggingface.co/models?search=timm%20aimv2
  • Ajouter les encodeurs PaliGemma2 de https://github.com/google-research/big_vision aux modèles PaliGemma existants, voir sur Hub : https://huggingface.co/models?search=timm%20pali2
  • Ajout des modèles manquants L/14 DFN2B 39B CLIP ViT, vit_large_patch14_clip_224.dfn2b_s39b
  • Corriger la couche et la fonction RmsNorm existantes pour correspondre à la formulation standard, et utiliser l’implémentation de PT 2.5 lorsque c’est possible. Déplacer l’ancienne implémentation dans la couche SimpleNorm, qui est un LN sans centrage ni biais. Seuls deux modèles timm l’utilisaient, et ils ont été mis à jour.
  • Autoriser la surcharge de l'argument cache_dir pour la création de modèles
  • Transmettre trust_remote_code pour l’habillage des jeux de données HF
  • Modèle inception_next_atto ajouté par le créateur
  • Précautions concernant l'optimiseur Adan, et options de décroissance du poids découplé pour Lamb
  • Certaines métadonnées feature_info corrigées par https://github.com/brianhou0208
  • Tous les poids de modèles OpenCLIP et JAX (CLIP, SigLIP, Pali, etc.) qui utilisaient un remappage au chargement ont reçu leurs propres instances sur le HF Hub afin de fonctionner avec le chargement basé sur hf-hub:, et donc avec le nouveau TimmWrapperModel de Transformers

28 nov. 2024

12 nov. 2024

  • Refactorisation de la fabrique d'optimiseurs
    • La nouvelle usine fonctionne en enregistrant les optimiseurs à l'aide de la classe de données OptimInfo, qui comporte certaines caractéristiques clés
    • Ajouter list_optimizers, get_optimizer_class, get_optimizer_info à la fonction create_optimizer_v2 refondue pour explorer les optimiseurs, obtenir des informations ou la classe
    • déprécier optim.optim_factory, déplacer les fonctions vers optim/_optim_factory.py et optim/_param_groups.py et encourager l’importation via timm.optim
  • Ajouter l'optimiseur Adopt (https://github.com/iShohei220/adopt)
  • Ajouter la variante « Big Vision » de l’optimiseur Adafactor (https://github.com/google-research/big_vision/blob/main/big_vision/optax.py)
  • Corriger l’implémentation originale d’Adafactor afin de choisir de meilleures dimensions de factorisation pour les convolutions
  • Ajuster l'optimiseur LAMB avec quelques améliorations de la fonctionnalité torch.where par rapport à l'original, et refactoriser légèrement le clipping
  • Prise en charge de la taille d'image dynamique dans ViT, DeiT et EVA, améliorée pour permettre le redimensionnement à partir de grilles de patches non carrés, merci à https://github.com/wojtke

31 octobre 2024

Ajout d’un ensemble de nouveaux poids ResNet & ResNet-V2 18/34 (bloc de base) très bien entraînés. Voir https://huggingface.co/blog/rwightman/resnet-trick-or-treat

19 octobre 2024

  • Nettoyage de l'utilisation de torch amp pour éviter les appels spécifiques à cuda, fusion du support des appareils Ascend (NPU) de MengqingCao qui devrait désormais fonctionner dans PyTorch 2.5 grâce à la nouvelle fonctionnalité de chargement automatique des extensions d'appareil. Testé également sur Intel Arc (XPU) dans Pytorch 2.5 et cela (presque) a fonctionné.

16 octobre 2024

  • Correction d'une erreur lors de l'import depuis le chemin obsolète timm.models.registry, augmentation de la priorité des avertissements d'obsolescence existants pour les rendre visibles
  • Porter les poids d'InternViT-300M (https://huggingface.co/OpenGVLab/InternViT-300M-448px) vers timm en tant que vit_intern300m_patch14_448

14 octobre 2024

  • Définitions des modèles ResNet 18/18d/34/34d en version Pre-activation (ResNetV2) ajoutées sur demande (poids en attente)
  • Release 1.0.10

11 octobre 2024

  • Modèle et poids de MambaOut (https://github.com/yuweihao/MambaOut) ajoutés. Une approche audacieuse des modèles de vision SSM sans SSM (essentiellement ConvNeXt avec gating). Un mélange de poids originaux et de variations et poids personnalisés.
modelimg_sizetop1top5param_count
mambaout_base_plus_rw.sw_e150_r384_in12k_ft_in1k38487.50698.428101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k28886.91298.236101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k22486.63298.156101.66
mambaout_base_tall_rw.sw_e500_in1k28884.97497.33286.48
mambaout_base_wide_rw.sw_e500_in1k28884.96297.20894.45
mambaout_base_short_rw.sw_e500_in1k28884.83297.2788.83
mambaout_base.in1k28884.7296.9384.81
mambaout_small_rw.sw_e450_in1k28884.59897.09848.5
mambaout_small.in1k28884.596.97448.49
mambaout_base_wide_rw.sw_e500_in1k22484.45496.86494.45
mambaout_base_tall_rw.sw_e500_in1k22484.43496.95886.48
mambaout_base_short_rw.sw_e500_in1k22484.36296.95288.83
mambaout_base.in1k22484.16896.6884.81
mambaout_small.in1k22484.08696.6348.49
mambaout_small_rw.sw_e450_in1k22484.02496.75248.5
mambaout_tiny.in1k28883.44896.53826.55
mambaout_tiny.in1k22482.73696.126.55
mambaout_kobe.in1k28881.05495.7189.14
mambaout_kobe.in1k22479.98694.9869.14
mambaout_femto.in1k28879.84895.147.3
mambaout_femto.in1k22478.8794.4087.3

Sept. 2024

21 août 2024

  • Modèles SBB ViT mis à jour, entraînés sur ImageNet-12k et affinés sur ImageNet-1k, qui rivalisent avec un grand nombre de modèles beaucoup plus volumineux et plus lents
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k87.43898.25664.11384
vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k86.60897.93464.11256
vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k86.59498.0260.4384
vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k85.73497.6160.4256
  • Poids de MobileNet-V1 1.25, EfficientNet-B1 et ResNet50-D avec la recette de base du défi MNV4
modeltop1top5param_countimg_size
resnet50d.ra4_e3600_r224_in1k81.83895.92225.58288
efficientnet_b1.ra4_e3600_r240_in1k81.44095.7007.79288
resnet50d.ra4_e3600_r224_in1k80.95295.38425.58224
efficientnet_b1.ra4_e3600_r240_in1k80.40695.1527.79240
mobilenetv1_125.ra4_e3600_r224_in1k77.60093.8046.27256
mobilenetv1_125.ra4_e3600_r224_in1k76.92493.2346.27224
  • Ajout de la prise en charge de l’architecture du backbone et du chargement des poids pour SAM2 (HieraDet)
  • Ajout des poids Hiera Small entraînés avec des embeddings de position abswin sur in12k et affinés sur 1k
modeltop1top5param_count
hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k84.91297.26035.01
hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k84.56097.10635.01

8 août 2024

28 juillet 2024

  • Ajout des poids mobilenet_edgetpu_v2_m avec la recette basée sur ra4 mnv4-small. 80,1 % top-1 @ 224 et 80,7 @ 256.
  • Release 1.0.8

26 juillet 2024

  • Plus de poids MobileNet-v4, pré-entraînement ImageNet-12k avec ajustements fins, et modèles ConvLarge anti-aliasés
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.9915.0197.2942.70632.59544
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.77215.22897.3442.65632.59480
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.6415.3697.1142.88632.59448
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.31415.68697.1022.89832.59384
mobilenetv4_conv_aa_large.e600_r384_in1k83.82416.17696.7343.26632.59480
mobilenetv4_conv_aa_large.e600_r384_in1k83.24416.75696.3923.60832.59384
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.9917.0196.673.3311.07320
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.36417.63696.2563.74411.07256
modeltop1top1_errtop5top5_errparam_countimg_size
efficientnet_b0.ra4_e3600_r224_in1k79.36420.63694.7545.2465.29256
efficientnet_b0.ra4_e3600_r224_in1k78.58421.41694.3385.6625.29224
mobilenetv1_100h.ra4_e3600_r224_in1k76.59623.40493.2726.7285.28256
mobilenetv1_100.ra4_e3600_r224_in1k76.09423.90693.0046.9964.23256
mobilenetv1_100h.ra4_e3600_r224_in1k75.66224.33892.5047.4965.28224
mobilenetv1_100.ra4_e3600_r224_in1k75.38224.61892.3127.6884.23224
  • Prototype de set_input_size() ajouté aux modèles vit et swin v1/v2 pour permettre de modifier la taille de l'image, la taille du patch et la taille de la fenêtre après la création du modèle.
  • Prise en charge améliorée dans swin pour la gestion de différentes tailles. En plus de set_input_size, les arguments always_partition et strict_img_size ont été ajoutés à __init__ pour permettre des contraintes de taille d'entrée plus flexibles
  • Corrige les informations d’indices désordonnées pour l’enveloppe de fonctionnalité intermédiaire « Getter », et vérifie les indices de sortie ou d’intervalle pour celle-ci.
  • Ajouter plusieurs modèles tiny de moins de 0,5 M de paramètres pour les tests, réellement entraînés sur ImageNet-1k
modeltop1top1_errtop5top5_errparam_countimg_sizecrop_pct
test_efficientnet.r160_in1k47.15652.84471.72628.2740.361921.0
test_byobnet.r160_in1k46.69853.30271.67428.3260.461921.0
test_efficientnet.r160_in1k46.42653.57470.92829.0720.361600.875
test_byobnet.r160_in1k45.37854.62270.57229.4280.461600.875
test_vit.r160_in1k42.058.068.66431.3360.371921.0
test_vit.r160_in1k40.82259.17867.21232.7880.371600.875
  • Correction de l'initialisation du jeton de registre vit, merci Promisery
  • Autres correctifs divers

24 juin 2024

  • 3 autres poids hybrides de MobileNetV4 avec un schéma d'initialisation des poids MQA différent
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.ix_e600_r384_in1k84.35615.64496.8923.10837.76448
mobilenetv4_hybrid_large.ix_e600_r384_in1k83.99016.01096.7023.29837.76384
mobilenetv4_hybrid_medium.ix_e550_r384_in1k83.39416.60696.7603.24011.07448
mobilenetv4_hybrid_medium.ix_e550_r384_in1k82.96817.03296.4743.52611.07384
mobilenetv4_hybrid_medium.ix_e550_r256_in1k82.49217.50896.2783.72211.07320
mobilenetv4_hybrid_medium.ix_e550_r256_in1k81.44618.55495.7044.29611.07256
  • Chargement des poids de florence2 dans le modèle DaViT

12 juin 2024

  • Ajout des modèles MobileNetV4 et du premier ensemble de poids entraînés avec timm :
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.e600_r384_in1k84.26615.73496.9363.06437.76448
mobilenetv4_hybrid_large.e600_r384_in1k83.80016.20096.7703.23037.76384
mobilenetv4_conv_large.e600_r384_in1k83.39216.60896.6223.37832.59448
mobilenetv4_conv_large.e600_r384_in1k82.95217.04896.2663.73432.59384
mobilenetv4_conv_large.e500_r256_in1k82.67417.32696.313.6932.59320
mobilenetv4_conv_large.e500_r256_in1k81.86218.13895.694.3132.59256
mobilenetv4_hybrid_medium.e500_r224_in1k81.27618.72495.7424.25811.07256
mobilenetv4_conv_medium.e500_r256_in1k80.85819.14295.7684.2329.72320
mobilenetv4_hybrid_medium.e500_r224_in1k80.44219.55895.384.6211.07224
mobilenetv4_conv_blur_medium.e500_r224_in1k80.14219.85895.2984.7029.72256
mobilenetv4_conv_medium.e500_r256_in1k79.92820.07295.1844.8169.72256
mobilenetv4_conv_medium.e500_r224_in1k79.80820.19295.1864.8149.72256
mobilenetv4_conv_blur_medium.e500_r224_in1k79.43820.56294.9325.0689.72224
mobilenetv4_conv_medium.e500_r224_in1k79.09420.90694.775.239.72224
mobilenetv4_conv_small.e2400_r224_in1k74.61625.38492.0727.9283.77256
mobilenetv4_conv_small.e1200_r224_in1k74.29225.70892.1167.8843.77256
mobilenetv4_conv_small.e2400_r224_in1k73.75626.24491.4228.5783.77224
mobilenetv4_conv_small.e1200_r224_in1k73.45426.54691.348.663.77224
  • Prise en charge et ajout des poids du modèle de tour d’image Apple MobileCLIP (https://arxiv.org/pdf/2311.17049, FastViT et ViT-B) (partie de la prise en charge d’OpenCLIP).
  • Modèle et poids de la tour d’images CLIP de ViTamin (https://arxiv.org/abs/2404.02132) ajoutés (dans le cadre de la prise en charge d’OpenCLIP).
  • Prise en charge du modélisation et des poids de la tour d'image ResNet modifiée d'OpenAI CLIP (via ByobNet). Refactorisation de AttentionPool2d.

14 mai 2024

  • Prend en charge le chargement des poids jax de PaliGemma dans les modèles SigLIP ViT avec un pooling par moyenne.
  • Ajouter les modèles Hiera de Meta (https://github.com/facebookresearch/hiera).
  • Ajouter le drapeau normalize= pour les transformations, renvoyer un torch.Tensor non normalisé avec le type d'origine (pour chug)
  • Sortie de la version 1.0.3

11 mai 2024

  • Searching for Better ViT Baselines (For the GPU Poor) poids et variantes vit publiés. Exploration des formes de modèles entre Tiny et Base.
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k86.20297.87464.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k85.41897.4860.4256
vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k84.32296.81263.95256
vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k83.90696.68460.23256
vit_base_patch16_rope_reg1_gap_256.sbb_in1k83.86696.6786.43256
vit_medium_patch16_rope_reg1_gap_256.sbb_in1k83.8196.82438.74256
vit_betwixt_patch16_reg4_gap_256.sbb_in1k83.70696.61660.4256
vit_betwixt_patch16_reg1_gap_256.sbb_in1k83.62896.54460.4256
vit_medium_patch16_reg4_gap_256.sbb_in1k83.4796.62238.88256
vit_medium_patch16_reg1_gap_256.sbb_in1k83.46296.54838.88256
vit_little_patch16_reg4_gap_256.sbb_in1k82.51496.26222.52256
vit_wee_patch16_reg1_gap_256.sbb_in1k80.25695.36013.42256
vit_pwee_patch16_reg1_gap_256.sbb_in1k80.07295.13615.25256
vit_mediumd_patch16_reg4_gap_256.sbb_in12kN/AN/A64.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12kN/AN/A60.4256
  • Un utilitaire AttentionExtract a été ajouté pour extraire les cartes d'attention des modèles timm. Voir l'exemple dans https://github.com/huggingface/pytorch-image-models/discussions/1232#discussioncomment-9320949
  • L’API forward_intermediates() a été affinée et ajoutée à davantage de modèles, y compris certains ConvNets qui disposent d’autres méthodes d’extraction.
  • 1017 des 1047 architectures de modèles prennent en charge l’extraction de fonctionnalités avec features_only=True. Les 34 architectures restantes peuvent être prises en charge, mais selon les demandes prioritaires.
  • Supprimez les fonctions annotées avec torch.jit.script, y compris les anciennes activations JIT. Conflit avec dynamo, et dynamo fait un bien meilleur travail lorsqu'il est utilisé.

11 avril 2024

  • En préparation d'une version 1.0 très attendue, les choses sont stables depuis un certain temps.
  • Fonctionnalité importante qui manquait depuis un certain temps : prise en charge de features_only=True pour les modèles ViT avec des états cachés aplatis ou des dispositions de modules non standard (couvrant jusqu'à présent 'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*')
  • La prise en charge des fonctionnalités ci-dessus est assurée par une nouvelle API forward_intermediates() qui peut être utilisée avec un module d'encapsulation de fonctionnalités ou directement.
model = timm.create_model('vit_base_patch16_224')
final_feat, intermediates = model.forward_intermediates(input)
output = model.forward_head(final_feat)  # pooling + classifier head

print(final_feat.shape)
torch.Size([2, 197, 768])

for f in intermediates:
    print(f.shape)
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])

print(output.shape)
torch.Size([2, 1000])
model = timm.create_model('eva02_base_patch16_clip_224', pretrained=True, img_size=512, features_only=True, out_indices=(-3, -2,))
output = model(torch.randn(2, 3, 512, 512))

for o in output:
    print(o.shape)
torch.Size([2, 768, 32, 32])
torch.Size([2, 768, 32, 32])
  • Poids de la tour vision TinyCLIP ajoutés, merci Thien Tran

19 février 2024

  • Modèles Next-ViT ajoutés. Adaptés de https://github.com/bytedance/Next-ViT
  • Modèles HGNet et PP-HGNetV2 ajoutés. Adaptés de https://github.com/PaddlePaddle/PaddleClas par SeeFun
  • Suppression de setup.py, passage à une construction basée sur pyproject.toml prise en charge par PDM
  • Ajout de l’implémentation mise à jour du EMA du modèle utilisant _for_each pour réduire la surcharge
  • Prise en charge des arguments de périphérique dans le script d'entraînement pour les périphériques non GPU
  • Autres correctifs divers et petites ajouts
  • Version minimale de Python prise en charge augmentée à 3.8
  • Release 0.9.16

8 janvier 2024

Refactoring des jeux de données et des transformations

  • Prise en charge des jeux de données (itérables) en streaming de HuggingFace (--dataset hfids:org/dataset)
  • Ajustements du wrapper Webdataset pour améliorer la récupération des informations de split, avec possibilité de récupérer automatiquement les splits depuis les webdataset pris en charge sur le hub HF
  • Testé le streaming des datasets HF et du wrapper webdataset depuis le hub HF avec les récents dépôts ImageNet de timm vers https://huggingface.co/timm
  • Rendre les clés des colonnes/champs d’entrée et de cible cohérentes entre les jeux de données et les passer via args
  • Prise en charge complète du monochrome lors de l'utilisation de --input-size 1 224 224 ou --in-chans 1, configure la conversion d'image PIL de manière appropriée dans le jeu de données
  • Amélioration de plusieurs transformations de recadrage et de redimensionnement alternatifs (ResizeKeepRatio, RandomCropOrPad, etc.) pour leur utilisation dans le projet d'IA documentaire PixParse
  • Ajouter la probabilité de variation de couleur au style SimCLR, ainsi que les options de conversion en niveaux de gris et de flou gaussien, aux augmentations et aux arguments
  • Autoriser l'entraînement sans ensemble de validation (--val-split '') dans le script d'entraînement
  • Ajouter les arguments --bce-sum (somme sur la dimension des classes) et --bce-pos-weight (pondération positive) pour l’entraînement, car ce sont des ajustements courants de la perte BCE que je codais souvent en dur

23 nov. 2023

  • Ajout des modèles EfficientViT-Large, merci SeeFun
  • Correction de la compatibilité avec Python 3.7, le support en sera bientôt retiré
  • Autres correctifs divers
  • Release 0.9.12

20 nov. 2023

3 nov. 2023

20 octobre 2023

  • SigLIP poids de la tour d'image pris en charge dans vision_transformer.py.
    • Un grand potentiel pour le fine-tuning et l'utilisation de fonctionnalités en aval.
  • Prise en charge expérimentale de « register » dans les modèles vit conformément à Vision Transformers Need Registers
  • Mise à jour de RepViT avec la nouvelle publication des poids. Merci à wangao
  • Ajouter la prise en charge du redimensionnement des patches (au chargement des poids pré-entraînés) aux modèles Swin
  • Sortie de la version 0.9.8 en attente

1er septembre 2023

  • TinyViT ajouté par SeeFun
  • Corriger EfficientViT (MIT) pour utiliser torch.autocast afin qu'il fonctionne à partir de PT 1.10
  • Sortie de la version 0.9.7

28 août 2023

  • Ajouter la prise en charge de la taille d'image dynamique aux modèles dans vision_transformer.py, vision_transformer_hybrid.py, deit.py, et eva.py sans casser la rétrocompatibilité. Ajouter dynamic_img_size=True aux arguments lors de la création du modèle pour permettre de modifier la taille de la grille (interpolation des embeddings de position absolus et/ou ROPE à chaque passe avant). Ajouter dynamic_img_pad=True pour autoriser des tailles d'image non divisibles par la taille du patch (remplissage en bas à droite jusqu'à la taille du patch à chaque passe avant). L'activation de l'un des modes dynamiques cassera le traçage FX à moins que le module PatchEmbed ne soit ajouté comme feuille. La méthode existante de redimensionnement de l'embedding de position en passant une img_size différente (interpolation des poids d'embedding pré-entraînés une seule fois) lors de la création fonctionne toujours. La méthode existante de modification de patch_size (redimensionnement des poids de patch_embed pré-entraînés une seule fois) lors de la création fonctionne toujours. Exemple de commande de validation python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True
    • Ajoutez dynamic_img_size=True aux arguments lors de la création du modèle pour autoriser la modification de la taille de la grille (interpolation des embeddings de position absolus et/ou ROPE à chaque passe avant).
    • Ajoutez dynamic_img_pad=True pour autoriser des tailles d’image non divisibles par la taille des patches (remplissage en bas à droite jusqu’à la taille des patches à chaque passe avant).
    • Activer l'un des modes dynamiques cassera le traçage FX à moins que le module PatchEmbed ne soit ajouté comme feuille.
    • La méthode existante de redimensionnement de l’embedding de position en passant un img_size différent (interpolation des poids d’embedding pré-entraînés une seule fois) lors de la création fonctionne toujours.
    • La méthode existante pour modifier patch_size (redimensionner les poids pré-entraînés de patch_embed une seule fois) lors de la création fonctionne toujours.
    • Exemple de commande de validation python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True

25 août 2023

11 août 2023

  • Les modèles Swin, MaxViT, CoAtNet et BEiT prennent en charge le redimensionnement de la taille de l’image/du fenêtre lors de la création, avec adaptation des poids pré-entraînés
  • Exemple de commande de validation pour tester avec un redimensionnement non carré python validate.py --data-dir /imagenet --model swin_base_patch4_window7_224.ms_in22k_ft_in1k --amp --amp-dtype bfloat16 --input-size 3 256 320 --model-kwargs window_size=8,10 img_size=256,320

3 août 2023

  • Ajout des poids GluonCV pour HRNet w18_small et w18_small_v2. Convertis par SeeFun
  • Corriger la régression de nommage des modèles selecsls*
  • Le patch et l'embedding de position pour ViT/EVA fonctionnent avec des poids bfloat16/float16 au chargement (ou des activations pour le redimensionnement à la volée)
  • Préparation de la publication v0.9.5

27 juillet 2023

  • Ajout des poids seresnextaa201d_32x8d.sw_in12k_ft_in1k_384 entraînés avec timm (ainsi que le pré-entraînement .sw_in12k) atteignant 87,3 % de top-1 sur ImageNet-1k, le meilleur modèle de la famille ResNet sur ImageNet dont j’ai connaissance.
  • Modèle et poids de RepViT (https://arxiv.org/abs/2307.09283) ajoutés par wangao
  • Poids des caractéristiques I-JEPA ViT (sans classifieur) ajoutés par SeeFun
  • Poids de la fonctionnalité SAM-ViT (segment anything) (sans classifieur) ajoutés par SeeFun
  • Ajouter la prise en charge des méthodes alternatives d'extraction de caractéristiques et des indices négatifs à EfficientNet
  • Ajouter l’optimiseur NAdamW
  • Divers correctifs

11 mai 2023

  • timm 0.9 publié, transition depuis les versions 0.8.xdev

10 mai 2023

  • Le téléchargement depuis le Hugging Face Hub est désormais par défaut, 1132 modèles sur https://huggingface.co/timm, 1163 poids dans timm
  • Poids du backbone de caractéristiques vit de DINOv2 ajoutés grâce à Leng Yue
  • Poids du backbone de fonctionnalités vit ajoutés à FB MAE
  • Poids du backbone de caractéristiques OpenCLIP DataComp-XL L/14 ajoutés
  • MetaFormer (poolformer-v2, caformer, convformer, poolformer mis à jour (v1)) avec les poids ajoutés par Fredo Guan
  • Fonction expérimentale get_intermediate_layers sur les modèles vit/deit pour récupérer les états cachés (inspirée de l’implémentation DINO). Il s’agit d’un travail en cours et peut évoluer de manière significative… vos retours sont les bienvenus.
  • La création d'un modèle lève une erreur si pretrained=True et qu'aucun poids n'existe (au lieu de continuer avec une initialisation aléatoire)
  • Correction d'une régression avec les poids TF issus d'inception / nasnet pour 1001 classes dans les classifieurs d'origine
  • Les optimiseurs bitsandbytes (https://github.com/TimDettmers/bitsandbytes) ont été ajoutés à la fabrique, utilisez le préfixe bnb, par exemple bnbadam8bit
  • Diverses corrections et nettoyages
  • Tests finaux avant de passer à la version 0.9 et de sortir timm de l'état de pré-version

27 avril 2023

  • 97 % des modèles timm publiés sur HF Hub et presque tous mis à jour pour prendre en charge les configurations pré-entraînées multi-poids
  • Nettoyage et refactorisation mineurs d'un autre lot de modèles suite à l'ajout de multi-weight. Plus de support pour fused_attn (F.sdpa) et features_only, ainsi que des correctifs pour torchscript.

21 avril 2023

  • Prise en charge de l'accumulation de gradients ajoutée au script d'entraînement et testée (--grad-accum-steps), merci Taeksang Kim
  • Plus de poids sur HF Hub (cspnet, cait, volo, xcit, tresnet, hardcorenas, densenet, dpn, vovnet, xception_aligned)
  • Ajout de --head-init-scale et --head-init-bias à train.py pour mettre à l'échelle la tête du classifieur et définir un biais fixe pour le fine-tuning
  • Supprimer tout usage de InplaceABN (inplace_abn), remplacé dans tresnet par BatchNorm standard (poids modifiés en conséquence).

12 avril 2023

  • Ajout du script d’export ONNX, du script de validation et des utilitaires que je gardais sous le coude depuis un certain temps. Ajustement du padding « same » pour un meilleur export avec les versions récentes d’ONNX et de PyTorch.
  • Refactoriser les arguments de dropout pour les modèles vit et similaires, en séparant drop_rate en drop_rate (dropout du classifieur), proj_drop_rate (projections mlp / sortie des blocs), pos_drop_rate (dropout des embeddings de position) et attn_drop_rate (dropout d'attention). Ajouter également le dropout de patch (FLIP) aux modèles vit et eva.
  • Prise en charge de F.scaled_dot_product_attention fusionné pour plus de modèles vit, ajout d'une variable d'environnement (TIMM_FUSED_ATTN) pour le contrôler, et d'une interface de configuration pour l'activer/désactiver
  • Ajout des squelettes EVA-CLIP avec les poids de la tour d’images, jusqu’au modèle « enormous » de 4 Md de paramètres, ainsi que du mode OpenAI ViT 336x336 qui avait été manqué.

5 avril 2023

  • Tous les modèles ResNet publiés sur le Hugging Face Hub avec prise en charge de plusieurs poids
  • Nouveaux fine-tunes ImageNet-12k + ImageNet-1k disponibles pour quelques modèles ResNet anti-aliasés
    • resnetaa50d.sw_in12k_ft_in1k - 81.7 @ 224, 82.6 @ 288
    • resnetaa101d.sw_in12k_ft_in1k - 83.5 @ 224, 84.1 @ 288
    • seresnextaa101d_32x8d.sw_in12k_ft_in1k - 86.0 @ 224, 86.5 @ 288
    • seresnextaa101d_32x8d.sw_in12k_ft_in1k_288 - 86.5 @ 288, 86.7 @ 320

31 mars 2023

  • Ajout du premier fine-tuning ConvNext-XXLarge CLIP -> IN-1k et des fine-tunings intermédiaires IN-12k pour les modèles CLIP convnext-base/large.
modeltop1top5img_sizeparam_countgmacsmacts
convnext_xxlarge.clip_laion2b_soup_ft_in1k88.61298.704256846.47198.09124.45
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_38488.31298.578384200.13101.11126.74
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_32087.96898.47320200.1370.2188.02
convnext_base.clip_laion2b_augreg_ft_in12k_in1k_38487.13898.21238488.5945.2184.49
convnext_base.clip_laion2b_augreg_ft_in12k_in1k86.34497.9725688.5920.0937.55
  • Ajout des poids pré-entraînés et affinés d’EVA-02 MIM, publication sur le hub HF et mise à jour des fiches modèles pour tous les modèles EVA. Premier modèle dépassant 90 % de top-1 (99 % de top-5) ! Consultez le code et les poids d’origine sur https://github.com/baaivision/EVA pour plus de détails sur leur travail combinant MIM et CLIP avec de nombreuses adaptations des modèles, des jeux de données et des recettes d’entraînement.
modeltop1top5param_countimg_size
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k90.05499.042305.08448
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k89.94699.01305.08448
eva_giant_patch14_560.m30m_ft_in22k_in1k89.79298.9921014.45560
eva02_large_patch14_448.mim_in22k_ft_in1k89.62698.954305.08448
eva02_large_patch14_448.mim_m38m_ft_in1k89.5798.918305.08448
eva_giant_patch14_336.m30m_ft_in22k_in1k89.5698.9561013.01336
eva_giant_patch14_336.clip_ft_in1k89.46698.821013.01336
eva_large_patch14_336.in22k_ft_in22k_in1k89.21498.854304.53336
eva_giant_patch14_224.clip_ft_in1k88.88298.6781012.56224
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k88.69298.72287.12448
eva_large_patch14_336.in22k_ft_in1k88.65298.722304.53336
eva_large_patch14_196.in22k_ft_in22k_in1k88.59298.656304.14196
eva02_base_patch14_448.mim_in22k_ft_in1k88.2398.56487.12448
eva_large_patch14_196.in22k_ft_in1k87.93498.504304.14196
eva02_small_patch14_336.mim_in22k_ft_in1k85.7497.61422.13336
eva02_tiny_patch14_336.mim_in22k_ft_in1k80.65895.5245.76336
  • Multi-poids et HF hub pour les modèles basés sur DeiT et MLP-Mixer

22 mars 2023

  • Plus de poids poussés sur le hub HF, accompagnés de la prise en charge de multiples poids, notamment : regnet.py, rexnet.py, byobnet.py, resnetv2.py, swin_transformer.py, swin_transformer_v2.py, swin_transformer_v2_cr.py
  • Les modèles Swin Transformer prennent en charge l'extraction de caractéristiques (cartes de caractéristiques NCHW pour swinv2_cr_*, et NHWC pour tous les autres) ainsi que les sorties d'encodage spatial.
  • Les modèles et poids de FocalNet (depuis https://github.com/microsoft/FocalNet) ajoutés avec un refactoring important, l'extraction de caractéristiques, et sans contrainte de résolution / de taille fixe
  • Les poids de RegNet ont été ajoutés via la publication sur le hub HF, ainsi que les poids SWAG, SEER et torchvision v2. SEER offre des performances relativement faibles par rapport à la taille du modèle, mais peut s’avérer utile.
  • Plus de poids pré-entraînés sur ImageNet-12k et affinés sur 1k timm poids :
    • rexnetr_200.sw_in12k_ft_in1k - 82.6 @ 224, 83.2 @ 288
    • rexnetr_300.sw_in12k_ft_in1k - 84.0 @ 224, 84.5 @ 288
    • regnety_120.sw_in12k_ft_in1k - 85.0 @ 224, 85.4 @ 288
    • regnety_160.lion_in12k_ft_in1k - 85.6 @ 224, 86.0 @ 288
    • regnety_160.sw_in12k_ft_in1k - 85,6 @ 224, 86,0 @ 288 (par rapport à SWAG PT + 1k FT, c'est identique mais à une résolution bien plus basse, et ça écrase SEER FT)
  • Ajout de la fonctionnalité de dépréciation et de remappage des noms de modèles (une étape clé pour sortir la version 0.8.x de la préversion). Les correspondances sont en cours d’ajout…
  • Corrections de bugs mineurs et améliorations.

26 février 2023

  • Ajout des poids pré-entraînés de la tour d’images ConvNeXt-XXLarge CLIP pour le fine-tuning et l’extraction de caractéristiques (le fine-tuning est à venir) — voir model card
  • Mettre à jour la valeur par défaut de l'epsilon de LayerNorm de convnext_xxlarge à 1e-5 (pour les poids CLIP, stabilité améliorée)
  • 0.8.15dev0

20 février 2023

  • Ajout des poids de la tour d’images CLIP convnext_large_mlp.clip_laion2b_ft_320 et convnext_large_mlp.clip_laion2b_ft_soup_320 de 320x320 pour les fonctionnalités et l’ajustement fin
  • 0.8.13dev0 publication sur pypi pour les dernières modifications avec le passage à l'organisation huggingface

16 février 2023

  • Ajout de la prise en charge des points de contrôle safetensor
  • Ajouter des idées issues de « Scaling Vision Transformers to 22 B. Params » (https://arxiv.org/abs/2302.05442) — qk norm, RmsNorm, bloc parallèle
  • Ajouter la prise en charge de F.scaleddot_product_attention (PyTorch 2.0 uniquement) à `vit,vit_relpos,coatnet/maxxvit` (pour commencer)
  • Ajout de l'optimiseur Lion (avec option multi-tenseur) (https://arxiv.org/abs/2302.06675)
  • Le gradient checkpointing fonctionne avec features_only=True

7 février 2023

  • Nouveaux chiffres de référence d'inférence ajoutés dans le dossier results.
  • Ajout des poids entraînés de convnext LAION CLIP et du premier ensemble de fine-tunes in1k
    • convnext_base.clip_laion2b_augreg_ft_in1k - 86.2% @ 256x256
    • convnext_base.clip_laiona_augreg_ft_in1k_384 - 86.5% @ 384x384
    • convnext_large_mlp.clip_laion2b_augreg_ft_in1k - 87.3% @ 256x256
    • convnext_large_mlp.clip_laion2b_augreg_ft_in1k_384 - 87.9% @ 384x384
  • Ajout des modèles DaViT. Prend en charge features_only=True. Adapté de https://github.com/dingmyu/davit par Fredo.
  • Utiliser une NormMlpClassifierHead commune pour MaxViT, ConvNeXt et DaViT
  • Ajout du modèle EfficientFormer-V2, mise à jour d'EfficientFormer et refonte de LeViT (architectures étroitement liées). Poids disponibles sur le hub HF.
    • Nouvelle architecture EfficientFormer-V2, refonte importante par rapport à l’originale sur (https://github.com/snap-research/EfficientFormer). Prend en charge features_only=True.
    • Mises à jour mineures d'EfficientFormer.
    • Refactoriser les modèles LeViT en étapes, ajouter la prise en charge de features_only=True aux nouvelles variantes conv, remappage des poids requis.
  • Déplacer les métadonnées d’ImageNet (synsets, indices) de /results vers timm/data/_info.
  • Ajouter les classes ImageNetInfo / DatasetInfo pour fournir l'étiquetage des différentes dispositions de classifieurs ImageNet dans timm
    • Mettez à jour inference.py pour utiliser, essayez : python inference.py --data-dir /folder/to/images --model convnext_small.in12k --label-type detail --topk 5
  • Prêt pour la préversion 0.8.10 pypi (tests finaux).

20 janv. 2023

  • Ajouter deux fine-tunes convnext 12k -> 1k à 384x384

    • convnext_tiny.in12k_ft_in1k_384 - 85.1 @ 384
    • convnext_small.in12k_ft_in1k_384 - 86.2 @ 384
  • Poussez tous les poids de MaxxViT sur le hub HF et ajoutez de nouveaux fine-tunings ImageNet-12k -> 1k pour les modèles de base rw MaxViT et CoAtNet 1/2

modeltop1top5échantillons / secParamètres (M)GMACAct (M)
maxvit_xlarge_tf_512.in21k_ft_in1k88.5398.6421.76475.77534.141413.22
maxvit_xlarge_tf_384.in21k_ft_in1k88.3298.5442.53475.32292.78668.76
maxvit_base_tf_512.in21k_ft_in1k88.2098.5350.87119.88138.02703.99
maxvit_large_tf_512.in21k_ft_in1k88.0498.4036.42212.33244.75942.15
maxvit_large_tf_384.in21k_ft_in1k87.9898.5671.75212.03132.55445.84
maxvit_base_tf_384.in21k_ft_in1k87.9298.54104.71119.6573.80332.90
maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k87.8198.37106.55116.1470.97318.95
maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k87.4798.37149.49116.0972.98213.74
coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k87.3998.31160.8073.8847.69209.43
maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k86.8998.02375.86116.1423.1592.64
maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k86.6498.02501.03116.0924.2062.77
maxvit_base_tf_512.in1k86.6097.9250.75119.88138.02703.99
coatnet_2_rw_224.sw_in12k_ft_in1k86.5797.89631.8873.8715.0949.22
maxvit_large_tf_512.in1k86.5297.8836.04212.33244.75942.15
coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k86.4997.90620.5873.8815.1854.78
maxvit_base_tf_384.in1k86.2997.80101.09119.6573.80332.90
maxvit_large_tf_384.in1k86.2397.6970.56212.03132.55445.84
maxvit_small_tf_512.in1k86.1097.7688.6369.1367.26383.77
maxvit_tiny_tf_512.in1k85.6797.58144.2531.0533.49257.59
maxvit_small_tf_384.in1k85.5497.46188.3569.0235.87183.65
maxvit_tiny_tf_384.in1k85.1197.38293.4630.9817.53123.42
maxvit_large_tf_224.in1k84.9396.97247.71211.7943.68127.35
coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k84.9096.961025.4541.728.1140.13
maxvit_base_tf_224.in1k84.8596.99358.25119.4724.0495.01
maxxvit_rmlp_small_rw_256.sw_in1k84.6397.06575.5366.0114.6758.38
coatnet_rmlp_2_rw_224.sw_in1k84.6196.74625.8173.8815.1854.78
maxvit_rmlp_small_rw_224.sw_in1k84.4996.76693.8264.9010.7549.30
maxvit_small_tf_224.in1k84.4396.83647.9668.9311.6653.17
maxvit_rmlp_tiny_rw_256.sw_in1k84.2396.78807.2129.156.7746.92
coatnet_1_rw_224.sw_in1k83.6296.38989.5941.728.0434.60
maxvit_tiny_rw_224.sw_in1k83.5096.501100.5329.065.1133.11
maxvit_tiny_tf_224.in1k83.4196.591004.9430.925.6035.78
coatnet_rmlp_1_rw_224.sw_in1k83.3696.451093.0341.697.8535.47
maxxvitv2_nano_rw_256.sw_in1k83.1196.331276.8823.706.2623.05
maxxvit_rmlp_nano_rw_256.sw_in1k83.0396.341341.2416.784.3726.05
maxvit_rmlp_nano_rw_256.sw_in1k82.9696.261283.2415.504.4731.92
maxvit_nano_rw_256.sw_in1k82.9396.231218.1715.454.4630.28
coatnet_bn_0_rw_224.sw_in1k82.3996.191600.1427.444.6722.04
coatnet_0_rw_224.sw_in1k82.3995.841831.2127.444.4318.73
coatnet_rmlp_nano_rw_224.sw_in1k82.0595.872109.0915.152.6220.34
coatnext_nano_rw_224.sw_in1k81.9595.922525.5214.702.4712.80
coatnet_nano_rw_224.sw_in1k81.7095.642344.5215.142.4115.41
maxvit_rmlp_pico_rw_256.sw_in1k80.5395.211594.717.521.8524.86

11 janvier 2023

  • Mise à jour de la série de pré-entraînement ConvNeXt ImageNet-12k avec deux nouveaux poids affinés (et pré-FT .in12k tags)
    • convnext_nano.in12k_ft_in1k - 82,3 @ 224, 82,9 @ 288 (déjà publié)
    • convnext_tiny.in12k_ft_in1k - 84.2 @ 224, 84.5 @ 288
    • convnext_small.in12k_ft_in1k - 85.2 @ 224, 85.3 @ 288

6 janvier 2023

  • J'ai enfin eu le temps d'ajouter --model-kwargs et --opt-kwargs aux scripts pour transmettre directement des arguments rares aux classes de modèles depuis la ligne de commande
    • train.py --data-dir /imagenet --model resnet50 --amp --model-kwargs output_stride=16 act_layer=silu
    • train.py --data-dir /imagenet --model vit_base_patch16_clip_224 --img-size 240 --amp --model-kwargs img_size=240 patch_size=12
  • Nettoyage de certains modèles populaires pour mieux prendre en charge le passage d'arguments / fusion avec les configurations de modèles, il en reste d'autres à traiter.

5 janvier 2023

23 déc. 2022 🎄☃

  • Ajouter les modèles et poids FlexiViT de https://github.com/google-research/big_vision (consultez le papier sur https://arxiv.org/abs/2212.08013)
    • NOTE actuellement, le redimensionnement est statique lors de la création du modèle, l'échantillonnage dynamique de la taille de patch en cours d'exécution / d'entraînement est en cours de développement
  • De nombreux autres modèles ont été mis à jour pour prendre en charge les poids multiples et sont désormais téléchargeables via le hub HF (convnext, efficientnet, mobilenet, vision_transformer*, beit)
  • Plus de tags de modèles pré-entraînés et d’ajustements, certains noms de modèles ont été modifiés (travail en cours sur les traductions de dépréciation, considérer la branche principale DEV pour le moment, utiliser 0.6.x pour un usage stable)
  • De nouveaux modèles pré-entraînés sur ImageNet-12k (sous-ensemble de 22k) apparaissent :
    • efficientnet_b5.in12k_ft_in1k - 85.9 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_nano.in12k_ft_in1k - 82.9 @ 288x288

8 déc. 2022

  • Ajouter ‘EVA l’ à vision_transformer.py, pré-entraînement MIM de ViT-L/14 au style MAE avec des cibles EVA-CLIP, fine-tuning sur ImageNet-1k (avec ImageNet-22k intermédiaire pour certains)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2lien
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2lien
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5lien
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5lien

6 déc. 2022

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2lien
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7lien
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7lien
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6lien

5 déc. 2022

  • Version préliminaire (0.8.0dev0) de la prise en charge de plusieurs poids (model_arch.pretrained_tag). Installer avec pip install --pre timm
    • vision_transformer, maxvit, convnext sont les trois premières implémentations de modèles avec prise en charge
    • Les noms des modèles changent avec cela (les fonctions précédentes _21k, etc. seront fusionnées), nous sommes toujours en train de régler la gestion de l'obsolescence
    • Des bugs sont probables, mais j'ai besoin de vos retours, alors n'hésitez pas à l'essayer.
    • si la stabilité est requise, veuillez utiliser les versions 0.6.x publiées sur pypi ou cloner depuis la branche 0.6.x
  • La prise en charge de la compilation PyTorch 2.0 est ajoutée dans train/validate/inference/benchmark, utilisez l'argument --torchcompile
  • Le script d’inférence permet un contrôle plus fin de la sortie : sélectionnez k pour l’indice et la probabilité de la classe principale, avec une sortie au format json, csv ou parquet
  • Ajouter un ensemble complet de poids de la tour d’images CLIP affinés, issus des modèles LAION-2B et des modèles OpenAI CLIP d’origine
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5lien
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2lien
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4lien
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2lien
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8lien
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8lien
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8lien
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2lien
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4lien
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8lien
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6lien
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6lien
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6lien
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6lien
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9lien
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9lien
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9lien
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9lien
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5lien
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9lien
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5lien
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45lien
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45lien
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45lien
  • Port des poids MaxViT TensorFlow de l'implémentation officielle située à https://github.com/google-research/maxvit
    • Les baisses observées pour les poids de fine-tuning in21k redimensionnés à 384/512 étaient plus importantes que prévu, avec un possible manque de détails, mais le fine-tuning 21k semblait sensible aux petits changements de prétraitement
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2lien
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8lien
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704lien
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2lien
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8lien
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9lien
maxvit_base_tf_512.in1k86.6119.9138704lien
maxvit_large_tf_512.in1k86.5212.3244.8942.2lien
maxvit_base_tf_384.in1k86.3119.673.8332.9lien
maxvit_large_tf_384.in1k86.2212132.6445.8lien
maxvit_small_tf_512.in1k86.169.167.3383.8lien
maxvit_tiny_tf_512.in1k85.73133.5257.6lien
maxvit_small_tf_384.in1k85.56935.9183.6lien
maxvit_tiny_tf_384.in1k85.13117.5123.4lien
maxvit_large_tf_224.in1k84.9211.843.7127.4lien
maxvit_base_tf_224.in1k84.9119.52495lien
maxvit_small_tf_224.in1k84.468.911.753.2lien
maxvit_tiny_tf_224.in1k83.430.95.635.8lien

15 octobre 2022

  • Améliorations des scripts d'entraînement et de validation
  • Prise en charge des périphériques non-GPU (c.-à-d. CPU)
  • Compatibilité SLURM pour le script d'entraînement
  • Prise en charge des jeux de données HF (via ReaderHfds)
  • Améliorations du chargement de données TFDS/WDS (remplissage/enroulement des échantillons pour une utilisation distribuée corrigé par rapport à l'estimation du nombre d'échantillons)
  • support de in_chans !=3 pour les scripts / chargeurs
  • Optimiseur Adan
  • Permet d'activer le planification du taux d'apprentissage par étape via args
  • Les « parsers » du jeu de données ont été renommés en « readers », plus descriptif de leur objectif
  • Arguments AMP modifiés, APEX via --amp-impl apex, bfloat16 pris en charge via --amp-dtype bfloat16
  • La branche principale a été basculée sur la version 0.7.x, et la version 0.6x a été forkée pour la publication stable des ajouts de poids uniquement
  • renommage de la branche master -> main

10 octobre 2022

  • Plus de poids dans la maxxvit série, incl. le premier bloc ConvNeXt basé sur coatnext et maxxvit expériences :
    • coatnext_nano_rw_224 - 82.0 @ 224 (G) — (utilise le bloc conv de ConvNeXt, sans BatchNorm)
    • maxxvit_rmlp_nano_rw_256 - 83,0 @ 256, 83,7 @ 320 (G) (utilise le bloc conv de ConvNeXt, sans BN)
    • maxvit_rmlp_small_rw_224 - 84.5 @ 224, 85.1 @ 320 (G)
    • maxxvit_rmlp_small_rw_256 - 84,6 @ 256, 84,9 @ 288 (G) — pourrait être entraîné de manière plus performante, les hyperparamètres nécessitent un réglage (utilise un bloc ConvNeXt, sans BN)
    • coatnet_rmlp_2_rw_224 - 84.6 @ 224, 85 @ 320 (T)
    • NOTE : les poids officiels de MaxVit (in1k) ont été publiés sur https://github.com/google-research/maxvit — un travail supplémentaire est nécessaire pour les porter et les adapter, car mon implémentation a été créée indépendamment de la leur et présente quelques petites différences + tout le problème du padding « same » de TF.

23 septembre 2022

  • Les tours d'image CLIP de LAION-2B sont prises en charge comme squelettes pré-entraînés pour le fine-tuning ou l'extraction de caractéristiques (sans classifieur)
    • vit_base_patch32_224_clip_laion2b
    • vit_large_patch14_224_clip_laion2b
    • vit_huge_patch14_224_clip_laion2b
    • vit_giant_patch14_224_clip_laion2b

7 septembre 2022

  • La page d’accueil de la documentation timm de Hugging Face est désormais disponible, retrouvez plus de contenu ici à l’avenir
  • Ajouter les poids BEiT-v2 pour les modèles base et large 224x224 depuis https://github.com/microsoft/unilm/tree/master/beit2
  • Ajout de plus de poids dans la maxxvit série, incluant un pico (7.5pico (7,5 M de paramètres, 1,9 GMACs), deux tiny variantes :
    • maxvit_rmlp_pico_rw_256 - 80.5 @ 256, 81.3 @ 320 (T)
    • maxvit_tiny_rw_224 - 83.5 @ 224 (G)
    • maxvit_rmlp_tiny_rw_256 - 84.2 @ 256, 84.8 @ 320 (T)

29 août 2022

  • Par défaut, la taille de la fenêtre de MaxVit est proportionnelle à img_size. Ajoutez un nouveau poids RelPosMlp MaxViT qui exploite cette propriété :
    • maxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.6 @ 320 (T)

26 août 2022

  • CoAtNet (https://arxiv.org/abs/2106.04803) et MaxVit (https://arxiv.org/abs/2204.01697) timm modèles originaux de timm
    • les deux se trouvent dans la définition du modèle maxxvit.py et contiennent de nombreuses expériences hors du périmètre des articles originaux
    • une version Tensorflow inachevée des auteurs de MaxVit peut être trouvée à https://github.com/google-research/maxvit
  • Poids pré-entraînés timm initiaux pour CoAtNet et MaxVit (en cours d'ajout) :
    • coatnet_nano_rw_224 - 81.7 @ 224 (T)
    • coatnet_rmlp_nano_rw_224 - 82.0 @ 224, 82.8 @ 320 (T)
    • coatnet_0_rw_224 - 82,4 (T) — REMARQUE les coatnets « 0 » de timm ont 2 blocs de 3e étape supplémentaires
    • coatnet_bn_0_rw_224 - 82.4 (T)
    • maxvit_nano_rw_256 - 82.9 @ 256 (T)
    • coatnet_rmlp_1_rw_224 - 83.4 @ 224, 84 @ 320 (T)
    • coatnet_1_rw_224 - 83.6 @ 224 (G)
    • (T) = TPU entraîné avec le code d'entraînement de la branche bits_and_tpu, (G) = GPU entraîné
  • GCVit (poids adaptés depuis https://github.com/NVlabs/GCVit, code réécrit à 100 % dans timm pour des raisons de licence)
  • MViT-V2 (vit multi-échelle, adapté de https://github.com/facebookresearch/mvit)
  • EfficientFormer (adapté de https://github.com/snap-research/EfficientFormer)
  • PyramidVisionTransformer-V2 (adapté de https://github.com/whai362/PVT)
  • Prise en charge de « Fast Norm » pour LayerNorm et GroupNorm qui évite le passage en float32 avec AMP (utilise APEX LN si disponible pour un gain supplémentaire)

15 août 2022

  • Ajout des poids de ConvNeXt atto
    • convnext_atto - 75.7 @ 224, 77.0 @ 288
    • convnext_atto_ols - 75.9 @ 224, 77.2 @ 288

5 août 2022

  • Définitions de modèles ConvNeXt plus petits et personnalisés avec poids
    • convnext_femto - 77.5 @ 224, 78.7 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_nano_ols - 80.9 @ 224, 81.6 @ 288
  • Mise à jour d'EdgeNeXt pour améliorer l'export ONNX, ajouter une nouvelle variante de base et les poids d'origine (https://github.com/mmaaz60/EdgeNeXt)

28 juillet 2022

  • Ajout des poids du modèle DeiT-III Medium (width=512, depth=12, num_heads=8) tout juste créés. Merci à Hugo Touvron !

27 juillet 2022

  • Tous les fichiers csv de résultats de benchmark et de validation à l'exécution sont enfin à jour !
  • Quelques poids et définitions de modèles supplémentaires ajoutés :
    • darknetaa53 - 79.8 @ 256, 80.5 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* poids entraînés principalement sur TPU avec la branche bits_and_tpu. Merci au programme TRC !
  • Ajouter la prise en charge de output_stride=8 et 16 à ConvNeXt (dilatation)
  • Correction du problème de redimensionnement de pos_emb pour les modèles deit3
  • Version 0.6.7 publiée sur PyPi (avec les correctifs de bugs ci-dessus et de nouveaux poids depuis la 0.6.5)

8 juillet 2022

Plus de modèles, plus de correctifs

  • Modèles de recherche officiels (avec poids) ajoutés :
  • Mes propres modèles :
    • Ajout de définitions de ResNet de petite taille sur demande, avec 1 bloc répété pour les architectures basic et bottleneck (resnet10 et resnet14)
    • CspNet refactorisé avec une configuration dataclass et une option CrossStage3 (cs3) simplifiée. Ces définitions sont plus proches des backbones de YOLO-v5+.
    • Plus de réglages sur la position relative vit. Deux modèles srelpos (position relative partagée) entraînés, et un modèle de taille moyenne avec jeton de classe.
    • Ajouter un mode de sous-échantillonnage alternatif à EdgeNeXt et entraîner un modèle small. Meilleur que le modèle small original, mais pas leurs nouveaux poids entraînés USI.
  • Mes propres résultats de poids de modèle (tous issus de l'entraînement sur ImageNet-1k)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • Les poids cs3, darknet et vit_*relpos ci-dessus ont tous été entraînés sur TPU grâce au programme TRC ! Le reste a été entraîné sur des GPU en surchauffe.
  • Corrections de la prise en charge du Hugging Face Hub vérifiées, notebook de démonstration à venir
  • Les poids / configurations pré-entraînés peuvent être chargés de manière externe (par exemple depuis le disque local) avec prise en charge de l'adaptation des têtes.
  • Ajouter la prise en charge de la modification des extensions d’images analysées par les jeux de données/lecteurs de timm. Voir (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
  • Implémentation LayerNorm par défaut de ConvNeXt à utiliser F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2) via LayerNorm2d dans tous les cas. Légèrement plus lent que l'implémentation personnalisée précédente sur certains matériels (par exemple Ampere avec CL), mais globalement moins de régressions sur une gamme plus large de matériels et de versions de PyTorch. L'implémentation précédente existe en tant que LayerNormExp2d dans models/layers/norm.py
    • un peu plus lent que l'implémentation personnalisée précédente sur certains matériels (par exemple Ampere avec CL), mais globalement moins de régressions sur une gamme plus large de matériels et de versions de PyTorch.
    • l'implémentation précédente existe sous le nom LayerNormExp2d dans models/layers/norm.py
  • De nombreuses corrections de bogues
  • Test actuellement en cours pour la prochaine version 0.6.x sur PyPi
  • Le pré-entraînement de modèles plus grands avec LeViT reste un travail en cours, ils ne s’entraînent pas bien / facilement sans distillation. Le moment est-il venu d’ajouter le support de la distillation (enfin) ?
  • Entraînement des poids ImageNet-22k + finetune en cours, travail sur la prise en charge de multiples poids (lentement) qui avance (il y a BEAUCOUP de poids, soupir) …

13 mai 2022

  • Modèles et poids officiels de Swin-V2 ajoutés depuis (https://github.com/microsoft/Swin-Transformer). Nettoyés pour prendre en charge torchscript.
  • Quelques refactorisations pour l'implémentation existante de timm Swin-V2-CR, il est probable que nous fassions un peu plus pour rapprocher certaines parties de la version officielle et décider si nous devons fusionner certains aspects.
  • Expériences supplémentaires sur la position relative et la normalisation post-résiduelle des Vision Transformer (toutes entraînées sur TPU grâce au programme TRC)
    • vit_relpos_small_patch16_224 - 81,5 @ 224, 82,5 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_relpos_medium_patch16_rpn_224 - 82,3 @ 224, 83,1 @ 320 — pos rel + res-post-norm, pas de jeton de classe, pool moyen
    • vit_relpos_medium_patch16_224 - 82,5 @ 224, 83,3 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_relpos_base_patch16_gapcls_224 - 82,8 @ 224, 83,9 @ 320 — pos rel, layer scale, class token, avg pool (par erreur)
  • Faire revivre la variante « medium » du modèle ViT (512 dimensions, 8 têtes), après l’avoir utilisée dans un modèle « small » pré-DeiT pour la première implémentation de ViT en 2020
  • Ajout du support des positions relatives ViT pour basculer entre l’implémentation existante et certains ajouts de l’implémentation officielle Swin-V2 pour des essais futurs
  • Implémentation de Sequencer2D (https://arxiv.org/abs/2205.01972), ajoutée via une PR de l'auteur (https://github.com/okojoalg)

2 mai 2022

  • Expériences sur Vision Transformer ajoutant la position relative (log-coord de Swin-V2) (vision_transformer_relpos.py) et les branches Residual Post-Norm (de Swin-V2) (vision_transformer*.py)
    • vit_relpos_base_patch32_plus_rpn_256 - 79,5 @ 256, 80,6 @ 320 — pos rel + largeur étendue + res-post-norm, pas de jeton de classe, pool moyen
    • vit_relpos_base_patch16_224 - 82,5 @ 224, 83,6 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_base_patch16_rpn_224 - 82.3 @ 224 — pos rel + res-post-norm, pas de jeton de classe, moyenne
  • Refactorisation du Vision Transformer pour supprimer la couche de représentation qui n'était utilisée que dans le vit initial et rarement depuis avec les nouveaux pré-entraînements (par exemple How to Train Your ViT)
  • Les modèles vit_* prennent en charge la suppression du jeton de classe, l'utilisation du pooling moyen global et l'utilisation de fc_norm (comme dans beit, mae).

22 avril 2022

  • Les modèles timm sont désormais officiellement pris en charge dans fast.ai ! Juste à temps pour le nouveau cours Practical Deep Learning. Le lien de la documentation timmdocs a été mis à jour vers timm.fast.ai.
  • Deux autres poids de modèle ajoutés dans la série entraînée sur TPU . Certains pré-entraînements In22k sont toujours en cours.
    • seresnext101d_32x8d - 83.69 @ 224, 84.35 @ 288
    • seresnextaa101d_32x8d (anti-aliasé avec AvgPool2d) - 83.85 @ 224, 84.57 @ 288

23 mars 2022

  • Ajouter l’option ParallelBlock et LayerScale aux modèles vit de base pour prendre en charge les configurations de modèles de Three things everyone should know about ViT
  • convnext_tiny_hnf (normalisation de la tête en premier) poids entraînés avec la recette A2 (ou proche), 82,2 % top-1, pourrait être amélioré avec plus d'époques.

21 mars 2022

  • Fusion de norm_norm_norm. IMPORTANT cette mise à jour pour une future version 0.6.x risque de déstabiliser la branche master pendant un certain temps. La branche 0.5.x ou une version 0.5.x antérieure peut être utilisée si la stabilité est requise.
  • Mise à jour importante des poids (entraînés sur TPU) comme décrit dans ce release
    • regnety_040 - 82.3 @ 224, 82.96 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_040 - 82,44 @ 224, 83,18 @ 288 (timm pre-act)
    • regnetv_064 - 83,1 @ 224, 83,71 @ 288 (timm pre-act)
    • regnetz_040 - 83.67 @ 256, 84.25 @ 320
    • regnetz_040h - 83,77 @ 256, 84,5 @ 320 (avec fc supplémentaire dans la tête)
    • resnetv2_50d_gn - 80,8 @ 224, 81,96 @ 288 (pre-act GroupNorm)
    • resnetv2_50d_evos 80,77 @ 224, 82,04 @ 288 (pre-act EvoNormS)
    • regnetz_c16_evos - 81,9 @ 256, 82,64 @ 320 (EvoNormS)
    • regnetz_d8_evos - 83,42 @ 256, 84,04 @ 320 (EvoNormS)
    • xception41p - 82 @ 299 (timm pre-act)
    • xception65 - 83.17 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 83.85 @ 256, 84.44 @ 320
  • Correctif du support du hub HuggingFace avec les premières bases permettant des « sources de configuration » alternatives pour les définitions et les poids des modèles pré-entraînés (support générique des fichiers locaux / URL distantes bientôt)
  • Implémentation de SwinTransformer-V2 ajoutée. Soumise par Christoph Reich. Les expériences d'entraînement et les modifications de modèle de ma part sont en cours, il est donc possible de rencontrer des ruptures de compatibilité.
  • Modèles / poids Swin-S3 (AutoFormerV2) ajoutés depuis https://github.com/microsoft/Cream/tree/main/AutoFormerV2
  • Modèles MobileViT avec des poids adaptés de https://github.com/apple/ml-cvnets
  • Modèles PoolFormer avec des poids adaptés de https://github.com/sail-sg/poolformer
  • Modèles VOLO avec des poids adaptés de https://github.com/sail-sg/volo
  • Travaux importants portant sur l'expérimentation de couches de normalisation autres que BatchNorm, telles que EvoNorm, FilterResponseNorm, GroupNorm, etc.
  • Amélioration de la prise en charge des couches de normalisation et d'activation alternatives (‘NormAct’) ajoutées à un certain nombre de modèles, notamment EfficientNet/MobileNetV3, RegNet et Xception aligné
  • Prise en charge des convolutions groupées ajoutée à la famille EfficientNet
  • Ajouter une API de « group matching » à tous les modèles pour permettre le regroupement des paramètres du modèle en vue de l’application d’un déclin « layer-wise » du taux d’apprentissage, ainsi qu’un facteur d’échelle du taux d’apprentissage ajouté au planificateur de taux d’apprentissage
  • Prise en charge du gradient checkpointing ajoutée à de nombreux modèles
  • forward_head(x, pre_logits=False) fonction ajoutée à tous les modèles pour permettre des appels séparés de forward_features + forward_head
  • Tous les modèles vision transformer et vision MLP sont mis à jour pour retourner des fonctionnalités non agrégées / non sélectionnées par jeton depuis forward_features, afin d’assurer la cohérence avec les modèles CNN ; la sélection de jetons ou l’agrégation est désormais appliquée dans forward_head

2 février 2022

  • Chris Hughes a publié hier sur son blog un tour d’horizon exhaustif de timm. La lecture en vaut vraiment la peine. Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide
  • Je prépare actuellement la fusion de la branche norm_norm_norm vers master (version 0.6.x) d'ici la semaine prochaine. Les modifications sont plus étendues que d'habitude et pourraient déstabiliser ou casser certaines utilisations de l'API des modèles (l'objectif étant d'assurer une compatibilité ascendante complète). Faites donc attention à l'installation via pip install git+https://github.com/rwightman/pytorch-image-models ! Les versions 0.5.x et la branche 0.5.x resteront stables avec un ou deux cherry-picks jusqu'à ce que la situation se stabilise. Il est recommandé de rester sur l'installation via pypi pendant un moment si vous souhaitez la stabilité.
    • Les modifications sont plus étendues que d'habitude et peuvent déstabiliser ou casser certaines utilisations de l'API des modèles (l'objectif étant d'assurer une compatibilité rétroactive complète). Faites donc attention aux installations via pip install git+https://github.com/rwightman/pytorch-image-models !
    • Les versions 0.5.x et la branche 0.5.x resteront stables avec un ou deux cherry-picks jusqu’à ce que la situation se stabilise. Il est recommandé de privilégier l’installation via pypi pendant un certain temps si vous souhaitez une version stable.

14 janvier 2022

  • Version 0.5.4 avec publication à venir sur pypi. Il y a un moment que la dernière mise à jour sur pypi n’a pas eu lieu et des modifications plus risquées seront bientôt fusionnées dans la branche principale…
  • Ajout des modèles ConvNeXT avec les poids de l’implémentation officielle (https://github.com/facebookresearch/ConvNeXt), quelques ajustements de performance, compatible avec les fonctionnalités de timm
  • J'ai essayé d'entraîner quelques petits modèles (~1,8 à 3 M de paramètres) optimisés pour le mobile. Certains sont déjà bons, d'autres arrivent…
    • mnasnet_small - 65,6 top-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • Modèles TinyNet ajoutés par rsomani95
  • LCNet ajouté via l'architecture MobileNetV3

5 janvier 2023

23 déc. 2022 🎄☃

  • Ajouter les modèles et poids FlexiViT de https://github.com/google-research/big_vision (consultez le papier sur https://arxiv.org/abs/2212.08013)
    • NOTE actuellement, le redimensionnement est statique lors de la création du modèle, l'échantillonnage dynamique de la taille de patch en cours d'exécution / d'entraînement est en cours de développement
  • De nombreux autres modèles ont été mis à jour pour prendre en charge les poids multiples et sont désormais téléchargeables via le hub HF (convnext, efficientnet, mobilenet, vision_transformer*, beit)
  • Plus de tags de modèles pré-entraînés et d’ajustements, certains noms de modèles ont été modifiés (travail en cours sur les traductions de dépréciation, considérer la branche principale DEV pour le moment, utiliser 0.6.x pour un usage stable)
  • De nouveaux modèles pré-entraînés sur ImageNet-12k (sous-ensemble de 22k) apparaissent :
    • efficientnet_b5.in12k_ft_in1k - 85.9 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_nano.in12k_ft_in1k - 82.9 @ 288x288

8 déc. 2022

  • Ajouter ‘EVA l’ à vision_transformer.py, pré-entraînement MIM de ViT-L/14 au style MAE avec des cibles EVA-CLIP, fine-tuning sur ImageNet-1k (avec ImageNet-22k intermédiaire pour certains)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2lien
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2lien
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5lien
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5lien

6 déc. 2022

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2lien
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7lien
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7lien
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6lien

5 déc. 2022

  • Version préliminaire (0.8.0dev0) de la prise en charge de plusieurs poids (model_arch.pretrained_tag). Installer avec pip install --pre timm
    • vision_transformer, maxvit, convnext sont les trois premières implémentations de modèles avec prise en charge
    • Les noms des modèles changent avec cela (les fonctions précédentes _21k, etc. seront fusionnées), nous sommes toujours en train de régler la gestion de l'obsolescence
    • Des bugs sont probables, mais j'ai besoin de vos retours, alors n'hésitez pas à l'essayer.
    • si la stabilité est requise, veuillez utiliser les versions 0.6.x publiées sur pypi ou cloner depuis la branche 0.6.x
  • La prise en charge de la compilation PyTorch 2.0 est ajoutée dans train/validate/inference/benchmark, utilisez l'argument --torchcompile
  • Le script d’inférence permet un contrôle plus fin de la sortie : sélectionnez k pour l’indice et la probabilité de la classe principale, avec une sortie au format json, csv ou parquet
  • Ajouter un ensemble complet de poids de la tour d’images CLIP affinés, issus des modèles LAION-2B et des modèles OpenAI CLIP d’origine
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5lien
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2lien
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4lien
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2lien
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8lien
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8lien
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8lien
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2lien
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4lien
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8lien
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6lien
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6lien
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6lien
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6lien
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9lien
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9lien
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9lien
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9lien
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5lien
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9lien
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5lien
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45lien
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45lien
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45lien
  • Port des poids MaxViT TensorFlow de l'implémentation officielle située à https://github.com/google-research/maxvit
    • Les baisses observées pour les poids de fine-tuning in21k redimensionnés à 384/512 étaient plus importantes que prévu, avec un possible manque de détails, mais le fine-tuning 21k semblait sensible aux petits changements de prétraitement
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2lien
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8lien
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704lien
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2lien
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8lien
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9lien
maxvit_base_tf_512.in1k86.6119.9138704lien
maxvit_large_tf_512.in1k86.5212.3244.8942.2lien
maxvit_base_tf_384.in1k86.3119.673.8332.9lien
maxvit_large_tf_384.in1k86.2212132.6445.8lien
maxvit_small_tf_512.in1k86.169.167.3383.8lien
maxvit_tiny_tf_512.in1k85.73133.5257.6lien
maxvit_small_tf_384.in1k85.56935.9183.6lien
maxvit_tiny_tf_384.in1k85.13117.5123.4lien
maxvit_large_tf_224.in1k84.9211.843.7127.4lien
maxvit_base_tf_224.in1k84.9119.52495lien
maxvit_small_tf_224.in1k84.468.911.753.2lien
maxvit_tiny_tf_224.in1k83.430.95.635.8lien

15 octobre 2022

  • Améliorations des scripts d'entraînement et de validation
  • Prise en charge des périphériques non-GPU (c.-à-d. CPU)
  • Compatibilité SLURM pour le script d'entraînement
  • Prise en charge des jeux de données HF (via ReaderHfds)
  • Améliorations du chargement de données TFDS/WDS (remplissage/enroulement des échantillons pour une utilisation distribuée corrigé par rapport à l'estimation du nombre d'échantillons)
  • support de in_chans !=3 pour les scripts / chargeurs
  • Optimiseur Adan
  • Permet d'activer le planification du taux d'apprentissage par étape via args
  • Les « parsers » du jeu de données ont été renommés en « readers », plus descriptif de leur objectif
  • Arguments AMP modifiés, APEX via --amp-impl apex, bfloat16 pris en charge via --amp-dtype bfloat16
  • La branche principale a été basculée sur la version 0.7.x, et la version 0.6x a été forkée pour la publication stable des ajouts de poids uniquement
  • renommage de la branche master -> main

10 octobre 2022

  • Plus de poids dans la maxxvit série, incl. le premier bloc ConvNeXt basé sur coatnext et maxxvit expériences :
    • coatnext_nano_rw_224 - 82.0 @ 224 (G) — (utilise le bloc conv de ConvNeXt, sans BatchNorm)
    • maxxvit_rmlp_nano_rw_256 - 83,0 @ 256, 83,7 @ 320 (G) (utilise le bloc conv de ConvNeXt, sans BN)
    • maxvit_rmlp_small_rw_224 - 84.5 @ 224, 85.1 @ 320 (G)
    • maxxvit_rmlp_small_rw_256 - 84,6 @ 256, 84,9 @ 288 (G) — pourrait être entraîné de manière plus performante, les hyperparamètres nécessitent un réglage (utilise un bloc ConvNeXt, sans BN)
    • coatnet_rmlp_2_rw_224 - 84.6 @ 224, 85 @ 320 (T)
    • NOTE : les poids officiels de MaxVit (in1k) ont été publiés sur https://github.com/google-research/maxvit — un travail supplémentaire est nécessaire pour les porter et les adapter, car mon implémentation a été créée indépendamment de la leur et présente quelques petites différences + tout le problème du padding « same » de TF.

23 septembre 2022

  • Les tours d'image CLIP de LAION-2B sont prises en charge comme squelettes pré-entraînés pour le fine-tuning ou l'extraction de caractéristiques (sans classifieur)
    • vit_base_patch32_224_clip_laion2b
    • vit_large_patch14_224_clip_laion2b
    • vit_huge_patch14_224_clip_laion2b
    • vit_giant_patch14_224_clip_laion2b

7 septembre 2022

  • La page d’accueil de la documentation timm de Hugging Face est désormais disponible, retrouvez plus de contenu ici à l’avenir
  • Ajouter les poids BEiT-v2 pour les modèles base et large 224x224 depuis https://github.com/microsoft/unilm/tree/master/beit2
  • Ajout de plus de poids dans la maxxvit série, incluant un pico (7.5pico (7,5 M de paramètres, 1,9 GMACs), deux tiny variantes :
    • maxvit_rmlp_pico_rw_256 - 80.5 @ 256, 81.3 @ 320 (T)
    • maxvit_tiny_rw_224 - 83.5 @ 224 (G)
    • maxvit_rmlp_tiny_rw_256 - 84.2 @ 256, 84.8 @ 320 (T)

29 août 2022

  • Par défaut, la taille de la fenêtre de MaxVit est proportionnelle à img_size. Ajoutez un nouveau poids RelPosMlp MaxViT qui exploite cette propriété :
    • maxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.6 @ 320 (T)

26 août 2022

  • CoAtNet (https://arxiv.org/abs/2106.04803) et MaxVit (https://arxiv.org/abs/2204.01697) timm modèles originaux de timm
    • les deux se trouvent dans la définition du modèle maxxvit.py et contiennent de nombreuses expériences hors du périmètre des articles originaux
    • une version Tensorflow inachevée des auteurs de MaxVit peut être trouvée à https://github.com/google-research/maxvit
  • Poids pré-entraînés timm initiaux pour CoAtNet et MaxVit (en cours d'ajout) :
    • coatnet_nano_rw_224 - 81.7 @ 224 (T)
    • coatnet_rmlp_nano_rw_224 - 82.0 @ 224, 82.8 @ 320 (T)
    • coatnet_0_rw_224 - 82,4 (T) — REMARQUE les coatnets « 0 » de timm ont 2 blocs de 3e étape supplémentaires
    • coatnet_bn_0_rw_224 - 82.4 (T)
    • maxvit_nano_rw_256 - 82.9 @ 256 (T)
    • coatnet_rmlp_1_rw_224 - 83.4 @ 224, 84 @ 320 (T)
    • coatnet_1_rw_224 - 83.6 @ 224 (G)
    • (T) = TPU entraîné avec le code d'entraînement de la branche bits_and_tpu, (G) = GPU entraîné
  • GCVit (poids adaptés depuis https://github.com/NVlabs/GCVit, code réécrit à 100 % dans timm pour des raisons de licence)
  • MViT-V2 (vit multi-échelle, adapté de https://github.com/facebookresearch/mvit)
  • EfficientFormer (adapté de https://github.com/snap-research/EfficientFormer)
  • PyramidVisionTransformer-V2 (adapté de https://github.com/whai362/PVT)
  • Prise en charge de « Fast Norm » pour LayerNorm et GroupNorm qui évite le passage en float32 avec AMP (utilise APEX LN si disponible pour un gain supplémentaire)

15 août 2022

  • Ajout des poids de ConvNeXt atto
    • convnext_atto - 75.7 @ 224, 77.0 @ 288
    • convnext_atto_ols - 75.9 @ 224, 77.2 @ 288

5 août 2022

  • Définitions de modèles ConvNeXt plus petits et personnalisés avec poids
    • convnext_femto - 77.5 @ 224, 78.7 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_nano_ols - 80.9 @ 224, 81.6 @ 288
  • Mise à jour d'EdgeNeXt pour améliorer l'export ONNX, ajouter une nouvelle variante de base et les poids d'origine (https://github.com/mmaaz60/EdgeNeXt)

28 juillet 2022

  • Ajout des poids du modèle DeiT-III Medium (width=512, depth=12, num_heads=8) tout juste créés. Merci à Hugo Touvron !

27 juillet 2022

  • Tous les fichiers csv des résultats de benchmark et de validation à l'exécution sont à jour !
  • Quelques poids et définitions de modèles supplémentaires ajoutés :
    • darknetaa53 - 79.8 @ 256, 80.5 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* poids entraînés principalement sur TPU avec la branche bits_and_tpu. Merci au programme TRC !
  • Ajouter la prise en charge de output_stride=8 et 16 à ConvNeXt (dilatation)
  • Correction du problème de redimensionnement de pos_emb pour les modèles deit3
  • Version 0.6.7 publiée sur PyPi (avec les correctifs de bugs ci-dessus et de nouveaux poids depuis la 0.6.5)

8 juillet 2022

Plus de modèles, plus de correctifs

  • Modèles de recherche officiels (avec poids) ajoutés :
  • Mes propres modèles :
    • Ajout de définitions de ResNet de petite taille sur demande, avec 1 bloc répété pour les architectures basic et bottleneck (resnet10 et resnet14)
    • CspNet refactorisé avec une configuration dataclass et une option CrossStage3 (cs3) simplifiée. Ces définitions sont plus proches des backbones de YOLO-v5+.
    • Plus de réglages sur la position relative vit. Deux modèles srelpos (position relative partagée) entraînés, et un modèle de taille moyenne avec jeton de classe.
    • Ajouter un mode de sous-échantillonnage alternatif à EdgeNeXt et entraîner un modèle small. Meilleur que le modèle small original, mais pas leurs nouveaux poids entraînés USI.
  • Mes propres résultats de poids de modèle (tous issus de l'entraînement sur ImageNet-1k)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • Les poids cs3, darknet et vit_*relpos ci-dessus ont tous été entraînés sur TPU grâce au programme TRC ! Le reste a été entraîné sur des GPU en surchauffe.
  • Corrections de la prise en charge du Hugging Face Hub vérifiées, notebook de démonstration à venir
  • Les poids / configurations pré-entraînés peuvent être chargés de manière externe (par exemple depuis le disque local) avec prise en charge de l'adaptation des têtes.
  • Ajouter la prise en charge de la modification des extensions d’images analysées par les jeux de données/analyseurs de timm. Voir (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
  • Implémentation LayerNorm par défaut de ConvNeXt à utiliser F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2) via LayerNorm2d dans tous les cas. Légèrement plus lent que l'implémentation personnalisée précédente sur certains matériels (par exemple Ampere avec CL), mais globalement moins de régressions sur une gamme plus large de matériels et de versions de PyTorch. L'implémentation précédente existe en tant que LayerNormExp2d dans models/layers/norm.py
    • un peu plus lent que l'implémentation personnalisée précédente sur certains matériels (par exemple Ampere avec CL), mais globalement moins de régressions sur une gamme plus large de matériels et de versions de PyTorch.
    • l'implémentation précédente existe sous le nom LayerNormExp2d dans models/layers/norm.py
  • De nombreuses corrections de bogues
  • Test actuellement en cours pour la prochaine version 0.6.x sur PyPi
  • Le pré-entraînement de modèles plus grands avec LeViT reste un travail en cours, ils ne s’entraînent pas bien / facilement sans distillation. Le moment est-il venu d’ajouter le support de la distillation (enfin) ?
  • Entraînement des poids ImageNet-22k + finetune en cours, travail sur la prise en charge de multiples poids (lentement) qui avance (il y a BEAUCOUP de poids, soupir) …

13 mai 2022

  • Modèles et poids officiels de Swin-V2 ajoutés depuis (https://github.com/microsoft/Swin-Transformer). Nettoyés pour prendre en charge torchscript.
  • Quelques refactorisations pour l'implémentation existante de timm Swin-V2-CR, il est probable que nous fassions un peu plus pour rapprocher certaines parties de la version officielle et décider si nous devons fusionner certains aspects.
  • Expériences supplémentaires sur la position relative et la normalisation post-résiduelle des Vision Transformer (toutes entraînées sur TPU grâce au programme TRC)
    • vit_relpos_small_patch16_224 - 81,5 @ 224, 82,5 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_relpos_medium_patch16_rpn_224 - 82,3 @ 224, 83,1 @ 320 — pos rel + res-post-norm, pas de jeton de classe, pool moyen
    • vit_relpos_medium_patch16_224 - 82,5 @ 224, 83,3 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_relpos_base_patch16_gapcls_224 - 82,8 @ 224, 83,9 @ 320 — pos rel, layer scale, class token, avg pool (par erreur)
  • Faire revivre la variante « medium » du modèle ViT (512 dimensions, 8 têtes), après l’avoir utilisée dans un modèle « small » pré-DeiT pour la première implémentation de ViT en 2020
  • Ajout du support des positions relatives ViT pour basculer entre l’implémentation existante et certains ajouts de l’implémentation officielle Swin-V2 pour des essais futurs
  • Implémentation de Sequencer2D (https://arxiv.org/abs/2205.01972), ajoutée via une PR de l'auteur (https://github.com/okojoalg)

2 mai 2022

  • Expériences sur Vision Transformer ajoutant la position relative (log-coord de Swin-V2) (vision_transformer_relpos.py) et les branches Residual Post-Norm (de Swin-V2) (vision_transformer*.py)
    • vit_relpos_base_patch32_plus_rpn_256 - 79,5 @ 256, 80,6 @ 320 — pos rel + largeur étendue + res-post-norm, pas de jeton de classe, pool moyen
    • vit_relpos_base_patch16_224 - 82,5 @ 224, 83,6 @ 320 — pos rel, layer scale, pas de class token, avg pool
    • vit_base_patch16_rpn_224 - 82.3 @ 224 — pos rel + res-post-norm, pas de jeton de classe, moyenne
  • Refactorisation du Vision Transformer pour supprimer la couche de représentation qui n'était utilisée que dans le vit initial et rarement depuis avec les nouveaux pré-entraînements (par exemple How to Train Your ViT)
  • Les modèles vit_* prennent en charge la suppression du jeton de classe, l'utilisation du pooling moyen global et l'utilisation de fc_norm (comme dans beit, mae).

22 avril 2022

  • Les modèles timm sont désormais officiellement pris en charge dans fast.ai ! Juste à temps pour le nouveau cours Practical Deep Learning. Le lien de la documentation timmdocs a été mis à jour vers timm.fast.ai.
  • Deux autres poids de modèle ajoutés dans la série entraînée sur TPU . Certains pré-entraînements In22k sont toujours en cours.
    • seresnext101d_32x8d - 83.69 @ 224, 84.35 @ 288
    • seresnextaa101d_32x8d (anti-aliasé avec AvgPool2d) - 83.85 @ 224, 84.57 @ 288

23 mars 2022

  • Ajouter l’option ParallelBlock et LayerScale aux modèles vit de base pour prendre en charge les configurations de modèles de Three things everyone should know about ViT
  • convnext_tiny_hnf (normalisation de la tête en premier) poids entraînés avec la recette A2 (ou proche), 82,2 % top-1, pourrait être amélioré avec plus d'époques.

21 mars 2022

  • Fusion de norm_norm_norm. IMPORTANT cette mise à jour pour une future version 0.6.x risque de déstabiliser la branche master pendant un certain temps. La branche 0.5.x ou une version 0.5.x antérieure peut être utilisée si la stabilité est requise.
  • Mise à jour importante des poids (entraînés sur TPU) comme décrit dans ce release
    • regnety_040 - 82.3 @ 224, 82.96 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_040 - 82,44 @ 224, 83,18 @ 288 (timm pre-act)
    • regnetv_064 - 83,1 @ 224, 83,71 @ 288 (timm pre-act)
    • regnetz_040 - 83.67 @ 256, 84.25 @ 320
    • regnetz_040h - 83,77 @ 256, 84,5 @ 320 (avec fc supplémentaire dans la tête)
    • resnetv2_50d_gn - 80,8 @ 224, 81,96 @ 288 (pre-act GroupNorm)
    • resnetv2_50d_evos 80,77 @ 224, 82,04 @ 288 (pre-act EvoNormS)
    • regnetz_c16_evos - 81,9 @ 256, 82,64 @ 320 (EvoNormS)
    • regnetz_d8_evos - 83,42 @ 256, 84,04 @ 320 (EvoNormS)
    • xception41p - 82 @ 299 (timm pre-act)
    • xception65 - 83.17 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 83.85 @ 256, 84.44 @ 320
  • Correctif du support du hub HuggingFace avec les premières bases permettant des « sources de configuration » alternatives pour les définitions et les poids des modèles pré-entraînés (support générique des fichiers locaux / URL distantes bientôt)
  • Implémentation de SwinTransformer-V2 ajoutée. Soumise par Christoph Reich. Les expériences d'entraînement et les modifications de modèle de ma part sont en cours, il est donc possible de rencontrer des ruptures de compatibilité.
  • Modèles / poids Swin-S3 (AutoFormerV2) ajoutés depuis https://github.com/microsoft/Cream/tree/main/AutoFormerV2
  • Modèles MobileViT avec des poids adaptés de https://github.com/apple/ml-cvnets
  • Modèles PoolFormer avec des poids adaptés de https://github.com/sail-sg/poolformer
  • Modèles VOLO avec des poids adaptés de https://github.com/sail-sg/volo
  • Travaux importants portant sur l'expérimentation de couches de normalisation autres que BatchNorm, telles que EvoNorm, FilterResponseNorm, GroupNorm, etc.
  • Amélioration de la prise en charge des couches de normalisation et d'activation alternatives (‘NormAct’) ajoutées à un certain nombre de modèles, notamment EfficientNet/MobileNetV3, RegNet et Xception aligné
  • Prise en charge des convolutions groupées ajoutée à la famille EfficientNet
  • Ajouter une API de « group matching » à tous les modèles pour permettre le regroupement des paramètres du modèle en vue de l’application d’un déclin « layer-wise » du taux d’apprentissage, ainsi qu’un facteur d’échelle du taux d’apprentissage ajouté au planificateur de taux d’apprentissage
  • Prise en charge du gradient checkpointing ajoutée à de nombreux modèles
  • forward_head(x, pre_logits=False) fonction ajoutée à tous les modèles pour permettre des appels séparés de forward_features + forward_head
  • Tous les modèles vision transformer et vision MLP sont mis à jour pour retourner des fonctionnalités non agrégées / non sélectionnées par jeton depuis forward_features, afin d’assurer la cohérence avec les modèles CNN ; la sélection de jetons ou l’agrégation est désormais appliquée dans forward_head

2 février 2022

  • Chris Hughes a publié hier sur son blog un tour d’horizon exhaustif de timm. La lecture en vaut vraiment la peine. Getting Started with PyTorch Image Models (timm): A Practitioner’s Guide
  • Je prépare actuellement la fusion de la branche norm_norm_norm vers master (version 0.6.x) d'ici la semaine prochaine. Les modifications sont plus étendues que d'habitude et pourraient déstabiliser ou casser certaines utilisations de l'API des modèles (l'objectif étant d'assurer une compatibilité ascendante complète). Faites donc attention à l'installation via pip install git+https://github.com/rwightman/pytorch-image-models ! Les versions 0.5.x et la branche 0.5.x resteront stables avec un ou deux cherry-picks jusqu'à ce que la situation se stabilise. Il est recommandé de rester sur l'installation via pypi pendant un moment si vous souhaitez la stabilité.
    • Les modifications sont plus étendues que d'habitude et peuvent déstabiliser ou casser certaines utilisations de l'API des modèles (l'objectif étant d'assurer une compatibilité rétroactive complète). Faites donc attention aux installations via pip install git+https://github.com/rwightman/pytorch-image-models !
    • Les versions 0.5.x et la branche 0.5.x resteront stables avec un ou deux cherry-picks jusqu’à ce que la situation se stabilise. Il est recommandé de privilégier l’installation via pypi pendant un certain temps si vous souhaitez une version stable.

14 janvier 2022

  • Version 0.5.4 avec publication à venir sur pypi. Il y a un moment que la dernière mise à jour sur pypi n’a pas eu lieu et des modifications plus risquées seront bientôt fusionnées dans la branche principale…
  • Ajout des modèles ConvNeXT avec les poids de l’implémentation officielle (https://github.com/facebookresearch/ConvNeXt), quelques ajustements de performance, compatible avec les fonctionnalités de timm
  • J'ai essayé d'entraîner quelques petits modèles (~1,8 à 3 M de paramètres) optimisés pour le mobile. Certains sont déjà bons, d'autres arrivent…
    • mnasnet_small - 65,6 top-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • Modèles TinyNet ajoutés par rsomani95
  • LCNet ajouté via l'architecture MobileNetV3
Update on GitHub