


FFC, le cadre de classification à grande échelle et à faible coût open source de la DAMO Academy
Lien papier : https://arxiv.org/pdf/2105.10375.pdf
Application & Code :
- https://www.php. cn/link/c42af2fa7356818e0389593714f59b52
- https://www.php.cn/link/60a6c4002cc7b29142def8871531281a
Fond
La classification d'images est actuellement l'IA la plus performante L'une des technologies d'application pratique a été intégrée dans la vie quotidienne des gens. Il est largement utilisé dans la plupart des tâches de vision par ordinateur, telles que la classification d'images, la recherche d'images, l'OCR, la révision de contenu, l'authentification par reconnaissance et d'autres domaines. Il existe désormais un consensus général : « Lorsque l'ensemble de données est plus grand et comporte plus d'identifiants, tant qu'il est correctement formé, l'effet de la tâche de classification correspondante sera meilleur. Cependant, face à des dizaines de millions d'identifiants, voire des centaines de millions d'identifiants, il est difficile pour le cadre DL actuellement populaire de mener directement une telle formation de classification à très grande échelle à faible coût.
La manière la plus intuitive de résoudre ce problème est de consommer plus de ressources de la carte graphique via le clustering, mais même ainsi, le problème de classification sous identifiants massifs aura toujours les problèmes suivants :
1) Problème de coût : Formation distribuée framework + Dans le cas de données massives, la surcharge mémoire, la communication multi-machines, le stockage et le chargement des données consommeront plus de ressources.
2) Problème de longue traîne : dans des scénarios réels, lorsque l'ensemble de données atteint des centaines de millions d'identifiants, le nombre d'échantillons d'images dans la plupart des identifiants sera souvent très faible. C'est très évident et il est difficile d'obtenir des données plus volumineuses grâce à une formation directe.
Les chapitres restants de cet article se concentreront sur les solutions existantes pour les cadres de classification à très grande échelle, ainsi que sur les principes et astuces correspondants du cadre de classification à faible coût FFC.
Méthode
Avant de présenter la méthode, cet article passe d'abord en revue les principaux défis de la classification actuelle à très grande échelle :
Point du défi 1 : Le coût reste élevé
Plus la nombre d'ID, plus il y a de classification. Plus les besoins en mémoire de l'ordinateur sont élevés, comme le montre le diagramme suivant : Plus la mémoire est grande, plus il faut de cartes machine et plus le coût est élevé, et plus le coût de l'infrastructure matérielle correspondante est élevé. pour la collaboration multi-machines. Dans le même temps, lorsque le nombre d'ID de classification atteint une échelle extrêmement grande, la majeure partie du calcul sera gaspillée sur la dernière couche de classificateurs et le temps consommé par le réseau squelette est négligeable.
Dans les scénarios réels, la plupart des centaines de millions d'identifiants auront très peu d'échantillons d'images, et la distribution des données à longue traîne est très évidente , directement La formation est difficile à converger. S’ils sont entraînés selon des poids égaux, les échantillons à longue traîne seront submergés et insuffisamment appris. À l'heure actuelle, des échantillons déséquilibrés sont généralement utilisés. Sur ce sujet de recherche, il existe de nombreuses méthodes qui peuvent être utilisées comme référence. Quelle méthode est la plus adaptée à intégrer dans le cadre de classification simple à très grande échelle ? Avec les deux défis ci-dessus, examinons d'abord les solutions réalisables existantes et si elles peuvent bien résoudre les deux défis ci-dessus.
Méthode réalisable 1 : Apprentissage métrique
Méthode réalisable 2 : Framework PFC
Méthode réalisable 3 : cadre VFC
La méthode de cet article : cadre FFC
La fonction de perte lors de l'entraînement avec FC pour une classification à grande échelle est la suivante :
Dans chaque processus de rétro-propagation, tous les centres de classe seront mis à jour :
Mais FC est trop grand, l'idée intuitive est de sélectionner raisonnablement une certaine proportion de classe centres, c'est-à-dire que Vj vaut 1 comme suit Partie :
La motivation ci-dessus conduit au plan préliminaire suivant :
Tout d'abord, afin de résoudre l'impact de la longue traîne , cet article présente deux chargeurs, basés sur l'échantillonnage d'identifiants, id_loader et instance_loader basés sur un échantillonnage d'échantillons, avec ces deux chargeurs. A chaque époque, les classes avec de nombreux échantillons et les classes avec peu d'échantillons (quelques plans) peuvent avoir la possibilité de s'entraîner.
Deuxièmement, avant le début de la formation, envoyez une partie des échantillons au groupe id. Ici, on suppose que 10 % des échantillons id sont mis dans le groupe. Pour le moment, la galerie utilise des paramètres aléatoires.
Puis, lorsque la formation commence, les échantillons du lot entrent un par un dans le réseau de la sonde. Ensuite, il existe deux situations pour les échantillons de chaque lot : 1.) Il existe des caractéristiques avec le même ID de cet échantillon dans le groupe, 2.) Il n'y a aucune caractéristique d'échantillons similaires dans le groupe. Pour ces deux cas, appelez-les respectivement identifiant existant et nouvel identifiant. Pour les échantillons existants, utilisez la fonctionnalité et la fonctionnalité du groupe pour créer le produit interne, calculez la fonction de perte d'entropie croisée avec l'étiquette, puis renvoyez-la. Pour les échantillons frais, minimisez la similarité cosinus avec les échantillons du groupe.
Enfin, les fonctionnalités du groupe sont mises à jour et remplacées par de nouveaux centres de classe, sur la base du principe de pondération des centres de classe existants. Pour Gallery Net, la stratégie de moyenne mobile est utilisée pour mettre à jour progressivement les paramètres de la sonde.
Méthode de cet article : Introduction de l'astuce
1.) La taille du groupe d'ID introduit est un paramètre réglable, généralement la valeur par défaut est de 30 000.
2.) Afin d'obtenir un entraînement stable, référez-vous à la méthode de classe moco et introduisez la moyenne mobile. Les conditions de convergence correspondantes sont :
Résultats expérimentaux
1.
2. Comparaison des effets de la méthode SOTA
3. Comparaison de la mémoire vidéo et du débit d'échantillon
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'évaluation du rapport coût/performance du support commercial pour un framework Java implique les étapes suivantes : Déterminer le niveau d'assurance requis et les garanties de l'accord de niveau de service (SLA). L’expérience et l’expertise de l’équipe d’appui à la recherche. Envisagez des services supplémentaires tels que les mises à niveau, le dépannage et l'optimisation des performances. Évaluez les coûts de support commercial par rapport à l’atténuation des risques et à une efficacité accrue.

La courbe d'apprentissage d'un framework PHP dépend de la maîtrise du langage, de la complexité du framework, de la qualité de la documentation et du support de la communauté. La courbe d'apprentissage des frameworks PHP est plus élevée par rapport aux frameworks Python et inférieure par rapport aux frameworks Ruby. Par rapport aux frameworks Java, les frameworks PHP ont une courbe d'apprentissage modérée mais un temps de démarrage plus court.

Le framework PHP léger améliore les performances des applications grâce à une petite taille et une faible consommation de ressources. Ses fonctionnalités incluent : une petite taille, un démarrage rapide, une faible utilisation de la mémoire, une vitesse de réponse et un débit améliorés et une consommation de ressources réduite. Cas pratique : SlimFramework crée une API REST, seulement 500 Ko, une réactivité élevée et un débit élevé.

La rédaction d'une documentation claire et complète est cruciale pour le framework Golang. Les meilleures pratiques incluent le respect d'un style de documentation établi, tel que le Go Coding Style Guide de Google. Utilisez une structure organisationnelle claire, comprenant des titres, des sous-titres et des listes, et fournissez la navigation. Fournit des informations complètes et précises, notamment des guides de démarrage, des références API et des concepts. Utilisez des exemples de code pour illustrer les concepts et l'utilisation. Maintenez la documentation à jour, suivez les modifications et documentez les nouvelles fonctionnalités. Fournir une assistance et des ressources communautaires telles que des problèmes et des forums GitHub. Créez des exemples pratiques, tels que la documentation API.

Choisissez le meilleur framework Go en fonction des scénarios d'application : tenez compte du type d'application, des fonctionnalités du langage, des exigences de performances et de l'écosystème. Frameworks Go courants : Gin (application Web), Echo (service Web), Fibre (haut débit), gorm (ORM), fasthttp (vitesse). Cas pratique : construction de l'API REST (Fiber) et interaction avec la base de données (gorm). Choisissez un framework : choisissez fasthttp pour les performances clés, Gin/Echo pour les applications Web flexibles et gorm pour l'interaction avec la base de données.

Dans le développement du framework Go, les défis courants et leurs solutions sont les suivants : Gestion des erreurs : utilisez le package d'erreurs pour la gestion et utilisez un middleware pour gérer les erreurs de manière centralisée. Authentification et autorisation : intégrez des bibliothèques tierces et créez un middleware personnalisé pour vérifier les informations d'identification. Traitement simultané : utilisez des goroutines, des mutex et des canaux pour contrôler l'accès aux ressources. Tests unitaires : utilisez les packages, les simulations et les stubs gotest pour l'isolation, ainsi que les outils de couverture de code pour garantir la suffisance. Déploiement et surveillance : utilisez les conteneurs Docker pour regrouper les déploiements, configurer les sauvegardes de données et suivre les performances et les erreurs avec des outils de journalisation et de surveillance.

Il existe cinq malentendus dans l'apprentissage du framework Go : une dépendance excessive à l'égard du framework et une flexibilité limitée. Si vous ne respectez pas les conventions du framework, le code sera difficile à maintenir. L'utilisation de bibliothèques obsolètes peut entraîner des problèmes de sécurité et de compatibilité. L'utilisation excessive de packages obscurcit la structure du code. Ignorer la gestion des erreurs entraîne un comportement inattendu et des plantages.

Lorsque vous utilisez le framework Golang, vous devez faire attention à : vérifier si la route correspond à la demande pour éviter les erreurs de routage. Utilisez le middleware avec prudence pour éviter une dégradation des performances. Gérez correctement les connexions à la base de données pour éviter les problèmes de performances ou les plantages. Utilisez des wrappers d’erreurs pour gérer les erreurs et garantir que votre code est clair et facile à déboguer. Obtenez des packages tiers auprès de sources réputées et maintenez les packages à jour.
