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
- Tryb A: Wymaga agregacji (aggregation terms) na polu przechowującym klasy obiektów, aby policzyć ich globalną częstotliwość.
- Tryb B: Sortowanie wyników po polu
object_count (lub analogicznym przechowującym liczbę instancji danej klasy w dokumencie/scenie).
- Tryb C: Zastosowanie
range query (dla > i <) lub term query (dla równości) na polu liczbowym obiektów.
Kryteria Akceptacji
- Wpisanie
/obiekt zwraca listę wszystkich dostępnych klas obiektów posortowaną od najpopularniejszych.
- 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.
- Wpisanie
/obiekt dog >3 zwraca wyłącznie sceny, w których wykryto więcej niż 3 psy.
- Wpisanie
/obiekt cup <2 zwraca sceny z 0 lub 1 kubkiem (o ile obiekt został wykryty).
- Wpisanie
/obiekt person 5 zwraca sceny, w których jest dokładnie 5 osób.
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,/objKomenda ma działać w trzech trybach w zależności od przekazanych argumentów.
Tryb A: Lista obiektów (brak argumentów)
Tryb B: Wyszukiwanie proste (1 argument)
dog,car)./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ą.
>5-> Operator:GT, Value:5<3-> Operator:LT, Value:32-> Operator:EQ, Value:2Zapytania Elasticsearch
object_count(lub analogicznym przechowującym liczbę instancji danej klasy w dokumencie/scenie).range query(dla>i<) lubterm query(dla równości) na polu liczbowym obiektów.Kryteria Akceptacji
/obiektzwraca listę wszystkich dostępnych klas obiektów posortowaną od najpopularniejszych./obiekt carzwraca listę scen z samochodami, gdzie sceny z korkiem ulicznym (dużo aut) są wyświetlane wyżej niż sceny z pojedynczym autem./obiekt dog >3zwraca wyłącznie sceny, w których wykryto więcej niż 3 psy./obiekt cup <2zwraca sceny z 0 lub 1 kubkiem (o ile obiekt został wykryty)./obiekt person 5zwraca sceny, w których jest dokładnie 5 osób.