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에서 다운로드돼요.
이 기능으로 다음을 로드할 수 있어요:
- Food101, ImageNet-Sketch 같은 FiftyOne 호환 이미지 분류 데이터셋
- CPPE-5, WIDER FACE 같은 FiftyOne 호환 객체 감지 데이터셋
- SceneParse150, Sidewalk Semantic 같은 FiftyOne 호환 분할 데이터셋
- COYO-700M, New Yorker Caption Contest 같은 FiftyOne 호환 이미지 캡셔닝 데이터셋
- TextVQA, ScienceQA 같은 FiftyOne 호환 VQA 데이터셋
예를 들어 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>"
)
📚 리소스
- 🚀 Code-Along Colab 노트북
- 🗺️ FiftyOne 데이터셋 사용자 가이드
- 🤗 FiftyOne 🤝 Hub 통합 문서
- 🤗 FiftyOne 🤝 Transformers 통합 문서
- 🧩 FiftyOne Hugging Face Hub 플러그인
더 알아보기 (Learn more)
- FiftyOne 통합 문서에서 다운로드 커스터마이즈에 대해 더 배울 수 있어요.
- 허브의 FiftyOne 데이터셋 컬렉션을 둘러보세요.