Skip to main content
Nous prenons en charge les images, les vidéos, l’audio et bien d’autres formats. Journalisez des médias enrichis pour explorer vos résultats et comparer visuellement vos runs, vos modèles et vos jeux de données. Poursuivez votre lecture pour découvrir des exemples et des guides pratiques.
Pour plus de détails, consultez la référence des types de données.

Prérequis

Pour journaliser des objets média avec le SDK W&B, vous devrez peut-être installer des dépendances supplémentaires. Pour installer ces dépendances, exécutez la commande suivante :

Images

Journalisez des images pour suivre les entrées, les sorties, les poids des filtres, les activations, et bien plus encore.
Entrées et sorties d’un autoencodeur
Les images peuvent être journalisées directement à partir de tableaux NumPy, sous forme d’images PIL ou à partir du système de fichiers. Chaque fois que vous journalisez des images à une étape, elles deviennent disponibles dans l’interface utilisateur. Développez le volet d’images, puis utilisez le curseur d’étapes pour afficher les images des différentes étapes. Vous pouvez ainsi comparer facilement l’évolution de la sortie d’un modèle au cours de l’entraînement. Cliquez sur un volet multimédia pour afficher une image en plein écran : vous pouvez alors zoomer et vous déplacer dans l’image, y compris à l’aide de raccourcis clavier. Pour comparer dans une même vue des images ou des vidéos issues de différents runs, étapes ou index, utilisez le mode de comparaison d’un volet multimédia.
Nous vous recommandons de journaliser moins de 50 images par étape, afin que la journalisation ne ralentisse pas l’entraînement et que le chargement des images ne ralentisse pas la consultation des résultats.
Fournissez directement des tableaux lorsque vous construisez des images manuellement, par exemple à l’aide de make_grid de torchvision.Les tableaux sont convertis au format PNG à l’aide de Pillow.
L’image est considérée comme étant en niveaux de gris si la dernière dimension vaut 1, en RGB si elle vaut 3 et en RGBA si elle vaut 4. Si le tableau contient des nombres à virgule flottante, ceux-ci sont convertis en entiers compris entre 0 et 255. Pour normaliser vos images différemment, vous pouvez spécifier le mode manuellement ou simplement fournir une PIL.Image, comme décrit dans l’onglet « Journaliser des images PIL » de ce volet.

Superpositions sur les images

Journalisez des masques de segmentation sémantique et interagissez avec eux (modification de l’opacité, visualisation de leur évolution au fil du temps, etc.) dans l’interface utilisateur de W&B.
Visualisation interactive des masques
Pour journaliser une superposition, passez à l’argument nommé masks de wandb.Image un dictionnaire contenant les clés et valeurs suivantes :
  • l’une des deux clés suivantes, qui représentent le masque d’image :
    • "mask_data" : un tableau NumPy 2D contenant une étiquette de classe entière pour chaque pixel
    • "path" : (string) le chemin d’un fichier de masque d’image enregistré
  • "class_labels" : (facultatif) un dictionnaire qui associe les étiquettes de classe entières du masque d’image à des noms de classe lisibles
Pour journaliser plusieurs masques, journalisez un dictionnaire de masques comportant plusieurs clés, comme dans l’extrait de code ci-dessous.Voir un exemple en directExemple de code
Les masques de segmentation d’une clé sont définis à chaque step (chaque appel à run.log()).
  • Si plusieurs steps fournissent des valeurs différentes pour la même clé de masque, seule la valeur la plus récente de cette clé est appliquée à l’image.
  • Si plusieurs steps fournissent des clés de masque différentes, toutes les valeurs de chaque clé sont affichées, mais seules celles définies dans le step consulté sont appliquées à l’image. Afficher ou masquer les masques non définis dans ce step ne modifie pas l’image.

Superpositions sur les images dans les Tables

Masques de segmentation interactifs dans les Tables
Pour journaliser des masques de segmentation dans des tableaux, vous devez fournir un objet wandb.Image pour chaque ligne du tableau.L’extrait de code ci-dessous en donne un exemple :

Histogrammes

Si vous fournissez une séquence de nombres (liste, tableau ou tenseur, par exemple) comme premier argument, l’histogramme est construit automatiquement par un appel à np.histogram(). Tous les tableaux et tenseurs sont aplatis. Vous pouvez utiliser l’argument nommé facultatif num_bins pour redéfinir le nombre d’intervalles par défaut, fixé à 64. Le nombre maximum d’intervalles pris en charge est de 512.Dans l’interface utilisateur, les histogrammes sont tracés avec l’étape d’entraînement sur l’axe X, la valeur de la métrique sur l’axe Y et le nombre d’occurrences représenté par la couleur, afin de faciliter la comparaison des histogrammes journalisés tout au long de l’entraînement. Pour en savoir plus sur la journalisation d’histogrammes ponctuels, consultez l’onglet « Histogrammes dans la synthèse » de ce panneau.
Gradients du discriminateur d’un GAN

Visualisations 3D

Journalisez des nuages de points 3D et des scènes Lidar avec des boîtes englobantes. Transmettez un tableau NumPy contenant les coordonnées et les couleurs des points à afficher. Les nuages de points journalisés sont entièrement interactifs dans l’application W&B. Par exemple, le rapport LIDAR Point Clouds of Driving Scenes intégré ci-dessous présente des scènes du jeu de données Lyft avec des boîtes englobantes 3D. Faites glisser la souris pour faire pivoter la scène et zoomer dans la visionneuse.
L’interface de W&B tronque les données au-delà de 300 000 points.

Formats de tableaux NumPy

Trois formats de tableaux NumPy sont pris en charge pour permettre des schémas de couleurs flexibles.
  • [[x, y, z], ...] nx3
  • [[x, y, z, c], ...] nx4 | c is a category dans la plage [1, 14] (utile pour la segmentation)
  • [[x, y, z, r, g, b], ...] nx6 | r,g,b sont des valeurs comprises dans la plage [0,255]pour les canaux de couleur rouge, vert et bleu.

Objet Python

À l’aide de ce schéma, vous pouvez définir un objet Python et le transmettre à la méthode from_point_cloud.
  • points est un tableau NumPy contenant les coordonnées et les couleurs des points à afficher, selon les mêmes formats que ceux du moteur de rendu de nuage de points simple présenté ci-dessus.
  • boxes est un tableau NumPy de dictionnaires Python comportant trois attributs :
    • corners - une liste de huit coins
    • label - une chaîne représentant l’étiquette à afficher sur la boîte (facultatif)
    • color - des valeurs RVB représentant la couleur de la boîte
    • score - une valeur numérique affichée sur la boîte englobante, qui permet de filtrer les boîtes englobantes affichées (par exemple, pour n’afficher que les boîtes englobantes dont le score est > 0.75) (facultatif)
  • type est une chaîne représentant le type de scène à afficher. Pour l’instant, la seule valeur prise en charge est lidar/beta
Lorsque vous visualisez un nuage de points, vous pouvez maintenir la touche Ctrl enfoncée et utiliser la souris pour vous déplacer dans l’espace 3D.

Fichiers de nuages de points

Vous pouvez utiliser la méthode from_file pour charger un fichier JSON contenant des données de nuage de points.
Vous trouverez ci-dessous un exemple de mise en forme des données du nuage de points.

Tableaux NumPy

Avec les mêmes formats de tableau que ceux définis ci-dessus, vous pouvez utiliser directement des tableaux numpy avec la méthode from_numpy pour définir un nuage de points.
Journalisez des données moléculaires dans l’un des 10 formats de fichier suivants :pdb, pqr, mmcif, mcif, cif, sdf, sd, gro, mol2 ou mmtf. W&B prend également en charge la journalisation de données moléculaires à partir de chaînes SMILES, de fichiers mol rdkit et d’objets rdkit.Chem.rdchem.Mol.
Une fois votre run terminé, vous pourrez interagir avec des visualisations 3D de vos molécules dans l’interface utilisateur. Voir un exemple en direct avec AlphaFold
Structure moléculaire

Image PNG

wandb.Image convertit par défaut les tableaux numpy ou les instances de PILImage en PNG.

Vidéo

Les vidéos sont journalisées à l’aide du type de données wandb.Video :
Vous pouvez désormais afficher des vidéos dans le navigateur multimédia. Accédez au workspace de votre projet, au workspace de votre run ou à votre rapport, puis cliquez sur Add visualization pour ajouter un volet de médias enrichis.

Vue 2D d’une molécule

Vous pouvez journaliser une vue 2D d’une molécule à l’aide du type de données wandb.Image et de rdkit :

Autres médias

W&B prend également en charge la journalisation de nombreux autres types de médias.

Audio

Vous pouvez journaliser jusqu’à 100 clips audio par étape. Pour en savoir plus sur l’utilisation, consultez audio-file.

Vidéo

Si un tableau numpy est fourni, ses dimensions sont interprétées, dans l’ordre, comme suit : temps, canaux, largeur, hauteur. Par défaut, une image GIF à 4 fps est créée (ffmpeg et la bibliothèque Python moviepy sont requis pour transmettre des objets numpy). Les formats pris en charge sont "gif", "mp4", "webm" et "ogg". Si vous transmettez une chaîne de caractères à wandb.Video, nous vérifions que le fichier existe et que son format est pris en charge avant de le téléverser vers wandb. La transmission d’un objet BytesIO crée un fichier temporaire dont l’extension correspond au format spécifié. Vos vidéos s’affichent dans la section Media des pages Run et Projet de W&B. Pour plus d’informations sur l’utilisation, voir video-file.

Texte

Utilisez wandb.Table pour journaliser du texte dans des tableaux afin de l’afficher dans l’interface utilisateur. Par défaut, les en-têtes de colonne sont ["Input", "Output", "Expected"]. Pour garantir des performances optimales de l’interface utilisateur, le nombre maximum de lignes est fixé par défaut à 10 000. Vous pouvez toutefois redéfinir explicitement ce maximum avec wandb.Table.MAX_ROWS = {DESIRED_MAX}.
Vous pouvez également passer un objet DataFrame pandas.
Pour en savoir plus sur l’utilisation, consultez string.

HTML

Journalisez du HTML personnalisé sous n’importe quelle clé pour afficher un panneau HTML sur la page du run. Des styles par défaut sont injectés automatiquement ; pour les désactiver, passez inject=False.
Pour plus d’informations sur l’utilisation, consultez html-file.
Dernière modification le 30 septembre 2026