본문으로 건너뛰기

미디어 및 오브젝트 로깅

이미지, 비디오, 오디오 등을 지원합니다. 풍부한 미디어를 로깅하여 결과를 탐색하고 run, 모델, 데이터셋을 시각적으로 비교해보세요. 예시 및 사용 방법 가이드는 계속해서 읽어보세요.

정보

미디어 타입에 대한 참조 문서를 찾고 있나요? 이 페이지를 참조하세요.

정보

이러한 미디어 오브젝트를 로깅하는 작동 코드는 이 Colab 노트북에서 확인할 수 있으며, wandb.ai에서 결과를 여기에서 확인하고, 위에 링크된 비디오 튜토리얼을 따라할 수 있습니다.

이미지

입력, 출력, 필터 가중치, 활성화 등을 로깅하여 추적하세요!

Inputs and outputs of an autoencoder network performing in-painting.

이미지는 NumPy 배열, PIL 이미지 또는 파일 시스템에서 직접 로깅할 수 있습니다.

정보

트레이닝 중 로깅이 병목 현상이 되지 않도록 하고 결과를 볼 때 이미지 로딩이 병목 현상이 되지 않도록 스텝 당 50개 미만의 이미지를 로깅하는 것이 좋습니다.

예를 들어, torchvision에서 make_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를 수동으로 지정하거나 PIL.Image을 직접 제공하면 됩니다. 이 패널의 "PIL 이미지 로깅하기" 탭에서 설명한 것처럼요.

이미지 오버레이

W&B UI에서 (불투명도 조정, 시간에 따른 변경 사항 보기 등) 상호 작용하며 시멘틱 세그멘테이션 마스크를 로깅하세요.

Interactive mask viewing in the W&B UI.

오버레이를 로깅하려면 wandb.Imagemasks 키워드 인수에 다음 키와 값을 포함하는 사전을 제공해야 합니다:

  • 이미지 마스크를 나타내는 두 가지 키 중 하나:
    • "mask_data": 각 픽셀에 대한 정수 클래스 레이블을 포함하는 2D 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": {
# ...
},
# ...
},
)

테이블에서의 이미지 오버레이

Interactive Segmentation Masks in 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})

히스토그램

첫 번째 인수로 숫자 시퀀스(예: 리스트, 배열, 텐서)가 제공되면, `np.histogram`을 호출하여 히스토그램을 자동으로 구성합니다. 모든 배열/텐서는 평탄화됩니다. 기본값인 `64`개의 bin을 변경하려면 선택적 키워드 인수 `num_bins`를 사용할 수 있습니다. 지원되는 최대 bin 수는 `512`입니다.

UI에서는 훈련 단계를 x축에, 메트릭 값을 y축에 두고, 색상으로 카운트를 나타내어 훈련 중에 로깅된 히스토그램을 비교하기 쉽게 히스토그램을 그립니다. 이 패널의 "요약에서의 히스토그램" 탭에서 일회성 히스토그램 로깅에 대한 세부 정보를 확인하세요.

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

Gradients for the discriminator in a GAN.

히스토그램이 요약에 있는 경우 Run Page의 Overview 탭에 표시됩니다. 히스토그램이 기록에 있는 경우, 차트 탭에서 시간에 따른 bin의 열지도를 그립니다.

이미지나 미디어를 업로드하지 않고 W&B를 내 프로젝트에 통합하고 싶다면 어떻게 해야 하나요?

W&B는 스칼라만 로그하는 프로젝트에서도 사용할 수 있으며 업로드하고 싶은 파일이나 데이터를 명시적으로 지정할 수 있습니다. 이미지를 로그하지 않는 PyTorch에서의 빠른 예제가 있습니다.

PNG를 로그하는 방법은?

wandb.Imagenumpy 배열이나 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")})

이제 미디어 브라우저에서 비디오를 볼 수 있습니다. 프로젝트 워크스페이스, run 워크스페이스, 또는 리포트로 이동하여 "시각화 추가"를 클릭하여 리치 미디어 패널을 추가하세요.

포인트 클라우드에서 탐색하고 확대하는 방법은?

컨트롤을 누른 상태에서 마우스를 사용하여 공간 안에서 이동할 수 있습니다.

분자의 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))

wandb.log({"acetic_acid": wandb.Image(pil_image)})
Was this page helpful?👍👎