Guide étape par étape des intégrations d'images et de la recherche de similarité visuelle

Découvrez comment créer une puissante API de recherche de similarité d'images avec FastAPI et FAISS. Ce guide vous explique comment configurer FastAPI pour gérer les demandes et utiliser FAISS pour comparer les intégrations d'images afin de trouver des images similaires. Avec des explications de code claires étape par étape, ce didacticiel rend la création d'une application de recherche d'images robuste facile et accessible, même pour les débutants.

Guide étape par étape des intégrations d'images et de la recherche de similarité visuelle
TABLE DES MATIÈRES

Voulez-vous créer une application Web capable de trouver des images similaires à une photo donnée ?

Dans ce guide adapté aux débutants, vous apprendrez à créer étape par étape une API de recherche de similarité d'images à l'aide de FastAPI et FAISS.

Nous expliquerons chaque ligne du code Python fourni, de sorte que même si vous débutez dans la programmation, vous suivrez facilement.

Vous pouvez regarder le tutoriel complet sur notre chaîne YouTube par notre défenseur des développeurs, Krishna Kompalli, pour en savoir plus :

Étape 1 : Configuration de votre environnement

Tout d'abord, installez les bibliothèques Python requises :

pip install fastapi uvicorn faiss-cpu numpy requests python-dotenv

  • fastapi: Un framework moderne pour créer rapidement des API.
  • luvicorne: un serveur Web pour exécuter votre application FastAPI.
  • processeur faiss: bibliothèque pour une recherche rapide de similarités.
  • engourdi: bibliothèque d'opérations numériques.
  • demandes: pour effectuer des requêtes HTTP.

python-dot: Chargez les variables d'environnement à partir du fichier .env.

Étape 2 : Comprendre les principaux composants

API rapide

FastAPI est un framework Web léger mais puissant qui vous permet de créer rapidement des API sécurisées et performantes avec un minimum d'effort, en fournissant une validation automatique des données et une documentation.

FAISS

FAISS (Facebook AI Similarity Search) est une bibliothèque avancée optimisée pour effectuer une recherche rapide dans de grands ensembles de données vectorielles, idéale pour trouver des éléments similaires tels que des images ou des intégrations de texte.

Étape 3 : Initialisation de l'API

Initialisez votre application FastAPI :

from fastapi import FastAPI

app = FastAPI(title="Image Embedding Search API")

  • FastAPI : importe le framework.
  • app : crée une instance de FastAPI pour définir des itinéraires.

Étape 4 : Configuration de la base de données vectorielles (FAISS)

Cette classe gère votre base de données vectorielles FAISS pour stocker les intégrations :

import faiss
import numpy as np

class FAISSVectorDB:
    def __init__(self, dimension=1024):
        self.index = faiss.IndexFlatL2(dimension)
        self.dimension = dimension
        self.embeddings = []

    def add_embedding(self, embedding):
        self.index.add(np.array([embedding], dtype=np.float32))
        self.embeddings.append(embedding)

    def search(self, query_embedding, top_k=5):
        distances, indices = self.index.search(np.array([query_embedding], dtype=np.float32), top_k)
        return indices, distances

  • __init__ : initialise l'index FAISS et spécifie les dimensions des intégrations.
  • add_embedding : ajoute des intégrations (vecteurs numériques) à l'index FAISS.
  • search : Trouve et renvoie les indices et les distances des intégrations les plus similaires.

Étape 5 : Téléchargez une image et générez des intégrations

Voici comment télécharger une image et générer des intégrations à l'aide d'Eden AI :

@app.post("/embeddings/upload")
async def upload_image(file: UploadFile = File(...)):
    # Read image file, send it to Eden AI, and obtain an embedding vector
    # Then store this embedding using FAISSVectorDB

  • @app .post : définit un point de terminaison POST pour le téléchargement d'images.
  • UploadFile : facilite la gestion des téléchargements de fichiers dans FastAPI, vous permettant de lire et de traiter efficacement les fichiers téléchargés

Étape 6 : Rechercher des images similaires

Implémentez la recherche de similarité pour les images téléchargées :

@app.post("/search/upload")
async def search_similar_images(file: UploadFile = File(...)):
    # Generate embedding for the uploaded query image
    # Perform similarity search using FAISSVectorDB and return results

  • Ce point de terminaison est similaire à la fonction de téléchargement mais spécialement conçu pour gérer les requêtes, générer des intégrations pour les images de requête et rechercher des correspondances dans la base de données.

Étape 7 : Explication détaillée du code

Chargement de variables d'environnement

from dotenv import load_dotenv
import os

load_dotenv()
EDEN_AI_API_KEY = os.getenv("EDEN_AI_API_KEY")

Charge en toute sécurité les détails de configuration sensibles, tels que votre clé d'API Eden AI, à partir d'un fichier .env masqué, en les gardant hors de votre code source principal.

Faire appel à Eden AI pour générer des intégrations

import requests

response = requests.post(
    "https://api.edenai.run/v2/image/embeddings",
    headers={"authorization": f"Bearer {EDEN_AI_API_KEY}"},
    files={"file": (file.filename, await file.read())}
)

  • Envoie votre image au service d'Eden AI pour l'intégrer.
  • Utilise votre clé API pour authentifier la demande en toute sécurité.

Extraire des intégrations de la réponse d'Eden AI

embedding = response.json()["provider_name"]["embedding"]

  • Analyse la réponse JSON reçue d'Eden AI et récupère le vecteur d'intégration fourni par le service.

Ajouter l'intégration au FAISS

vector_db.add_embedding(embedding)

  • Stocke le vecteur d'intégration extrait dans la base de données FAISS, le rendant disponible pour les recherches de similarité.

Effectuer une recherche de similarité

indices, distances = vector_db.search(query_embedding)

  • Effectue une recherche de similarité dans votre base de données FAISS à l'aide de l'intégration de requêtes, identifiant rapidement les intégrations stockées les plus similaires.

Étape 8 : Déployez votre API

Exécutez votre application FastAPI :

uvicorn main:app --host 0.0.0.0 --port 8000

  • uvicorn : lance votre application FastAPI sur un serveur local, la rendant accessible via le port spécifié (8000).

Conclusion

Félicitations ! Vous avez créé avec succès une API de recherche de similarité d'images à l'aide de FastAPI, FAISS et Eden AI.

Vous avez appris à gérer les téléchargements d'images, à générer des intégrations et à rechercher efficacement des images similaires.

En comprenant ces concepts fondamentaux, vous pouvez désormais étendre cette API de base à des systèmes plus complexes, l'intégrer à des applications réelles et explorer des fonctionnalités supplémentaires telles que les interfaces utilisateur, la catégorisation automatisée et les fonctionnalités de recherche améliorées. Continuez à expérimenter et à pratiquer pour renforcer encore vos compétences en matière de développement !

Start Your AI Journey Today

  • Access 100+ AI APIs in a single platform.
  • Compare and deploy AI models effortlessly.
  • Pay-as-you-go with no upfront fees.
Start building FREE

Articles connexes

Essayez Eden AI gratuitement.

Vous pouvez commencer à créer dès maintenant. Si vous avez des questions, n'hésitez pas à discuter avec nous !

CommencezContactez le service commercial
X

Commencez votre parcours IA dès aujourd'hui!

Inscrivez-vous dès maintenant avec des crédits gratuits pour explorer plus de 100 API d'IA.
Obtenir mes crédits maintenant