Bonnes pratiques

Cette page décrit les bonnes pratiques de préparation des données, d'évaluation des modèles et d'amélioration de leurs performances.

Préparer vos données

  • Les données que vous utilisez pour l'entraînement doivent être aussi proches que possible des données à partir desquelles vous souhaitez effectuer des prédictions. Par exemple, si votre cas d'utilisation implique des vidéos floues ou de basse résolution (telles que des séquences de caméras de sécurité), vos données d'entraînement doivent inclure des vidéos floues et de basse résolution. En général, il est également recommandé de fournir différents types d'angles, de résolutions et d'arrière-plans pour les vidéos d'entraînement.
  • Les données d'entraînement doivent répondre à certaines exigences minimales :

    • Toutes les données doivent comporter des étiquettes.
    • Les étiquettes doivent être des chaînes valides (sans virgule).
    • Toutes les séquences vidéo doivent comporter des horodatages valides. Elles doivent avoir un début et une fin. L'heure de fin doit être supérieure à 0 et inférieure à la durée totale de la vidéo, et l'heure de début doit être inférieure à l'heure de fin.
    • Tous les URI vidéo de votre fichier CSV doivent être stockés dans un bucket Cloud Storage accessible.
    • Les données doivent inclure au moins deux classes différentes, chaque classe contenant au moins 10 éléments.
  • Plus vous disposez de données d'entraînement et de test, mieux c'est. Plus le modèle est performant, plus il peut ingérer de données.

  • La quantité de données nécessaire pour entraîner un bon modèle dépend de différents facteurs :

    • Le nombre de classes. Plus vous disposez de classes distinctes, plus vous aurez besoin d'échantillons pour chaque classe.
    • La complexité ou la diversité des classes. Les réseaux de neurones peuvent rapidement distinguer les vidéos de course à pied des vidéos de natation, mais il faudrait beaucoup plus d'échantillons pour classifier 30 styles de danse différents.
    • Les modèles à étiquettes multiples sont plus difficiles à entraîner que les modèles à classes multiples. Si la plupart de vos cas ne comportent qu'une seule étiquette par échantillon, envisagez d'utiliser un modèle d'entraînement à classes multiples plutôt qu'à étiquettes multiples.
  • En règle générale, il faut compter au moins 200 échantillons d'entraînement par classe si vous disposez de quelques classes distinctes. Prévoyez plus de 1 000 échantillons d'entraînement si les classes sont plus nuancées et que vous disposez de plus de 50 classes différentes.

  • Évitez d'entraîner un modèle avec des données très déséquilibrées. Le nombre d'échantillons par classe est souvent inégal. Si les différences ne sont pas très grandes, ce n'est pas si grave. En revanche, en cas de déséquilibre plus important, par exemple si certaines classes se présentent plus de 10 fois plus souvent que d'autres, cela devient un problème. Bien qu'AutoML Video tente de corriger ces déséquilibres de classe, cette configuration n'est pas idéale pour entraîner un modèle.

Pour en savoir plus, consultez les informations de la section Préparer vos données.

Répartir les données

En machine learning, on divise généralement les ensembles de données en trois sous-ensembles distincts : un ensemble de données d'entraînement, un ensemble de données de validation et un ensemble de données de test. Un ensemble de données d'entraînement est utilisé pour construire un modèle. Le modèle essaie plusieurs algorithmes et paramètres pour rechercher des schémas dans les données d'entraînement. Lorsque le modèle identifie ces schémas, il utilise l'ensemble de données de validation pour tester les algorithmes et les schémas. Il choisit alors les algorithmes et les schémas les plus performants parmi ceux identifiés lors de la phase d'entraînement.

Une fois que les algorithmes et les schémas les plus performants ont été identifiés, leur taux d'erreur, leur qualité et leur précision sont testés à l'aide de l'ensemble de données de test. Vous devriez disposer d'un ensemble de données de test distinct que vous pouvez utiliser pour tester votre modèle de manière indépendante.

Afin d'éviter la présence de biais dans le modèle, un ensemble de données de validation ainsi qu'un ensemble de données de test sont utilisés. Au cours de la phase de validation, des paramètres de modèle optimaux sont utilisés, ce qui peut produire des statistiques biaisées. L'évaluation de la qualité du modèle à l'aide de l'ensemble de données de test après l'étape de validation permet donc d'obtenir une évaluation non biaisée de la qualité du modèle.

Lors du fractionnement des données, observez les bonnes pratiques suivantes :

  • Nous recommandons que tous les ensembles de données (également appelés "fractionnements d'ensemble de données") représentent la même population, présentent des vidéos semblables avec des étiquettes réparties de la même façon.

    Lorsque vous fournissez des données, AutoML Video peut automatiquement les scinder en ensembles de données d'entraînement, de validation et de test, mais vous pouvez également assigner vous-même les étiquettes d'entraînement. Tous les échantillons doivent provenir d'une seule vidéo ou de plusieurs vidéos. Le fait de ne disposer que de quelques vidéos peut être dangereux si ces vidéos sont différentes ou si les étiquettes ne sont pas réparties de la même façon dans les vidéos. En effet, lorsque AutoML Video génère les fractionnements d'entraînement, de validation et de test, il le fait au niveau des vidéos.

    Par exemple, si vous ne disposez que de trois vidéos contenant des milliers de séquences vidéo annotées, mais que certaines classes ne sont présentes que dans certaines vidéos, il se peut que le modèle ne s'entraîne pas pour certaines étiquettes et qu'il les manque lors de la prédiction.

  • Évitez les fuites de données. Une fuite de données survient lorsque l'algorithme utilise des informations, pendant l'entraînement du modèle, qu'il ne devrait pas utiliser et qui ne seront pas disponibles lors des prédictions futures. Cela peut générer des résultats trop optimistes avec les ensembles de données d'entraînement, de validation et de test, mais peut fonctionner moins bien lors de la réalisation de prédictions sur des données futures invisibles.

    Certains exemples de fuite peuvent se caractériser par un biais basé sur l'angle de vision de la caméra ou les conditions de luminosité (matin/soir), sur les vidéos qui ont des commentateurs par rapport à celles qui n'en ont pas, ainsi que sur les vidéos dont certaines étiquettes proviennent de régions, de groupes de langues et de commentateurs spécifiques ou comportent le même logo.

    Pour éviter les fuites de données, procédez comme suit :

    • Composez un ensemble bien diversifié de vidéos et d'échantillons de séquences vidéo.
    • Passez en revue les vidéos pour vous assurer qu'elles ne dissimulent aucun indice (comme c'est le cas lorsque des vidéos avec des échantillons positifs ont été prises l'après-midi, tandis que des vidéos avec des échantillons négatifs ont été prises le matin).

Pour en savoir plus, consultez les informations de la section Préparer vos données.

Exemples de sources de données

Pour obtenir des exemples de sources de données, consultez les ensembles de données vidéo suivants disponibles au public :

  • UCF-101 : ensemble de données de reconnaissance d'actions (101 classes, classes multiples, 13 320 courtes vidéos ou échantillons)
  • HMDB-51 : base de données de mouvements humains (51 classes, classes multiples, 6 849 courtes vidéos ou échantillons)
  • Kinetics : large ensemble de données de reconnaissance d'actions (400/600/800 classes, classes multiples, plus de 400 000 courtes vidéos ou échantillons)
  • Something-Something : actions humaines avec des objets (174 classes, 22 0847 courtes vidéos ou échantillons)
  • AVA : actions visuelles atomiques à annotations denses (80 classes, étiquettes multiples, 1,58 millions d'annotations sur 430 extraits vidéo de 15 minutes)

Entraîner le modèle

Les mêmes données peuvent servir à entraîner différents modèles et générer différents types de prédictions en fonction de vos besoins. Par ailleurs, l'entraînement d'un même modèle à partir des mêmes données peut conduire à des résultats légèrement différents. En effet, étant donné que l'entraînement d'un modèle de réseau neuronal implique des opérations aléatoires, il est impossible de garantir que l'entraînement d'un même modèle s'effectuera avec les mêmes données d'entrée. De ce fait, les prédictions peuvent s'avérer légèrement différentes.

Pour en savoir plus, consultez la page Gérer les modèles.

Évaluer le modèle

Une fois l'entraînement de votre modèle terminé, vous pouvez évaluer ses performances avec les ensembles de données de validation et de test ou de nouveaux ensembles de données.

Les métriques de classification suivantes sont couramment utilisées :

  • Aire sous la courbe (AUC, Area Under the Curve), également appelée "aire sous la courbe de caractéristique de fonctionnement du récepteur". La courbe trace le rappel en fonction de la probabilité de faux positifs à différents seuils de score. Les valeurs de l'AUC sont comprises dans une plage de 0,5 à 1,0. Cette métrique est principalement utilisée pour les problèmes de classification binaire.
  • L'aire sous la courbe de précision/rappel (Area under the precision/recall curve, AuPRC), également appelée "précision moyenne" (Average precision, AP). Il s'agit de l'intégrale des valeurs de précision sur la plage des valeurs de rappel. Il est préférable de l'interpréter pour des problèmes binaires.
  • La précision moyenne (Mean average precision, mAP ou MAP) peut être considérée comme la métrique de précision moyenne (AP) sur plusieurs classes ou étiquettes. Parfois, les métriques mAP et AP sont utilisées de manière interchangeable.
  • La précision représente le taux d'échantillons correctement classifiés.
  • Dans le cas de problèmes binaires et de modèles à classes multiples, vous pouvez également examiner la précision et le rappel indépendamment à différents seuils de score de confiance.
  • S'il n'y a pas trop d'étiquettes multi-classes, vous pouvez examiner la matrice de confusion qui montre les étiquettes qui ont été mal attribuées dans les prédictions. L'interface utilisateur peut également vous montrer les principaux échantillons mal classifiés dans la matrice de confusion.

Ces métriques ne peuvent pas toutes être utilisées pour les différents problèmes de classification vidéo. Par exemple, la compréhension intuitive de la précision et du rappel lors d'une classification binaire devient plus ambiguë lorsque plusieurs classes sont considérées (problème à classes multiples) ou s'il existe plusieurs étiquettes valides par échantillon (problème à étiquettes multiples). Dans le dernier cas, en particulier, il n'existe pas de métrique unique et bien reconnue. Vous pouvez toutefois envisager d'utiliser la métrique de précision moyenne pour les décisions d'évaluation.

En revanche, n'oubliez pas que l'évaluation des performances du modèle en fonction d'un nombre ou d'une métrique unique est une approche trop simpliste. Pensez à exploiter différentes métriques, ainsi que les tracés des courbes de rappel et de précision, par exemple, ou encore à examiner la répartition des échantillons mal classifiés, comme dans la matrice de confusion.

Voici d'autres astuces utiles pour évaluer votre modèle :

  • Tenez compte de la répartition des étiquettes dans vos ensembles de données d'entraînement et de test. Si les ensembles de données sont déséquilibrés, les métriques de haute précision pourraient être trompeuses. Étant donné que, par défaut, chaque échantillon a le même poids lors de l'évaluation, une étiquette plus fréquente peut avoir plus de poids. Par exemple, s'il y a 10 fois plus d'étiquettes positives que d'étiquettes négatives et que le réseau décide simplement d'attribuer tous les échantillons aux étiquettes positives, vous pouvez toujours obtenir une précision de 91 %, mais cela ne signifie pas que le modèle entraîné est aussi efficace.

  • Vous pouvez également essayer d'analyser les étiquettes de vérité terrain et de prédiction, par exemple, dans un script Python à l'aide de scikit-learn. Là, vous pouvez envisager différentes méthodes de pondération des étiquettes lors de l'évaluation : les méthodes couramment utilisées incluent la moyenne macro (les métriques sont calculées par classe, puis moyennées), la pondération (les métriques sont calculées par classe, puis moyennées avec des pondérations basées sur la fréquence des classes individuelles), micro (chaque échantillon a le même poids, indépendamment de tout déséquilibre éventuel).

  • Le débogage d'un modèle consiste davantage à déboguer les données que le modèle proprement dit. Si, à un moment quelconque, votre modèle commence à se comporter de manière inattendue lorsque vous évaluez ses performances avant et après le passage en production, vous devez revenir en arrière et vérifier les données pour voir où elles pourraient être améliorées.

Pour en savoir plus, consultez les informations de la section Évaluer le modèle.

Évaluer votre modèle dans la console Google Cloud

Dans l'onglet Évaluer de l'interface utilisateur d'AutoML Video, vous pouvez évaluer les performances de votre modèle personnalisé à l'aide des résultats du modèle obtenus avec des échantillons de test et des métriques de machine learning courantes. L'onglet affiche les informations suivantes pour votre modèle :

  • Les résultats du modèle
  • Le seuil de score
  • Les vrais positifs, les vrais négatifs, les faux positifs et les faux négatifs
  • La précision et le rappel
  • Les courbes de précision/rappel
  • Précision moyenne

Lorsque vous lisez les données d'évaluation du modèle dans la console Google Cloud, tenez compte des points suivants:

  • AutoML Video extrait des échantillons de séquences vidéo de vos données de test pour exposer votre modèle à de tout nouveaux défis. Pour chaque échantillon, le modèle génère une série de nombres qui indiquent le degré de confiance selon lequel il associe chaque étiquette à cet échantillon. Si le nombre est élevé, le modèle conclut avec une confiance élevée que l'étiquette doit être attribuée à ce document.

  • Vous pouvez convertir les chiffres de confiance en valeur binaire "on/off" en définissant un seuil de score. Le seuil de score représente le degré de confiance que le modèle doit avoir pour attribuer une catégorie à un élément de test. Dans l'interface utilisateur, le curseur du seuil de score est un outil visuel permettant de tester l'impact de différents seuils pour toutes les catégories de votre ensemble de données ainsi que pour des catégories individuelles. Si le seuil de score est bas, votre modèle classifie davantage de séquences vidéo, mais risque d'en classifier quelques-unes de manière incorrecte (moins de faux négatifs, mais beaucoup de faux positifs). Si le seuil de score est élevé, votre modèle classifie moins de séquences vidéo, mais risque moins d'en classifier de manière incorrecte (peu de faux positifs, mais beaucoup de faux négatifs). Pour tester ces résultats, vous pouvez modifier les seuils par catégorie dans l'interface utilisateur. Toutefois, lorsque vous utilisez votre modèle en production, vous devez appliquer les seuils que vous avez trouvés optimaux de votre côté.

  • Après l'application du seuil de score, les prédictions effectuées par votre modèle appartiennent à l'une des quatre catégories suivantes :

    • Vrai positif : le modèle a prédit, correctement, l'étiquette.
    • Vrai négatif : le modèle n'a pas prédit, correctement, cette étiquette.
    • Faux positif : le modèle a prédit, incorrectement, l'étiquette d'une séquence vidéo.
    • Faux négatif : le modèle n'a pas prédit, incorrectement, la vraie étiquette.

    Vous pouvez utiliser ces catégories pour calculer la précision et le rappel, les métriques permettant d'évaluer l'efficacité de votre modèle.

  • La précision et le rappel vous permettent de connaître la capacité de votre modèle à capturer des informations et à en laisser certaines de côté. Le score de précision mesure, parmi tous les échantillons de tests auxquels une étiquette a été attribuée, combien étaient censés être classifiés avec cette étiquette. Le score de rappel mesure, parmi tous les échantillons de tests auxquels l'étiquette aurait dû être attribuée, combien ont été effectivement attribués à l'étiquette.

  • Vous pouvez comparer les performances du modèle pour chaque étiquette à l'aide de la matrice de confusion. Dans un modèle idéal, toutes les valeurs de la diagonale sont élevées et toutes les autres valeurs sont basses. Cela indique que les catégories souhaitées sont correctement identifiées. Si d'autres valeurs sont élevées, cela permet de savoir comment le modèle classifie incorrectement les images de test.

  • L'outil de seuil de score permet de comprendre comment le seuil choisi affecte la précision et le rappel. Lorsque vous faites glisser le curseur sur la barre du seuil de score, vous pouvez voir où ce seuil se situe sur la courbe du rapport précision/rappel, ainsi que l'effet de ce seuil sur la précision et le rappel individuellement. Dans le cas de modèles à classes multiples, sur ces graphiques, la précision et le rappel signifient que la seule étiquette utilisée pour calculer les métriques de précision et de rappel est celle dont le score est le plus élevé parmi toutes les étiquettes renvoyées. Cela permet de trouver un bon équilibre entre les faux positifs et les faux négatifs.

    Une fois que vous avez choisi un seuil qui vous semble globalement acceptable pour votre modèle, vous pouvez cliquer sur des étiquettes spécifiques afin de voir, pour chacune d'elles, où se situe ce seuil sur la courbe de précision/rappel. Dans certains cas, cela peut impliquer un grand nombre de prédictions incorrectes pour certaines étiquettes, et vous amener à définir un seuil personnalisé pour chaque classe correspondante.

  • L'aire sous la courbe de précision/rappel constitue une métrique utile pour cerner la précision du modèle. Elle permet de mesurer ses performances vis-à-vis de l'ensemble des seuils de score. Dans AutoML Video, cette métrique s'appelle la "précision moyenne". Plus ce score est proche de 1, meilleures seront les performances de votre modèle sur l'ensemble de test. Pour un modèle effectuant des prédictions de manière aléatoire pour chaque étiquette, la précision moyenne obtenue avoisinerait le score de 0,5.

Tester le modèle

Pour tester un modèle, AutoML Video utilise automatiquement 30 % de vos données ou, si vous avez décidé de les fractionner vous-même, le pourcentage que vous avez choisi d'utiliser. L'onglet Évaluer de l'interface utilisateur d'AutoML Video vous indique les performances du modèle avec ces données de test. Toutefois, si vous souhaitez contrôler l'intégrité du modèle, plusieurs solutions s'offrent à vous. L'une d'elles consiste à spécifier un fichier CSV de données vidéo à tester dans l'onglet "Test et utilisation" et à examiner les étiquettes que le modèle prédit pour ces vidéos. Elles devraient correspondre à vos attentes.

Pour visualiser les prédictions, vous pouvez ajuster le seuil et examiner les prédictions selon trois échelles temporelles : à des intervalles de 1 seconde, aux prises de vue après détection automatique des limites de prises de vues et à la fin de séquences vidéo complètes.

Améliorer les performances du modèle

Si vous avez déterminé les performances de votre modèle initial et que vous souhaitez continuer à l'améliorer, vous pouvez essayer différentes approches :

  • Augmentez le nombre d'échantillons étiquetés (en particulier pour les classes sous-représentées).
  • Examinez de près les conditions dans lesquelles votre modèle ne fonctionne pas si bien :

    • Une classe est peut-être trop large et il serait logique de la scinder en deux classes ou plus.
    • Certaines classes sont peut-être trop spécifiques et pourraient être fusionnées sans que cela n'affecte l'objectif final du projet.
    • Envisagez d'étiqueter davantage d'échantillons, en particulier pour les classes les moins performantes.
  • Le cas échéant, passez d'un problème à classes multiples à un problème à étiquettes multiples, car il est généralement plus facile d'entraîner un modèle de réseau neuronal qui tente de classifier des échantillons par classes disjointes plutôt que de prédire pour chaque échantillon un ensemble d'étiquettes de longueur inconnue.

  • Réduisez le déséquilibre des données. Ajoutez des échantillons supplémentaires ou essayez de réduire le nombre d'échantillons d'une classe de haute fréquence, en particulier dans les cas de déséquilibre important, par exemple de 1 à 100 ou plus.

  • Vérifiez attentivement et essayez d'éviter toute fuite de données éventuelle.

  • Abandonnez les classes moins importantes pour vous concentrer sur un nombre plus petit de classes critiques.

  • Examinez les autres options disponibles sur la page Assistance.