Skip to content

System wyszukiwania obiektów (/obiekt) #130

@dam2452

Description

@dam2452

Zadanie polega na dodaniu komendy umożliwiającej przeszukiwanie bazy pod kątem obiektów rozpoznanych w materiale wideo (np. pies, samochód, kubek). Funkcjonalność jest analogiczna do systemu wyszukiwania postaci, jednak kluczowym parametrem sortowania i filtrowania jest tutaj liczba wystąpień danego obiektu w scenie.

Specyfikacja Funkcjonalna

Komenda /obiekt

Aliasy: /object, /obj

Komenda ma działać w trzech trybach w zależności od przekazanych argumentów.

Tryb A: Lista obiektów (brak argumentów)

  • Działanie: Wyświetla listę wszystkich klas obiektów wykrytych w zaindeksowanym materiale.
  • Sortowanie: Wyniki mają być posortowane według popularności (całkowita liczba wystąpień obiektu w całej bazie), od najczęstszych do najrzadszych.
  • Format: Lista tekstowa z nazwą obiektu i (opcjonalnie) liczbą zliczonych wystąpień.

Tryb B: Wyszukiwanie proste (1 argument)

  • Argument: Nazwa obiektu (np. dog, car).
  • Działanie: Zwraca listę scen, w których wykryto dany obiekt.
  • Sortowanie: Wyniki muszą być posortowane malejąco według liczby obiektów w kadrze.
  • Przykład: Dla zapytania /obj dog, na szczycie listy mają znaleźć się sceny, w których jest stado psów, a na dole sceny z jednym psem.

Tryb C: Wyszukiwanie z filtrem ilościowym (2 argumenty)

  • Argumenty: Nazwa obiektu + Operator liczbowy.

  • Działanie: Zwraca sceny z danym obiektem, filtrując wyniki na podstawie liczby wystąpień tego obiektu w scenie.

  • Obsługiwane operatory:

  • Równość (np. 4): Szuka scen, gdzie jest dokładnie 4 obiektów tego typu.

  • Większe niż (np. >4): Szuka scen, gdzie jest więcej niż 4 obiekty.

  • Mniejsze niż (np. <4): Szuka scen, gdzie jest mniej niż 4 obiekty.

  • Parsowanie: Drugi argument musi być parsowany pod kątem znaków > oraz <. Brak znaku oznacza równość.

Szczegóły Techniczne

Parsowanie argumentów

Należy zaimplementować prosty parser dla drugiego argumentu, który wyodrębni operator i wartość liczbową.

  • Input: >5 -> Operator: GT, Value: 5
  • Input: <3 -> Operator: LT, Value: 3
  • Input: 2 -> Operator: EQ, Value: 2

Zapytania Elasticsearch

  1. Tryb A: Wymaga agregacji (aggregation terms) na polu przechowującym klasy obiektów, aby policzyć ich globalną częstotliwość.
  2. Tryb B: Sortowanie wyników po polu object_count (lub analogicznym przechowującym liczbę instancji danej klasy w dokumencie/scenie).
  3. Tryb C: Zastosowanie range query (dla > i <) lub term query (dla równości) na polu liczbowym obiektów.

Kryteria Akceptacji

  1. Wpisanie /obiekt zwraca listę wszystkich dostępnych klas obiektów posortowaną od najpopularniejszych.
  2. Wpisanie /obiekt car zwraca listę scen z samochodami, gdzie sceny z korkiem ulicznym (dużo aut) są wyświetlane wyżej niż sceny z pojedynczym autem.
  3. Wpisanie /obiekt dog >3 zwraca wyłącznie sceny, w których wykryto więcej niż 3 psy.
  4. Wpisanie /obiekt cup <2 zwraca sceny z 0 lub 1 kubkiem (o ile obiekt został wykryty).
  5. Wpisanie /obiekt person 5 zwraca sceny, w których jest dokładnie 5 osób.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions