🔹 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:
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
- Użytkownik uruchamia aplikację i wybiera katalog ze zdjęciami i YOLO-annotacjami.
- W GUI przegląda zdjęcia, klika na bbox detekcji która staje się promptem dla SAM
- Naciska „Znajdź podobne” → w tle uruchamiany jest proces przetwarzania całego zbioru.
- Po zakończeniu użytkownik może filtrować zdjęcia, które zawierają podobne cechy (powyżej progu).
- Na każdym filtrowanym zdjęciu może zmienić ClassID dowolnego obiektu
🔹 1. Wymagania funkcjonalne
1.1. Wczytywanie danych:
*.jpg,*.png)*.txt, format YOLOv5:classId x_center y_center width height)Za pomoca yaya_tools biblioteki.
1.2. Interfejs użytkownika (Qt5):
classId, współrzędne)1.3. Prompt do SAM:
Po kliknięciu: maska SAM dla wybranej detekcji
Przyciski:
Znajdź podobneZastosuj thresholdNazwij obiekty1.4. Znajdź podobne:
1.5. Filtrowanie:
1.6. Nazwij obiekty:
🔹 2. Techniczne komponenty
2.1. Główne biblioteki:
PyQt52.3. Proces znajdowania podobnych:
SAM(image, mask) → embedding)classId,bbox,embedding,image_id.npy,.json)🔹 3. Dodatkowe funkcje przyszłościowe
*.csv,*.json)🔹 4. Scenariusz użycia