FiftyOne and Zilliz Cloud Integration

FiftyOne and Zilliz Cloud integrate to power vision searches on computer vision datasets, combining FiftyOne's open-source toolkit for dataset curation and model evaluation with Zilliz Cloud's high-performance vector database for efficient visual similarity search, cross-modal retrieval, and multimodal embedding exploration.

Utilisez cette intégration gratuitement
  • Qu’est-ce que FiftyOne

    FiftyOne est un outil open source permettant de créer des jeux de données et des modèles de vision par ordinateur de haute qualité. Il permet aux équipes de science des données d’améliorer les modèles de vision par ordinateur grâce à la curation de jeux de données, l’évaluation des modèles, l’identification des erreurs, la visualisation des embeddings et les workflows de production. Grâce à son intégration native avec les moteurs de recherche vectorielle, FiftyOne permet aux utilisateurs d’exploiter facilement la recherche par similarité pour une exploration efficace des données visuelles avec une seule ligne de code.

    En s’intégrant à Zilliz Cloud (Milvus entièrement géré), FiftyOne accède à une base de données vectorielle évolutive pour stocker et rechercher des embeddings d’images, permettant une recherche efficace par similarité visuelle, une récupération intermodale (recherche texte-vers-image), une recherche d’objets spécifiques dans les images et l’exploration d’embeddings multimodaux sur des jeux de données de vision par ordinateur à grande échelle.

  • Avantages de l’intégration FiftyOne + Zilliz Cloud

    • Recherche de similarité en une seule ligne : L’intégration Milvus native de FiftyOne vous permet de calculer des indices de similarité et d’interroger des jeux de données avec backend="milvus" — une seule ligne de code suffit pour exploiter les capacités de recherche vectorielle de Zilliz Cloud.
    • Recherche intermodale : L’intégration prend en charge la recherche texte-image, permettant aux utilisateurs de trouver des images à l’aide de requêtes en langage naturel alimentées par des modèles comme CLIP, avec des embeddings stockés et recherchés dans Zilliz Cloud.
    • Recherche spécifique aux objets : Au-delà de la similarité sur l’image entière, les utilisateurs peuvent rechercher des objets spécifiques dans les images (personnes, animaux, véhicules) à l’aide d’embeddings au niveau des patches stockés dans Zilliz Cloud.
    • Authentification et configuration flexibles : L’intégration prend en charge plusieurs méthodes d’authentification — variables d’environnement, fichiers de configuration brain ou arguments nommés — pour se connecter à des serveurs Milvus ou à Zilliz Cloud.
    • Exploration visuelle des données : L’application interactive de FiftyOne fournit une recherche de similarité par pointer-cliquer ainsi qu’un accès programmatique en Python, tous deux adossés à la récupération vectorielle rapide de Zilliz Cloud.
  • Fonctionnement de l’intégration

    FiftyOne sert d’interface de vision par ordinateur et de couche de gestion des jeux de données, fournissant des outils pour charger des jeux de données, calculer des embeddings à l’aide de modèles comme CLIP, gérer des index de similarité (brain runs) et visualiser les résultats de recherche via son App interactive et son API Python.

    Zilliz Cloud sert de backend de base de données vectorielle, stockant et indexant les embeddings d’images et de patchs calculés par FiftyOne. Il fournit une recherche de similarité haute performance utilisant des métriques comme le produit scalaire ou la distance euclidienne, permettant une récupération rapide des images les plus similaires à partir de grands jeux de données.

    Ensemble, FiftyOne et Zilliz Cloud créent une solution complète de recherche visuelle : les images sont chargées dans FiftyOne, les embeddings sont calculés à l’aide d’un modèle choisi, et un index de similarité Milvus est créé dans Zilliz Cloud via compute_similarity(). Les utilisateurs peuvent ensuite interroger leurs données à l’aide de sort_by_similarity() pour trouver des images similaires par ID d’échantillon, invites textuelles ou vecteurs d’embedding — le tout avec Zilliz Cloud qui gère le stockage vectoriel et la recherche à grande échelle.

  • Guide étape par étape

    1. Installer les packages requis

    python3 -m pip install pymilvus fiftyone torch torchvision
    

    2. Charger un jeu de données dans FiftyOne et calculer les embeddings

    Chargez l’ensemble d’images d’exemple fourni par FiftyOne, calculez les embeddings et créez un index de similarité Milvus :

    import fiftyone as fo
    import fiftyone.brain as fob
    import fiftyone.zoo as foz
    
    # Step 1: Load your data into FiftyOne
    dataset = foz.load_zoo_dataset("quickstart")
    
    # Steps 2 and 3: Compute embeddings and create a similarity index
    milvus_index = fob.compute_similarity(
        dataset,
        brain_key="milvus_index",
        backend="milvus",
    )
    

    3. Effectuer des recherches de similarité visuelle

    Utilisez l’index de similarité Milvus pour effectuer des recherches de similarité visuelle sur votre jeu de données :

    # Step 4: Query your data
    query = dataset.first().id  # query by sample ID
    view = dataset.sort_by_similarity(
        query,
        brain_key="milvus_index",
        k=10,  # limit to 10 most similar samples
    )
    
    # Step 5 (optional): Cleanup
    
    # Delete the Milvus collection
    milvus_index.cleanup()
    
    # Delete run record from FiftyOne
    dataset.delete_brain_run("milvus_index")
    

    4. Configurer le backend Milvus

    Définissez le backend Milvus de manière permanente via une variable d’environnement :

    export FIFTYONE_BRAIN_DEFAULT_SIMILARITY_BACKEND=milvus
    

    Ou configurez-le via la configuration brain dans ~/.fiftyone/brain_config.json :

    {
        "default_similarity_backend": "milvus"
    }
    

    5. Authentification pour un serveur Milvus personnalisé ou Zilliz Cloud

    Configurez les identifiants via des variables d’environnement (recommandé) :

    export FIFTYONE_BRAIN_SIMILARITY_MILVUS_URI=XXXXXX
    export FIFTYONE_BRAIN_SIMILARITY_MILVUS_USER=XXXXXX
    export FIFTYONE_BRAIN_SIMILARITY_MILVUS_PASSWORD=XXXXXX
    export FIFTYONE_BRAIN_SIMILARITY_MILVUS_TOKEN=XXXXXX
    

    Ou transmettez les identifiants directement comme arguments nommés :

    milvus_index = fob.compute_similarity(
        ...
        backend="milvus",
        brain_key="milvus_index",
        uri="XXXXXX",
        token="XXXXXX",
        collection_name="your_collection",
        metric="dotproduct",
    )
    

    6. Gérer les exécutions Brain

    Répertoriez, inspectez, renommez ou supprimez les exécutions brain :

    # List all brain runs
    dataset.list_brain_runs()
    
    # Only list similarity runs
    dataset.list_brain_runs(type=fob.Similarity)
    
    # Get brain run info
    info = dataset.get_brain_info("milvus_index")
    print(info)
    
    # Delete brain run and Milvus collection
    milvus_index = dataset.load_brain_results("milvus_index")
    milvus_index.cleanup()
    dataset.delete_brain_run("milvus_index")
    
  • En savoir plus