Le parcours de modernisation de TorchVision – Mémoires d'un développeur de TorchVision – 3 PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le parcours de la modernisation de TorchVision – Mémoires d'un développeur de TorchVision – 3

Le parcours de la modernisation de TorchVision – Mémoires d'un développeur de TorchVision – 3

Cela fait un moment que je n'ai pas publié de nouvelle entrée sur les mémoires de TorchVision Series. Pensée, j'ai déjà partagé des nouvelles sur le blog officiel de PyTorch et sur Twitter, j'ai pensé que ce serait une bonne idée de parler davantage de ce qui s'est passé sur la dernière version de TorchVision (v0.12), de ce qui sortira sur la prochaine (v0.13) et de nos plans pour 2022H2. Mon objectif est d'aller au-delà d'un aperçu des nouvelles fonctionnalités et plutôt de fournir des informations sur l'orientation que nous souhaitons donner au projet dans les mois à venir.

TorcheVision v0.12 était une version importante avec un double objectif : a) mettre à jour nos politiques d'obsolescence et de contribution aux modèles pour améliorer la transparence et attirer davantage de contributeurs de la communauté et b) doubler nos efforts de modernisation en ajoutant de nouvelles architectures de modèles, des ensembles de données et des techniques de ML populaires.

Mise à jour de nos politiques

La clé d'un projet open source réussi est de maintenir une communauté saine et active qui y contribue et le fait avancer. Ainsi, un objectif important pour notre équipe est d'augmenter le nombre de contributions de la communauté, avec la vision à long terme de permettre à la communauté de contribuer à de grandes fonctionnalités (nouveaux modèles, techniques de ML, etc.) en plus des améliorations incrémentielles habituelles (corrections de bogues/doc , petites fonctionnalités, etc.).

Historiquement, même si la communauté était désireux pour apporter de telles fonctionnalités, notre équipe a hésité à les accepter. Le principal obstacle était l'absence d'une contribution concrète au modèle et d'une politique de dépréciation. Pour résoudre ce problème, Joao Gomes a travaillé avec la communauté pour rédiger et publier notre premier modèle de lignes directrices sur les contributions qui clarifie le processus de contribution de nouvelles architectures, de pondérations pré-formées et de fonctionnalités nécessitant une formation de modèle. De plus, Nicolas Hug a travaillé avec les développeurs principaux de PyTorch pour formuler et adopter une approche concrète politique de dépréciation.

Les changements susmentionnés ont eu des effets positifs immédiats sur le projet. La nouvelle politique de contribution nous a aidés à recevoir de nombreuses contributions de la communauté pour de grandes fonctionnalités (plus de détails ci-dessous) et la politique de dépréciation claire nous a permis de nettoyer notre base de code tout en garantissant que TorchVision offre de solides garanties de compatibilité descendante. Notre équipe est très motivée pour continuer à travailler avec les développeurs open source, les équipes de recherche et les créateurs de bibliothèques en aval pour maintenir TorchVision pertinent et frais. Si vous avez des commentaires, des commentaires ou une demande de fonctionnalité, veuillez nous contacter à nous.

Moderniser TorchVision

Ce n'est un secret pour personne que depuis quelques sorties nos l'objectif était d'ajouter à TorchVision tous les utilitaires d'augmentations, de pertes, de couches, de formation et de nouvelles architectures nécessaires afin que nos utilisateurs puissent facilement reproduire les résultats SOTA à l'aide de PyTorch. TorchVision v0.12 a continué dans cette voie :

  • Nos contributeurs de la communauté rockstar, Hu Ye et Zhiqiang Wang, ont contribué au SFC architecture qui est un modèle de détection d'objet en une étape.

  • Nicolas Hug a ajouté la prise en charge du flux optique dans TorchVision en ajoutant le RADEAU architecture.

  • Yiwen Song a ajouté la prise en charge de Transformateur de vision (ViT) et j'ai ajouté le ConvSuivant architecture avec des poids pré-formés améliorés.

  • Enfin avec le aider de notre communauté, nous avons ajouté 14 nouveau classement ainsi que 5 nouveaux flux optiques jeux de données.

  • Comme d'habitude, la version est accompagnée de nombreuses améliorations mineures, de corrections de bogues et d'améliorations de la documentation. Pour voir toutes les nouvelles fonctionnalités et la liste de nos contributeurs, veuillez consulter le Notes de version v0.12.

TorchVision v0.13 approche à grands pas, avec sa sortie prévue début juin. Il s'agit d'une très grosse version avec un nombre important de nouvelles fonctionnalités et d'importantes améliorations de l'API.

Conclure les modernisations et combler l'écart avec SOTA

Nous poursuivons notre voyage de modernisation de la bibliothèque en ajoutant les primitives, les architectures de modèles et les utilitaires de recette nécessaires pour produire des résultats SOTA pour les tâches clés de Computer Vision :

  • Avec l'aide de Victor Fomin, j'ai ajouté d'importantes techniques d'augmentation de données manquantes telles que AoûtMix, Gigue à grande échelle etc. Ces techniques nous ont permis de combler l'écart avec SOTA et de produire de meilleurs poids (voir ci-dessous).

  • Avec l'aide d'Aditya Oke, Hu Ye, Yassine Alouini et Abhijit Deo, nous avons ajouté d'importants éléments communs tels que le DropBlock couche, le MLP bloc, le CIOU & DIEU perte, etc. Enfin, j'ai travaillé avec Shen Li pour résoudre un problème de longue date sur PyTorch SyncBatchNorm couche qui a affecté les modèles de détection.

  • Hu Ye avec le soutien de Joao Gomes ajouté Transformateur Swing ainsi que des poids pré-formés améliorés. j'ai ajouté le EfficaceNetV2 architecture et plusieurs optimisations architecturales post-papier sur la mise en œuvre de RetinaNet, FasterRCNN et MaskRCNN.

  • Comme je l'ai mentionné plus tôt sur le blog PyTorch, nous avons déployé des efforts considérables pour améliorer nos poids pré-formés en créant une version améliorée recette de formation. Cela nous a permis d'améliorer la précision de nos Modèles de classification de 3 points de précision, réalisant de nouveaux SOTA pour diverses architectures. Un effort similaire a été réalisé pour Détection et segmentation, où nous avons amélioré la précision des modèles de plus de 8.1 mAP en moyenne. Enfin, Yosua Michael M a travaillé avec Laura Gustafson, Mannat Singhand et Aaron Adcock pour ajouter le support de SWAG, un ensemble de nouveaux poids pré-formés à la pointe de la technologie pour ViT et RegNets.

Nouvelle API de prise en charge multi-poids

Comme je déjà discuté sur le blog PyTorch, TorchVision a étendu son mécanisme de création de modèles existant pour prendre en charge plusieurs poids pré-formés. La nouvelle API est entièrement rétrocompatible, permet d'instancier des modèles avec différents poids et fournit des mécanismes pour obtenir des métadonnées utiles (telles que des catégories, le nombre de paramètres, des métriques, etc.) et les transformations d'inférence de prétraitement du modèle. Il y a un feedback dédié problème sur Github pour nous aider à repasser nos bords rugueux.

Documentation remaniée

Nicolas Hug a dirigé les efforts de restructuration du documentation du modèle de TorchVision. La nouvelle structure est capable d'utiliser des fonctionnalités provenant de l'API de support multi-poids pour offrir une meilleure documentation pour les poids pré-formés et leur utilisation dans la bibliothèque. Dédicace massive aux membres de notre communauté pour nous aider documenter toutes les architectures à temps.

Bien que notre feuille de route détaillée pour 2022H2 ne soit pas encore finalisée, voici quelques projets clés sur lesquels nous prévoyons actuellement de travailler :

Si vous souhaitez vous impliquer dans le projet, veuillez consulter notre bons premiers numéros et par demander de l'aide listes. Si vous êtes un vétéran chevronné de PyTorch/Computer Vision et que vous souhaitez contribuer, nous avons plusieurs projets candidats pour de nouveaux opérateurs, pertes, augmentations ainsi que numériques jumeaux (digital twin models).

J'espère que vous avez trouvé l'article intéressant. Si vous voulez entrer en contact, contactez-moi LinkedIn or Twitter.

Horodatage:

Plus de Boîte de données