Skip to content

Specyfikacja aplikacji: SAM Viewer z filtrowaniem podobnych obiektów (Python + Qt5 + YOLO + SAM2) #1

@folkien

Description

@folkien

🔹 1. Wymagania funkcjonalne

1.1. Wczytywanie danych:

  • Katalog ze zdjęciami (*.jpg, *.png)
  • Katalog z adnotacjami YOLO (*.txt, format YOLOv5: classId x_center y_center width height)

Za pomoca yaya_tools biblioteki.

1.2. Interfejs użytkownika (Qt5):

  • Wyświetlane zdjęcie z bounding boxami YOLO
  • Informacja: „Zdjęcie X z Y”
  • Strzałki lewo/prawo do przewijania zdjęć
  • Lista detekcji (classId, współrzędne)
  • Możliwość kliknięcia w detekcję → zamienia się w prompt do SAM

1.3. Prompt do SAM:

  • Po kliknięciu: maska SAM dla wybranej detekcji

  • Przyciski:

    • Znajdź podobne
    • Zastosuj threshold
    • Nazwij obiekty

1.4. Znajdź podobne:

  • Przetwarza wszystkie detekcje w tle (możliwie równolegle)
  • Tworzy embeddingi z wybranej maski oraz z reszty zbioru
  • Oblicza odległości (np. Cosine, Euclidean) i zapisuje score

1.5. Filtrowanie:

  • Slider threshold (0.0–1.0 lub %)
  • Tylko detekcje o similarity score > threshold
  • Nawigacja po zdjęciach z podobnymi obiektami

1.6. Nazwij obiekty:

  • Otwiera okno do nadania klasy każdemu obiektowi
  • Zapisuje nowy plik .txt z zupadetowanymi detekcjami YOLO

🔹 2. Techniczne komponenty

2.1. Główne biblioteki:

  • Qt5: PyQt5
  • OpenCV: do rysowania boxów i obsługi obrazów
  • SAM2: do wyciągania maski + embeddingu
  • NumPy / Faiss: do obliczeń podobieństw

2.3. Proces znajdowania podobnych:

  • Wstępne wyciągnięcie cech (np. SAM(image, mask) → embedding)
  • Dla każdej detekcji przechowywany jest classId, bbox, embedding, image_id
  • Porównanie embeddingu referencyjnego do pozostałych
  • Sortowanie wyników wg score
  • Możliwość cacheowania embeddingów na dysku (.npy, .json)

🔹 3. Dodatkowe funkcje przyszłościowe

  • Eksport listy znalezionych podobnych obiektów (*.csv, *.json)
  • Opcja grupowania wizualnego (np. PCA/UMAP dla poglądu embeddingów)

🔹 4. Scenariusz użycia

  1. Użytkownik uruchamia aplikację i wybiera katalog ze zdjęciami i YOLO-annotacjami.
  2. W GUI przegląda zdjęcia, klika na bbox detekcji która staje się promptem dla SAM
  3. Naciska „Znajdź podobne” → w tle uruchamiany jest proces przetwarzania całego zbioru.
  4. Po zakończeniu użytkownik może filtrować zdjęcia, które zawierają podobne cechy (powyżej progu).
  5. Na każdym filtrowanym zdjęciu może zmienić ClassID dowolnego obiektu

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions