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 :

    • Le nombre minimal de cadres de délimitation par étiquette est de 10.
    • Les étiquettes doivent être des chaînes valides (sans virgule).
    • Toutes les images vidéo doivent comporter des horodatages valides.
    • Tous les URI vidéo de votre fichier CSV doivent être stockés dans un bucket Cloud Storage accessible.
  • 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.

    • Vous devez disposer d'environ 100 images vidéo d'entraînement par étiquette. Dans chaque image, tous les objets des étiquettes souhaitées doivent être étiquetés.

    • La complexité ou la diversité des classes. Les réseaux de neurones peuvent rapidement distinguer les chats des oiseaux, mais il faudrait beaucoup plus d'échantillons pour classifier correctement 30 espèces d'oiseaux différentes.

    • Une partie de la qualité d'image peut être perdue lors du processus de normalisation des images pour les résolutions d'images vidéo supérieures à 1 024 pixels par 1 024 pixels.

  • É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.

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 Object Tracking peut les scinder automatiquement 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. Notez que lorsque AutoML Video Object Tracking génère les fractionnements d'entraînement, de validation et de test du fichier CSV, il le fait au niveau des vidéos. Toutes les étiquettes d'une vidéo ne peuvent appartenir qu'à l'un des trois ensembles de données. Par conséquent, il est déconseillé de ne disposer que de quelques vidéos si les vidéos sont différentes ou si la distribution des étiquettes varie selon les 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 d'images 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 de détection vidéo suivants disponibles au public :

  • YouTube-BB : ensemble de données de détection d'objets vidéo (5,6 millions de cadres de délimitation, 240 000 vidéos, 23 types d'objets)
  • ImageNet-VID : défi de détection d'objets vidéo Imagenet (30 catégories de base)

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 et les concepts d'évaluation du suivi des objets courants sont les suivants :

  • Le ratio entre l'aire d'intersection et l'aire d'union (IOU, Intersection over Union) mesure chevauchement entre deux cadres de délimitation, généralement compris entre la vérité terrain et la prédiction. Vous pouvez utiliser cette méthode pour mesurer le chevauchement de notre cadre de délimitation prévu et de la vérité terrain.
  • 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.
  • 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 multiclasses, vous pouvez examiner la matrice de confusion qui affiche les étiquettes manquantes.

Toutes les métriques ne peuvent pas être utilisées pour les différents problèmes de suivi des objets vidéo. Par exemple, la compréhension intuitive de la précision et du rappel lors d'un problème de suivi des objets 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 de chacune des classes d'objets.

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.

  • Parfois, une vidéo de test présente quelques cas de scène dans lesquels de nouvelles scènes apparaissent sans trop d'association de contexte. Par exemple, dans les diffusions de matchs de football en direct, la vue de la caméra passe d'une vue plongeante à une vue latérale. Dans un tel scénario, il faut généralement deux à trois images pour que le modèle puisse rattraper le changement.

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

Tester le modèle

AutoML Video Object Tracking utilise automatiquement 20 % de vos données ou, si vous avez choisi de les répartir vous-même, le pourcentage que vous avez choisi d'utiliser pour tester le modèle.

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).
  • Ajouter des étiquettes aux cadres plus significatifs :
    • Sélectionnez les images à étiqueter dans lesquelles plusieurs objets apparaissent plutôt que des images ne contenant qu'un seul objet ou dans lesquelles aucun objet n'est présent.
    • Sélectionnez des images contenant davantage d'objets mobiles. Celles-ci peuvent fournir des informations plus temporelles pour que le modèle puisse apprendre pendant l'entraînement.
    • Assurez-vous que toutes les images sélectionnées sont entièrement étiquetées. Par exemple, si vous entraînez un modèle de détection de véhicule, vous devez identifier tous les véhicules pouvant être observés visuellement dans une image.
    • Ne sélectionnez pas d'images au début d'une vidéo. L'algorithme peut revenir en arrière pour extraire des images lors de l'entraînement afin d'enregistrer le contexte de mouvement. Ces informations peuvent être perdues s'il n'y a pas d'images ou s'il y en a moins avant les images sélectionné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.
  • 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.