メインコンテンツへスキップ
GitHub source

class Image

W&B に画像をログ記録するためのクラスです。

method Image.__init__

__init__(
    data_or_path: 'ImageDataOrPathType',
    mode: Optional[str] = None,
    caption: Optional[str] = None,
    grouping: Optional[int] = None,
    classes: Optional[ForwardRef('Classes'), Sequence[dict]] = None,
    boxes: Optional[Dict[str, ForwardRef('BoundingBoxes2D')], Dict[str, dict]] = None,
    masks: Optional[Dict[str, ForwardRef('ImageMask')], Dict[str, dict]] = None,
    file_type: Optional[str] = None,
    normalize: bool = True
) → None
wandb.Image オブジェクトを初期化します。 このクラスは様々な画像データ形式を処理し、必要に応じてピクセル値を [0, 255] の範囲に自動的に正規化することで、 W&B バックエンドとの互換性を確保します。
  • [0, 1] の範囲のデータは 255 倍され、 uint8 に変換されます。
  • [-1, 1] の範囲のデータは、 -1 を 0 に、 1 を 255 にマッピングすることで [0, 255] にスケール調整され、 uint8 に変換されます。
  • [-1, 1] 外かつ [0, 255] 外のデータは、 [0, 255] にクリップされ、 uint8 に変換されます(値が [0, 255] を超える場合は警告が表示されます)。
  • すでに [0, 255] の範囲にあるデータは、変更されずに uint8 に変換されます。
arg:
  • data_or_path: 画像データの NumPy 配列 / PyTorch tensor 、 PIL 画像オブジェクト、または画像ファイルへのパスを受け取ります。 NumPy 配列または PyTorch tensor が提供された場合、画像データは指定された file_type で保存されます。 normalizeFalse に設定されていない限り、値が [0, 255] の範囲にない、またはすべての値が [0, 1] の範囲にある場合、画像ピクセル値は [0, 255] の範囲に正規化されます。
    • PyTorch tensor は (channel, height, width) の形式である必要があります。
    • NumPy 配列は (height, width, channel) の形式である必要があります。
  • mode: 画像の PIL モード。一般的なものは “L”、 “RGB”、 “RGBA” です。
  • 詳細については Pillow の公式ドキュメントを参照してください: https://pillow.readthedocs.io/en/stable/handbook/concepts.html#modes
  • caption: 画像表示用のキャプション(ラベル)。
  • grouping: 画像のグループ化番号。
  • classes: バウンディングボックスや画像マスクのラベル付けに使用される、画像のクラス情報のリスト。
  • boxes: 画像のバウンディングボックス情報を含む辞書。
  • https://docs.wandb.ai/ref/python/data-types/boundingboxes2d/ を参照してください。
  • masks: 画像のマスク情報を含む辞書。
  • https://docs.wandb.ai/ref/python/data-types/imagemask/ を参照してください。
  • file_type: 画像を保存するファイル形式。 data_or_path が画像ファイルへのパスである場合、このパラメータは効果がありません。
  • normalize: True の場合、画像のピクセル値を [0, 255] の範囲に収まるように正規化します。正規化は data_or_path が numpy 配列または pytorch tensor の場合にのみ適用されます。
Examples: NumPy 配列から wandb.Image を作成する
import numpy as np
import wandb

# run を初期化
with wandb.init() as run:
    examples = []
    for i in range(3):
         # ランダムな画像データを生成
         pixels = np.random.randint(low=0, high=256, size=(100, 100, 3))
         image = wandb.Image(pixels, caption=f"random field {i}")
         examples.append(image)
    # データをログ記録
    run.log({"examples": examples})
PILImage から wandb.Image を作成する
import numpy as np
from PIL import Image as PILImage
import wandb

# run を初期化
with wandb.init() as run:
    examples = []
    for i in range(3):
         pixels = np.random.randint(
             low=0, high=256, size=(100, 100, 3), dtype=np.uint8
         )
         pil_image = PILImage.fromarray(pixels, mode="RGB")
         image = wandb.Image(pil_image, caption=f"random field {i}")
         examples.append(image)
    # データをログ記録
    run.log({"examples": examples})
デフォルトの .png ではなく .jpg でログ記録する
import numpy as np
import wandb

# run を初期化
with wandb.init() as run:
    examples = []
    for i in range(3):
         pixels = np.random.randint(low=0, high=256, size=(100, 100, 3))
         image = wandb.Image(
             pixels, caption=f"random field {i}", file_type="jpg"
         )
         examples.append(image)
    # データをログ記録
    run.log({"examples": examples})

property Image.image