# FiftyOne

FiftyOne là một bộ công cụ mã nguồn mở để tuyển chọn, trực quan hóa và quản lý dữ liệu thị giác không cấu trúc. Thư viện này tối ưu hóa các quy trình làm việc tập trung vào dữ liệu, từ việc tìm các dự đoán có độ tin cậy thấp đến xác định các mẫu có chất lượng kém và khám phá các mẫu hình ẩn trong dữ liệu của bạn. Thư viện hỗ trợ mọi loại dữ liệu thị giác, từ hình ảnh và video đến PDF, đám mây điểm và lưới.

FiftyOne hỗ trợ phát hiện đối tượng, điểm then chốt, đường đa đoạn và các schema tùy chỉnh.

FiftyOne được tích hợp với Hugging Face Hub để bạn có thể tải và chia sẻ các bộ dữ liệu FiftyOne trực tiếp từ Hub.

🚀 Thử nghiệm tích hợp FiftyOne 🤝 Hugging Face trên [Colab](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing)!

## Yêu cầu tiên quyết

Trước tiên [đăng nhập bằng tài khoản Hugging Face của bạn](/docs/huggingface_hub/quick-start#login):

```bash
hf auth login
```

Hãy đảm bảo bạn đã cài đặt `fiftyone>=0.24.0`:

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

## Tải bộ dữ liệu thị giác từ Hub

Với `load_from_hub()` từ tiện ích Hugging Face của FiftyOne, bạn có thể tải:

- Bất kỳ dataset FiftyOne nào được tải lên hub
- Hầu hết các bộ dữ liệu dựa trên hình ảnh được lưu trữ trong các tệp Parquet (đây là tiêu chuẩn cho các bộ dữ liệu được tải lên hub thông qua thư viện `datasets`)

### Tải bộ dữ liệu FiftyOne từ Hub

Bất kỳ dataset nào được đẩy lên hub ở một trong các [định dạng phổ biến được hỗ trợ](https://docs.voxel51.com/user_guide/dataset_creation/datasets.html#supported-import-formats) của FiftyOne đều phải có đầy đủ thông tin cấu hình cần thiết trong kho dataset của nó trên hub, vì vậy bạn có thể tải dataset bằng cách chỉ định `repo_id` của nó. Ví dụ, để tải [dataset phát hiện 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)

Bạn có thể [tùy chỉnh quy trình tải xuống](https://docs.voxel51.com/integrations/huggingface.html#configuring-the-download-process), bao gồm số lượng mẫu cần tải xuống, tên của đối tượng dataset được tạo ra, hoặc việc có lưu trữ nó xuống đĩa hay không.

Bạn có thể liệt kê tất cả các bộ dữ liệu FiftyOne có sẵn trên Hub bằng cách sử dụng:

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

### Tải Datasets Parquet từ Hub bằng FiftyOne

Bạn cũng có thể sử dụng hàm `load_from_hub()` để tải các bộ dữ liệu từ các tệp Parquet. Việc chuyển đổi kiểu dữ liệu sẽ được xử lý tự động, và hình ảnh sẽ được tải xuống từ URL nếu cần.

Với tính năng này, [bạn có thể tải](https://docs.voxel51.com/integrations/huggingface.html#basic-examples) bất kỳ mục nào sau đây:

- [Các bộ dữ liệu phân loại ảnh tương thích với FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-classification-datasets-665dfd51020d8b66a56c9b6f), chẳng hạn như [Food101](https://huggingface.co/datasets/ethz/food101) và [ImageNet-Sketch](https://huggingface.co/datasets/songweig/imagenet_sketch)
- [Các bộ dữ liệu phát hiện đối tượng tương thích với FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-object-detection-datasets-665e0279c94ae552c7159a2b) như [CPPE-5](https://huggingface.co/datasets/rishitdagli/cppe-5) và [WIDER FACE](https://huggingface.co/datasets/CUHK-CSE/wider_face)
- [Các bộ dữ liệu phân đoạn tương thích với FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-segmentation-datasets-665e15b6ddb96a4d7226a380) như [SceneParse150](https://huggingface.co/datasets/zhoubolei/scene_parse_150) và [Sidewalk Semantic](https://huggingface.co/datasets/segments/sidewalk-semantic)
- [Các bộ dữ liệu chú thích ảnh tương thích với FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-captioning-datasets-665e16e29350244c06084505) như [COYO-700M](https://huggingface.co/datasets/kakaobrain/coyo-700m) và [New Yorker Caption Contest](https://huggingface.co/datasets/jmhessel/newyorker_caption_contest)
- [Các bộ dữ liệu hỏi đáp thị giác tương thích với FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-vqa-datasets-665e16424ecc8a718156248a) như [TextVQA](https://huggingface.co/datasets/facebook/textvqa) và [ScienceQA](https://huggingface.co/datasets/derek-thomas/ScienceQA)

Ví dụ, chúng ta có thể nạp 1.000 mẫu đầu tiên từ [dataset WikiArt](https://huggingface.co/datasets/huggan/wikiart) vào FiftyOne bằng cách:

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

## Đẩy Datasets FiftyOne lên Hub

Bạn có thể đẩy một tập dữ liệu lên hub bằng cách:

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

Khi bạn gọi `push_to_hub()`, dataset sẽ được tải lên repo với tên repo đã chỉ định dưới tên người dùng của bạn, và repo sẽ được tạo nếu cần. Một [Dataset Card](./datasets-cards) sẽ được tạo tự động và điền sẵn các hướng dẫn để tải dataset từ hub. Bạn có thể tải lên một hình ảnh/gif thumbnail để hiển thị trên Dataset Card bằng đối số `preview_path`.

Dưới đây là một ví dụ sử dụng nhiều đối số này, sẽ tải lên kho riêng tư `username/my-quickstart-video-dataset` ba mẫu đầu tiên của bộ dữ liệu [Quickstart Video](https://docs.voxel51.com/user_guide/dataset_zoo/datasets.html#quickstart-video) của FiftyOne, kèm theo các thẻ, giấy phép MIT, mô tả và hình ảnh xem trước:

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

## 📚 Tài nguyên

- [🚀 Notebook Colab Code-Along](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing)
- [🗺️ Hướng dẫn sử dụng FiftyOne Datasets](https://docs.voxel51.com/user_guide/using_datasets.html#)
- [🤗 Tài liệu tích hợp FiftyOne 🤝 Hub](https://docs.voxel51.com/integrations/huggingface.html#huggingface-hub)
- [🤗 Tài liệu tích hợp FiftyOne 🤝 Transformers](https://docs.voxel51.com/integrations/huggingface.html#transformers-library)
- [🧩 FiftyOne Hugging Face Hub Plugin](https://github.com/voxel51/fiftyone-huggingface-plugins)

