# FiftyOne

FiftyOne est un kit d’outils open source pour la curation, la visualisation et la gestion de données visuelles non structurées. La bibliothèque rationalise les flux de travail centrés sur les données, de la recherche de prédictions à faible confiance à l’identification d’échantillons de mauvaise qualité et à la découverte de motifs cachés dans vos données. La bibliothèque prend en charge tous les types de données visuelles, des images et vidéos aux PDF, nuages de points et maillages.

FiftyOne prend en charge les détections d'objets, les points clés, les polylignes et les schémas personnalisés.

FiftyOne est intégré au Hugging Face Hub afin que vous puissiez charger et partager des jeux de données FiftyOne directement depuis le Hub.

🚀 Essayez l'intégration FiftyOne 🤝 Hugging Face dans [Colab](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing) !

## Prérequis

Connectez-vous d'abord [avec votre compte Hugging Face](/docs/huggingface_hub/quick-start#login) :

```bash
hf auth login
```

Assurez-vous d'avoir installé `fiftyone>=0.24.0` :

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

## Chargement de jeux de données visuels depuis le Hub

Avec `load_from_hub()` des utilitaires Hugging Face de FiftyOne, vous pouvez charger :

- Tout jeu de données FiftyOne téléversé sur le hub
- La plupart des jeux de données basés sur des images et stockés dans des fichiers Parquet (ce qui est le standard pour les jeux de données téléversés sur le hub via la bibliothèque `datasets`)

### Chargement des jeux de données FiftyOne depuis le Hub

Tout jeu de données poussé sur le hub dans l’un des [formats courants pris en charge](https://docs.voxel51.com/user_guide/dataset_creation/datasets.html#supported-import-formats) par FiftyOne doit contenir toutes les informations de configuration nécessaires dans son dépôt de jeu de données sur le hub, ce qui vous permet de charger le jeu de données en spécifiant son `repo_id`. À titre d’exemple, pour charger le [jeu de données de détection 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](/static-proxy?url=https%3A%2F%2Fcdn-uploads.huggingface.co%2Fproduction%2Fuploads%2F63127e2495407887cb79c5ea%2F0eKxe_GSsBjt8wMjT9qaI.jpeg)

Vous pouvez [personnaliser le processus de téléchargement](https://docs.voxel51.com/integrations/huggingface.html#configuring-the-download-process), y compris le nombre d'échantillons à télécharger, le nom de l'objet dataset créé, ou s'il est persisté sur le disque ou non.

Vous pouvez lister tous les jeux de données FiftyOne disponibles sur le Hub en utilisant :

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

### Chargement de jeux de données Parquet depuis le Hub avec FiftyOne

Vous pouvez également utiliser la fonction `load_from_hub()` pour charger des jeux de données à partir de fichiers Parquet. Les conversions de types sont gérées pour vous, et les images sont téléchargées depuis les URL si nécessaire.

Grâce à cette fonctionnalité, [vous pouvez charger](https://docs.voxel51.com/integrations/huggingface.html#basic-examples) l'un des éléments suivants :

- [Jets de données de classification d'images compatibles FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-classification-datasets-665dfd51020d8b66a56c9b6f), comme [Food101](https://huggingface.co/datasets/ethz/food101) et [ImageNet-Sketch](https://huggingface.co/datasets/songweig/imagenet_sketch)
- [Joues de données de détection d'objets compatibles FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-object-detection-datasets-665e0279c94ae552c7159a2b) comme [CPPE-5](https://huggingface.co/datasets/rishitdagli/cppe-5) et [WIDER FACE](https://huggingface.co/datasets/CUHK-CSE/wider_face)
- [Joues de données de segmentation compatibles FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-segmentation-datasets-665e15b6ddb96a4d7226a380) comme [SceneParse150](https://huggingface.co/datasets/zhoubolei/scene_parse_150) et [Sidewalk Semantic](https://huggingface.co/datasets/segments/sidewalk-semantic)
- [Joues de données de légendes d’images compatibles FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-image-captioning-datasets-665e16e29350244c06084505) comme [COYO-700M](https://huggingface.co/datasets/kakaobrain/coyo-700m) et [New Yorker Caption Contest](https://huggingface.co/datasets/jmhessel/newyorker_caption_contest)
- [Jets de données de question-réponse visuelle compatibles FiftyOne](https://huggingface.co/collections/Voxel51/fiftyone-compatible-vqa-datasets-665e16424ecc8a718156248a) comme [TextVQA](https://huggingface.co/datasets/facebook/textvqa) et [ScienceQA](https://huggingface.co/datasets/derek-thomas/ScienceQA)

À titre d’exemple, nous pouvons charger les 1 000 premiers échantillons du [jeu de données WikiArt](https://huggingface.co/datasets/huggan/wikiart) dans FiftyOne avec :

```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](/static-proxy?url=https%3A%2F%2Fcdn-uploads.huggingface.co%2Fproduction%2Fuploads%2F63127e2495407887cb79c5ea%2FPCqCvTlNTG5SLtcK5fwuQ.jpeg)

## Pousser des jeux de données FiftyOne vers le Hub

Vous pouvez pousser un jeu de données vers le hub avec :

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

Lorsque vous appelez `push_to_hub()`, le jeu de données est téléversé dans le dépôt portant le nom de dépôt spécifié sous votre nom d’utilisateur, et le dépôt est créé si nécessaire. Une [fiche de jeu de données](./datasets-cards) est automatiquement générée et remplie avec les instructions pour charger le jeu de données depuis le hub. Vous pouvez téléverser une image ou un gif miniature pour qu’il s’affiche sur la fiche de jeu de données à l’aide de l’argument `preview_path`.

Voici un exemple utilisant de nombreux de ces arguments, qui téléverserait les trois premiers échantillons du jeu de données [Quickstart Video](https://docs.voxel51.com/user_guide/dataset_zoo/datasets.html#quickstart-video) de FiftyOne dans le dépôt privé `username/my-quickstart-video-dataset` avec des étiquettes, une licence MIT, une description et une image d’aperçu :

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

## 📚 Ressources

- [🚀 Notebook Colab pas à pas](https://colab.research.google.com/drive/1l0kzfbJ2wtUw1EGS1tq1PJYoWenMlihp?usp=sharing)
- [🗺️ Guide utilisateur pour les datasets FiftyOne](https://docs.voxel51.com/user_guide/using_datasets.html#)
- [🤗 FiftyOne 🤝 Documentation de l'intégration avec le Hub](https://docs.voxel51.com/integrations/huggingface.html#huggingface-hub)
- [🤗 Documentation d’intégration FiftyOne 🤝 Transformers](https://docs.voxel51.com/integrations/huggingface.html#transformers-library)
- [🧩 Plugin FiftyOne pour Hugging Face Hub](https://github.com/voxel51/fiftyone-huggingface-plugins)

