# FiftyOne

FiftyOne adalah toolkit open-source untuk mengkurasi, memvisualisasikan, dan mengelola data visual tidak terstruktur. Perpustakaan ini menyederhanakan alur kerja yang berpusat pada data, mulai dari menemukan prediksi dengan keyakinan rendah hingga mengidentifikasi sampel berkualitas buruk dan mengungkap pola tersembunyi dalam data Anda. Perpustakaan ini mendukung berbagai jenis data visual, mulai dari gambar dan video hingga PDF, awan titik, dan mesh.

FiftyOne mengakomodasi deteksi objek, titik kunci, poligon, dan skema kustom.

FiftyOne terintegrasi dengan Hugging Face Hub sehingga Anda dapat memuat dan membagikan dataset FiftyOne langsung dari Hub.

🚀 Coba Integrasi FiftyOne 🤝 Hugging Face di [Colab](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing)!

## Prasyarat

Pertama [masuk dengan akun Hugging Face Anda](/docs/huggingface_hub/quick-start#login):

```bash
hf auth login
```

Pastikan Anda telah menginstal `fiftyone>=0.24.0`:

```bash
pip install -U fiftyone
```

## Memuat Dataset Visual dari Hub

Dengan `load_from_hub()` dari utilitas Hugging Face FiftyOne, Anda dapat memuat:

- Setiap dataset FiftyOne yang diunggah ke hub
- Sebagian besar dataset berbasis gambar yang disimpan dalam file Parquet (yang merupakan standar untuk dataset yang diunggah ke hub melalui pustaka `datasets`)

### Memuat dataset FiftyOne dari Hub

Setiap dataset yang diunggah ke hub dalam salah satu [format umum yang didukung](https://docs.voxel51.com/user_guide/dataset_creation/datasets.html#supported-import-formats) oleh FiftyOne harus memiliki semua informasi konfigurasi yang diperlukan di repo dataset-nya di hub, sehingga Anda dapat memuat dataset dengan menentukan `repo_id`-nya. Sebagai contoh, untuk memuat [dataset deteksi VisDrone](https://huggingface.co/datasets/Voxel51/VisDrone2019-DET):

```python
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 VisDrone dataset](https://cdn-uploads.huggingface.co/production/uploads/63127e2495407887cb79c5ea/0eKxe_GSsBjt8wMjT9qaI.jpeg)

Anda dapat [mengustomisasi proses unduhan](https://docs.voxel51.com/integrations/huggingface.html#configuring-the-download-process), termasuk jumlah sampel yang diunduh, nama objek dataset yang dibuat, atau apakah dataset tersebut disimpan ke disk atau tidak.

Anda dapat mendaftar semua dataset FiftyOne yang tersedia di Hub menggunakan:

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

### Memuat Dataset Parquet dari Hub dengan FiftyOne

Anda juga dapat menggunakan fungsi `load_from_hub()` untuk memuat dataset dari file Parquet. Konversi tipe data ditangani untuk Anda, dan gambar diunduh dari URL jika diperlukan.

Dengan fungsionalitas ini, [Anda dapat memuat](https://docs.voxel51.com/integrations/huggingface.html#basic-examples) salah satu dari berikut ini:

- [Dataset Klasifikasi Gambar yang Kompatibel dengan FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-classification-datasets-665dfd51020d8b66a56c9b6f), seperti [Food101](https://huggingface.co/datasets/ethz/food101) dan [ImageNet-Sketch](https://huggingface.co/datasets/songweig/imagenet_sketch)
- [Dataset Deteksi Objek yang Kompatibel dengan FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-object-detection-datasets-665e0279c94ae552c7159a2b) seperti [CPPE-5](https://huggingface.co/datasets/rishitdagli/cppe-5) dan [WIDER FACE](https://huggingface.co/datasets/CUHK-CSE/wider_face)
- [Dataset Segmentasi yang Kompatibel dengan FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-segmentation-datasets-665e15b6ddb96a4d7226a380) seperti [SceneParse150](https://huggingface.co/datasets/zhoubolei/scene_parse_150) dan [Sidewalk Semantic](https://huggingface.co/datasets/segments/sidewalk-semantic)
- [Dataset Captioning Gambar yang Kompatibel dengan FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-captioning-datasets-665e16e29350244c06084505) seperti [COYO-700M](https://huggingface.co/datasets/kakaobrain/coyo-700m) dan [New Yorker Caption Contest](https://huggingface.co/datasets/jmhessel/newyorker_caption_contest)
- [Dataset Visual Question-Answering yang Kompatibel dengan FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-vqa-datasets-665e16424ecc8a718156248a) seperti [TextVQA](https://huggingface.co/datasets/facebook/textvqa) dan [ScienceQA](https://huggingface.co/datasets/derek-thomas/ScienceQA)

Sebagai contoh, kita dapat memuat 1.000 sampel pertama dari [dataset WikiArt](https://huggingface.co/datasets/huggan/wikiart) ke FiftyOne dengan:

```python
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
)
```

![WikiArt Dataset](https://cdn-uploads.huggingface.co/production/uploads/63127e2495407887cb79c5ea/PCqCvTlNTG5SLtcK5fwuQ.jpeg)

## Mendorong Dataset FiftyOne ke Hub

Anda dapat mendorong dataset ke hub dengan:

```python
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")
```

Saat Anda memanggil `push_to_hub()`, dataset akan diunggah ke repo dengan nama repo yang ditentukan di bawah nama pengguna Anda, dan repo akan dibuat jika diperlukan. [Dataset Card](./datasets-cards) akan dibuat secara otomatis dan diisi dengan instruksi untuk memuat dataset dari hub. Anda dapat mengunggah gambar/gif thumbnail untuk ditampilkan di Dataset Card dengan argumen `preview_path`.

Berikut adalah contoh yang menggunakan banyak argumen tersebut, yang akan mengunggah tiga sampel pertama dari dataset [Quickstart Video](https://docs.voxel51.com/user_guide/dataset_zoo/datasets.html#quickstart-video) FiftyOne ke repo privat `username/my-quickstart-video-dataset` dengan tag, lisensi MIT, deskripsi, dan gambar pratinjau:

```python
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>"
)
```

## 📚 Sumber daya

- [🚀 Notebook Colab Code-Along](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing)
- [🗺️ Panduan Pengguna untuk Dataset FiftyOne](https://docs.voxel51.com/user_guide/using_datasets.html#)
- [🤗 Dokumentasi Integrasi FiftyOne 🤝 Hub](https://docs.voxel51.com/integrations/huggingface.html#huggingface-hub)
- [🤗 Dokumentasi Integrasi FiftyOne 🤝 Transformers](https://docs.voxel51.com/integrations/huggingface.html#transformers-library)
- [🧩 Plugin FiftyOne Hugging Face Hub](https://github.com/voxel51/fiftyone-huggingface-plugins)

