FiftyOne

FiftyOne

FiftyOne은 비정형 시각 데이터를 큐레이션, 시각화, 관리하기 위한 오픈소스 툴킷이에요. 이 라이브러리는 낮은 신뢰도의 예측 찾기부터 품질이 낮은 샘플 식별, 데이터의 숨은 패턴 발견까지 데이터 중심(data-centric) 워크플로를 간소화해 줘요. 이미지, 비디오부터 PDF, 포인트 클라우드, 메시(mesh)까지 모든 종류의 시각 데이터를 지원해요.

출처: 문서

본문

FiftyOne은 객체 감지(object detection), 키포인트, 폴리라인, 커스텀 스키마를 지원해요.

FiftyOne은 Hugging Face 허브와 통합되어 있어서 FiftyOne 데이터셋을 허브에서 직접 로드하고 공유할 수 있어요.

🚀 Colab에서 FiftyOne 🤝 Hugging Face 통합을 시험해 보세요!

사전 요구 사항

먼저 Hugging Face 계정으로 로그인하세요:

hf auth login

fiftyone>=0.24.0이 설치되어 있는지 확인하세요:

pip install -U fiftyone

허브에서 시각 데이터셋 로드하기

FiftyOne의 Hugging Face 유틸리티에서 load_from_hub()를 사용하면 다음을 로드할 수 있어요:

  • 허브에 업로드된 모든 FiftyOne 데이터셋
  • Parquet 파일에 저장된 대부분의 이미지 기반 데이터셋(datasets 라이브러리로 허브에 업로드된 데이터셋의 표준)

허브에서 FiftyOne 데이터셋 로드하기

FiftyOne의 지원되는 공통 형식 중 하나로 허브에 푸시된 모든 데이터셋은 허브의 데이터셋 저장소에 필요한 모든 구성 정보를 갖고 있어야 하므로, repo_id만 지정하면 데이터셋을 로드할 수 있어요. 예를 들어 VisDrone 감지 데이터셋을 로드하려면:

import fiftyone as fo
from fiftyone.utils import load_from_hub

## load from the hub
dataset = load_from_hub("Voxel51/VisDrone2019-DET")

## visualize in app
session = fo.launch_app(dataset)

다운로드 과정을 커스터마이즈할 수 있는데, 다운로드할 샘플 수, 생성되는 데이터셋 객체의 이름, 디스크에 저장할지 여부 등을 정할 수 있어요.

허브의 사용 가능한 모든 FiftyOne 데이터셋을 나열하려면:

from huggingface_hub import HfApi
api = HfApi()
api.list_datasets(tags="fiftyone")

FiftyOne으로 허브의 Parquet 데이터셋 로드하기

load_from_hub() 함수를 사용해 Parquet 파일에서 데이터셋을 로드할 수도 있어요. 타입 변환은 자동으로 처리되고, 필요하면 이미지가 URL에서 다운로드돼요.

이 기능으로 다음을 로드할 수 있어요:

예를 들어 WikiArt 데이터셋의 처음 1,000개 샘플을 FiftyOne으로 로드할 수 있어요:

import fiftyone as fo
from fiftyone.utils.huggingface import load_from_hub

dataset = load_from_hub(
    "huggan/wikiart",  ## repo_id
    format="parquet",  ## for Parquet format
    classification_fields=["artist", "style", "genre"], ## columns to treat as classification labels
    max_samples=1000,  # number of samples to load
    name="wikiart",  # name of the dataset in FiftyOne
)

FiftyOne 데이터셋을 허브로 푸시하기

다음으로 데이터셋을 허브에 푸시할 수 있어요:

import fiftyone as fo
import fiftyone.zoo as foz
from fiftyone.utils.huggingface import push_to_hub

## load example dataset
dataset = foz.load_zoo_dataset("quickstart")

## push to hub
push_to_hub(dataset, "my-hf-dataset")

push_to_hub()를 호출하면 데이터셋이 내 사용자 이름 아래 지정된 저장소 이름으로 업로드되고, 필요하면 저장소가 생성돼요. Dataset Card가 자동으로 생성되어 허브에서 데이터셋을 로드하는 지침이 채워져요. preview_path 인자로 Dataset Card에 표시할 썸네일 이미지/gif를 업로드할 수 있어요.

다음은 여러 인자를 사용하는 예시로, FiftyOne의 Quickstart Video 데이터셋의 처음 세 샘플을 태그, MIT 라이선스, 설명, 미리보기 이미지와 함께 비공개 저장소 username/my-quickstart-video-dataset으로 업로드하는 코드예요:

dataset = foz.load_from_zoo("quickstart-video", max_samples=3)

push_to_hub(
    dataset,
    "my-quickstart-video-dataset",
    tags=["video", "tracking"],
    license="mit",
    description="A dataset of video samples for tracking tasks",
    private=True,
    preview_path="<path/to/preview.png>"
)

📚 리소스

더 알아보기 (Learn more)