メインコンテンツまでスキップ

Log Media & Objects

画像、ビデオ、音声など、さまざまなメディアをサポートしています。豊富なメディアをログして結果を詳細に検討し、Runs、Models、Datasetsを視覚的に比較しましょう。具体例やガイドについては以下をお読みください。

備考

メディアタイプのリファレンスドキュメントをお探しですか?このページをご参照ください。

備考

これらのメディアオブジェクトをログするための動作するコードは、このColab Notebookで確認できます。また、結果がどう見えるかをこちらで確認できます。さらに、ビデオチュートリアルもリンクされています。

Images

画像をログして、入力、出力、フィルタの重み、活性化などを追跡しましょう!

オートエンコーダーネットワークのインペインティングの入力と出力

画像はNumPy配列、PIL画像、またはファイルシステムから直接ログできます。

備考

トレーニング中にログがボトルネックとならないように、一度のステップでログする画像は50枚未満にすることをお勧めします。また、結果を表示する際にも画像の読み込みがボトルネックにならないようにします。

例えば torchvisionmake_grid を使って手動で画像を作成する場合、配列を直接提供します。

配列は Pillow を使ってpngに変換されます。

images = wandb.Image(image_array, caption="Top: Output, Bottom: Input")

wandb.log({"examples": images})

画像がグレースケールである場合は最後の次元が1、RGBの場合は3、RGBAの場合は4であると仮定します。配列が浮動小数点数の場合、これを 0 から 255 の範囲の整数に変換します。異なる方法で画像を正規化したい場合は、mode を手動で指定するか、"Logging PIL Images" タブで説明されているように、PIL.Image を直接提供できます。

Image Overlays

セマンティックセグメンテーションマスクをログし、W&BのUIでそれらとインタラクトできます(不透明度の変更、時間経過の表示など)。

W&B UIでのインタラクティブなマスク表示

オーバーレイをログするには、以下のキーと値を含む辞書を wandb.Imagemasks キーワード引数に提供する必要があります。

  • 画像マスクを表す2つのキーのいずれか:
    • "mask_data": 各ピクセルのクラスラベルを含む2次元NumPy配列
    • "path": 保存された画像マスクファイルへのパス(文字列)
  • "class_labels": (オプション)画像マスク内のクラスラベルとその読みやすいクラス名をマッピングする辞書

複数のマスクをログするには、複数のキーを持つマスク辞書をログします。以下のコードスニペットを参照してください。

ライブ例を見る →

サンプルコード →

mask_data = np.array([[1, 2, 2, ..., 2, 2, 1], ...])

class_labels = {1: "tree", 2: "car", 3: "road"}

mask_img = wandb.Image(
image,
masks={
"predictions": {"mask_data": mask_data, "class_labels": class_labels},
"ground_truth": {
# ...
},
# ...
},
)

Image Overlays in Tables

Tablesでのインタラクティブなセグメンテーションマスク

Tables にセグメンテーションマスクをログするには、各行に wandb.Image オブジェクトを提供する必要があります。

以下のコードスニペットに例を示します:

table = wandb.Table(columns=["ID", "Image"])

for id, img, label in zip(ids, images, labels):
mask_img = wandb.Image(
img,
masks={
"prediction": {"mask_data": label, "class_labels": class_labels}
# ...
},
)

table.add_data(id, img)

wandb.log({"Table": table})

Histograms

数値のシーケンス(例:リスト、配列、テンソル)が最初の引数として提供された場合、自動的に `np.histogram` を呼び出してヒストグラムを構築します。すべての配列/テンソルはフラット化されます。デフォルトの64ビンを上書きするためにオプションの `num_bins` キーワード引数を使用できます。サポートされている最大ビン数は512です。

UIでは、ヒストグラムはトレーニングステップをx軸、メトリック値をy軸にプロットし、ログされたヒストグラムを比較しやすくするために色でカウントを表現します。詳細については、このパネルの「Histograms in Summary」タブを参照してください。

wandb.log({"gradients": wandb.Histogram(grads)})

GANの判別器の勾配

サマリーにあるヒストグラムはRun Pageのoverviewタブに表示されます。ヒストリーにある場合は、Chartsタブで時間経過にわたるビンのヒートマップを表示します。

3D Visualizations

'obj', 'gltf', 'glb', 'babylon', 'stl', 'pts.json' 形式のファイルをログすると、runが終了したときにUIで表示されます。

wandb.log(
{
"generated_samples": [
wandb.Object3D(open("sample.obj")),
wandb.Object3D(open("sample.gltf")),
wandb.Object3D(open("sample.glb")),
]
}
)

ヘッドフォンポイントクラウドの正解と予測

ライブ例を見る →

Other Media

W&Bはその他のさまざまなメディアタイプのログもサポートしています。

wandb.log({"whale songs": wandb.Audio(np_array, caption="OooOoo", sample_rate=32)})

ログできる音声クリップの最大数はステップあたり100です。

Frequently Asked Questions

画像やメディアをエポックやステップごとに比較するにはどうすればよいですか?

ステップごとに画像をログするたびに、それを保存してUIに表示します。画像パネルを展開し、ステップスライダーを使用して異なるステップの画像を確認できます。これにより、トレーニング中にモデルの出力がどのように変化するかを簡単に比較できます。

プロジェクトにW&Bを統合したいが、画像やメディアをアップロードしたくない場合はどうすればよいですか?

W&Bはスカラーのみをログするプロジェクトにも使用できます。アップロードしたいファイルやデータは明示的に指定します。画像をログしないPyTorchの簡単な例をご覧ください。

PNGをどうやってログしますか?

wandb.Imageは、numpy 配列や PILImage のインスタンスをデフォルトでPNGに変換します。

wandb.log({"example": wandb.Image(...)})
# または複数の画像をログ
wandb.log({"example": [wandb.Image(...) for img in images]})

ビデオをどうやってログしますか?

ビデオは wandb.Video データタイプを使用してログされます:

wandb.log({"example": wandb.Video("myvideo.mp4")})

これでメディアブラウザでビデオを見ることができます。プロジェクトworkspace、run workspace、またはレポートに移動し、「Add visualization」をクリックして豊富なメディアパネルを追加します。

ポイントクラウド内でナビゲートおよびズームインするにはどうすればよいですか?

コントロールキーを押しながらマウスを使用してスペース内を移動します。

分子の2Dビューをどうやってログしますか?

wandb.Image データタイプと rdkit を使用して分子の2Dビューをログできます:

molecule = rdkit.Chem.MolFromSmiles("CC(=O)O")
rdkit.Chem.AllChem.Compute2DCoords(molecule)
rdkit.Chem.AllChem.GenerateDepictionMatching2DStructure(molecule, molecule)
pil_image = rdkit.Chem.Draw.MolToImage(molecule, size=(300, 300))
Was this page helpful?👍👎