Powrót do strony głównej

YOLOE: detekcja obiektów bez dostrojenia

YOLOE rozszerza YOLO możliwościami zero-shot detekcji poprzez tekstowe i wizualne prompty. RepRTA integruje embeddingi bez utraty szybkości. Nadaje się do dynamicznych zadań, takich jak kontrola opakowań i magazynów.

YOLOE: detektor wszystkiego bez datasetów
Advertisement 728x90

YOLOE: uniwersalny detektor obiektów z promptami tekstowymi i wizualnymi

YOLOE umożliwia wykrywanie dowolnych obiektów na obrazach, wykorzystując opisy tekstowe lub przykłady wizualne zamiast stałych klas. Backbone i PAN są zapożyczone ze standardowych YOLO, ale głowa detektora porównuje embeddingi obiektów z wektorami z kodera tekstowego. Moduł RepRTA doprecyzowuje embeddingi tekstowe i integruje je z modelem poprzez reparametryzację, zachowując prędkość wnioskowania bez narzutu.

Model jest inicjalizowany z wstępnie wytrenowanych wag, klasy są określane dynamicznie:

from ultralytics import YOLOE

model = YOLOE("yoloe-26m-seg.pt")
model.set_classes(["person", "bus"])
results = model.predict("path/to/image.jpg")

Architektura i kluczowe moduły

Standardowy YOLO ogranicza się do klas z zestawu danych treningowych. W YOLOE embeddingi klas są generowane przez koder tekstowy przed wnioskowaniem i wbudowywane w wagi. Pozwala to uniknąć zbierania zbiorów danych, anotacji i iteracji treningowych.

Google AdInline article slot

Dodatkowo obsługiwane są prompty wizualne poprzez SAVPE (Semantic-Activated Visual Prompt Encoder). Użytkownik dostarcza obraz referencyjny z bounding boxes, model szuka podobnych obiektów:

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],  # Osoba
        [120, 425, 160, 445],              # Autobus
    ]),
    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()

Tryb bez promptów wykorzystuje wbudowany słownik z ponad 1200 kategoriami:

from ultralytics import YOLOE

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

Scenariusze zastosowań

YOLOE jest skuteczny w zadaniach z dobrze opisywalnymi obiektami. Oto typowe przypadki użycia:

Google AdInline article slot
  • Kontrola etykietowania: wykrywanie kodów QR, uszkodzonych etykiet, orientacji opakowań na linii produkcyjnej.
  • Monitorowanie stref: wyszukiwanie obcych przedmiotów lub brak narzędzi.
  • Inwentaryzacja magazynowa: liczenie i klasyfikacja zmieniającego się asortymentu.
  • Kontrola wizualna: rysy, odpryski, odkształcenia na powierzchniach.

W tych scenariuszach prompty zastępują zbiory danych, przyspieszając rozwój.

Ograniczenia i wybór podejścia

Model ustępuje w zadaniach z wizualnie podobnymi klasami, specyficznymi obiektami lub wymaganiami dotyczącymi dokładności >95%. Różnice w subtelnych detalach lub nieznanych wcześniej obiektach wymagają dalszego treningu.

Strategia: uruchomić YOLOE do podstawowej oceny, w przypadku niedostatków — udoskonalić kodery lub przejść do klasycznego treningu.

Google AdInline article slot

Co jest ważne

  • Klasy dynamiczne: prompty tekstowe lub wizualne zamiast stałych etykiet.
  • Zachowanie prędkości: RepRTA reparametryzuje embeddingi, eliminując narzut czasu wykonania.
  • Elastyczność: SAVPE dla przykładów wizualnych, wbudowany słownik dla trybu zero-prompt.
  • Praktyczność: odpowiedni dla zadań przemysłowych ze zmieniającymi się obiektami.
  • Ograniczenia: nie dla high-precision na egzotycznych danych.

— Editorial Team

Advertisement 728x90

Czytaj dalej