Retour à l'accueil

YOLOE : détection d'objets sans fine-tuning

YOLOE étend YOLO avec des capacités de détection zero-shot grâce à des prompts textuels et visuels. RepRTA intègre les embeddings sans perte de vitesse. Convient aux tâches dynamiques comme l'emballage et le contrôle d'entrepôt.

YOLOE : détecteur de tout sans datasets
Advertisement 728x90

YOLOE : Un détecteur d'objets universel avec des prompts textuels et visuels

YOLOE permet de détecter des objets arbitraires dans des images en utilisant des descriptions textuelles ou des exemples visuels au lieu de classes fixes. L'architecture de base et le PAN sont empruntés au YOLO standard, mais la tête de détection compare les embeddings d'objets avec des vecteurs provenant d'un encodeur de texte. Le module RepRTA affine les embeddings textuels et les intègre au modèle par reparamétrisation, maintenant la vitesse d'inférence sans surcoût.

Le modèle est initialisé à partir de poids pré-entraînés, avec les classes définies dynamiquement :

from ultralytics import YOLOE

model = YOLOE("yoloe-26m-seg.pt")
model.set_classes(["personne", "bus"])
results = model.predict("chemin/vers/image.jpg")

Architecture et modules clés

Le YOLO standard est limité aux classes du jeu de données d'entraînement. Dans YOLOE, les embeddings de classe sont générés par un encodeur de texte avant l'inférence et intégrés dans les poids. Cela élimine le besoin de collecte de données, d'étiquetage et d'itérations d'entraînement.

Google AdInline article slot

De plus, les prompts visuels sont pris en charge via SAVPE (Semantic-Activated Visual Prompt Encoder). L'utilisateur fournit une image de référence avec des boîtes englobantes, et le modèle recherche des objets similaires :

import numpy as np
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-26m-seg.pt")
visual_prompts = dict(
    bboxes=np.array([
        [221.52, 405.8, 344.98, 857.54],  # Personne
        [120, 425, 160, 445],              # Bus
    ]),
    cls=np.array([0, 1]),
)
results = model.predict(
    "ultralytics/assets/bus.jpg",
    refer_image="reference.jpg",
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)
results[0].show()

Le mode sans prompt utilise un dictionnaire intégré de plus de 1200 catégories :

from ultralytics import YOLOE

model = YOLOE("yoloe-26m-seg-pf.pt")
results = model.predict("chemin/vers/image.jpg")
results[0].show()

Scénarios d'application

YOLOE est efficace pour les tâches avec des objets clairement descriptibles. Voici des cas d'utilisation typiques :

Google AdInline article slot
  • Contrôle d'étiquetage : Détection de codes QR, d'étiquettes endommagées ou de l'orientation des emballages sur un tapis roulant.
  • Surveillance de zone : Recherche d'objets étrangers ou d'outils manquants.
  • Inventaire d'entrepôt : Comptage et classification de produits changeants.
  • Inspection visuelle : Rayures, éclats ou déformations sur les surfaces.

Dans ces scénarios, les prompts remplacent les jeux de données, accélérant le développement.

Limites et choix d'approche

Le modèle est moins performant pour les tâches avec des classes visuellement similaires, des objets spécifiques ou des exigences de précision >95%. Distinguer des détails fins ou des objets non vus nécessite un fine-tuning.

Stratégie : Commencer avec YOLOE pour une évaluation de base ; si insuffisant, affiner les encodeurs ou passer à un entraînement classique.

Google AdInline article slot

Points clés

  • Classes dynamiques : Prompts textuels ou visuels au lieu d'étiquettes fixes.
  • Conservation de la vitesse : RepRTA reparamétrise les embeddings, éliminant la surcharge d'exécution.
  • Flexibilité : SAVPE pour les exemples visuels, dictionnaire intégré pour le zéro-prompt.
  • Pratique : Adapté aux tâches industrielles avec des objets changeants.
  • Limites : Pas pour la haute précision sur des données exotiques.

— Editorial Team

Advertisement 728x90

Lire ensuite