Official Blog
Jak Synology Photos grupuje podobne zdjęcia i pozwala algorytmom uporządkować Twoją kolekcję?
Team Synology Polska
4 May, 2026

Jak Synology Photos grupuje podobne zdjęcia i pozwala algorytmom uporządkować Twoją kolekcję?

Aby uchwycić najpiękniejszy uśmiech dziecka, potrafisz nacisnąć spust migawki dziesięć razy z rzędu. Aby uzyskać idealny odcień zachodu słońca, zapisujesz kilka wersji tego samego ujęcia z różnymi filtrami. Współczesna fotografia daje nam możliwość zatrzymywania pięknych chwil, ale jednocześnie sprawia, że nasze albumy szybko stają się przeładowane i trudne do uporządkowania.

Ten scenariusz zna każdy z nas. Ale pojawia się ciekawe pytanie. Kiedy mówimy o porządkowaniu podobnych zdjęć, co tak naprawdę oznacza słowo podobne?

Czy chodzi o serię zdjęć zachodu słońca z tej samej sceny, gdzie zmienia się jedynie położenie słońca? Czy o identyczny kadr, w którym raz pojawia się osoba, a raz jej nie ma? A może o wiele wersji tego samego zdjęcia, które zostało przycięte lub zmodyfikowane w różnych narzędziach? W zależności od kontekstu, kryteria oceny mogą się znacząco różnić.

Jak więc stały algorytm ma poradzić sobie z tak elastyczną, a momentami subiektywną ludzką logiką porządkowania?

W tym artykule zajrzymy za kulisy i pokażemy, jakie kompromisy między technologią a doświadczeniem użytkownika pojawiły się podczas tworzenia funkcji „Stack Similar Items” w Synology Photos.

Wyzwanie 1: jak ustawić algorytmiczny próg „podobieństwa”?

Na początku prac nad funkcją naszym pierwszym, dość filozoficznym pytaniem było: jak powinna wyglądać relacja między „podobieństwem” rozumianym przez algorytm a tym, jak postrzega je człowiek?

Szybko okazało się, że ludzka ocena jest wyjątkowo elastyczna. Porządkując zdjęcia z urodzin dziecka, możemy uznać kilka następujących po sobie ujęć z różnymi mimikami za „podobne”. Ale gdy wybieramy fotografię krajobrazu do druku, nawet niewielka zmiana w układzie chmur może sprawić, że potraktujemy je jako dwa zupełnie odrębne kadry.

Algorytm nie jest w stanie w pełni odwzorować tak złożonego sposobu myślenia. Potrzebuje spójnego, obiektywnego punktu odniesienia. Dlatego zanim nauczyliśmy go „rozumienia” podobnych zdjęć, musieliśmy najpierw zdefiniować, co w ogóle oznacza „uchwycenie istoty obrazu”.

W tym celu wykorzystaliśmy algorytm PDQ hash. Jego działanie można porównać do bardzo sprytnego szkicu. Pomija on nieistotne różnice, takie jak format pliku (PNG czy JPG), poziom rozdzielczości czy drobne zakłócenia cyfrowe. Zamiast tego koncentruje się na konturach, układzie linii oraz rozkładzie światła i cienia, tworząc swoisty „odcisk” każdego zdjęcia.

Można to opisać jako pracę artysty, który tworzy uproszczony szkic obrazu w kilku krokach:

Uchwycenie sedna

Najpierw zdjęcie kolorowe zostaje przekształcone do skali szarości. Tak jak artysta odkłada kolory na bok, skupiając się na kształtach, świetle i cieniu. Dzięki temu analiza opiera się na tym, co dla ludzkiego oka jest najbardziej znaczące.

Ujednolicenie perspektywy

Niezależnie od tego, czy zdjęcie pochodzi ze smartfona, czy aparatu fotograficznego, wszystkie obrazy są skalowane do tego samego, niewielkiego rozmiaru. To trochę jak przeniesienie różnych rysunków na jedną kartkę, żeby porównywać je w tych samych warunkach. Kluczowe było znalezienie równowagi. Zbyt mała rozdzielczość przyspieszałaby obliczenia, ale gubiła istotne detale, prowadząc do błędnych dopasowań. Dlatego wybraliśmy kompromis, który łączy wydajność i dokładność.

Analiza struktury

W kolejnym kroku wykorzystywana jest transformata kosinusowa (DCT), która rozkłada obraz na podstawowe wzorce wizualne. Można to porównać do analizy twarzy poprzez jej najprostsze elementy geometryczne i ich wzajemne relacje. To właśnie tutaj algorytm „wyciąga” kluczowe cechy obrazu.

Tworzenie „odcisku” i ocena jakości

Na końcu powstaje 256-bitowy zapis binarny, który pełni rolę unikalnego odcisku zdjęcia. Co ciekawe, PDQ ocenia także jakość obrazu, czyli jego wyrazistość. To trochę jak dopisek artysty: „ten szkic powstał na podstawie nieostrego zdjęcia”. Ta informacja pomaga później lepiej interpretować wyniki porównań.

Gdy mamy już taki „odcisk”, pojawia się kolejne pytanie: jak bardzo dwa takie zapisy muszą być do siebie podobne, żeby uznać je za jedną grupę?

Do tego używamy tzw. odległości Hamminga. Można ją sobie wyobrazić jako porównanie dwóch 256-elementowych list, gdzie sprawdzamy, ile pozycji się różni. To właśnie liczba tych różnic mówi nam, jak bardzo zdjęcia są do siebie podobne.

W praktyce:

  • niska wartość oznacza niemal identyczne zdjęcia, często te same ujęcia
  • umiarkowana różnica wskazuje na drobne zmiany, takie jak kadrowanie czy jasność
  • wysoka wartość sugeruje już wyraźnie różne obrazy, mimo pewnych wspólnych elementów

Zbyt restrykcyjny próg powodowałby, że nawet minimalne zmiany traktowane byłyby jako osobne zdjęcia. Z kolei zbyt luźny prowadziłby do łączenia ujęć, które tylko pozornie są podobne.

Po wielu testach przyjęliśmy zasadę: lepiej połączyć więcej niż przegapić.

Naszym celem jest to, aby algorytm zwracał grupy zdjęć, które z dużym prawdopodobieństwem użytkownik uzna za powiązane. Nawet jeśli czasem ktoś powie „wolałbym to rozdzielić”, znacznie rzadziej pojawi się pytanie „dlaczego te zdjęcia w ogóle są razem?”.

Logika tej decyzji jest prosta. Łatwiej jest rozdzielić kilka błędnie połączonych zdjęć niż ręcznie przeszukiwać całą bibliotekę w poszukiwaniu powiązanych ujęć.

Dlatego użytkownik otrzymuje jedynie opcje rozłączenia lub usunięcia zdjęcia z grupy, ale nie może samodzielnie tworzyć grup. Algorytm pełni rolę asystenta, który wykonuje większość żmudnej pracy, zostawiając użytkownikowi ostatnie słowo tam, gdzie liczy się osobista decyzja.

Wyzwanie 2: jak poradzić sobie z porównywaniem ogromnych zbiorów danych?

Gdy udało się już zdefiniować „podobieństwo”, pojawiło się kolejne, czysto inżynierskie wyzwanie: jak sprawnie porównywać zdjęcia w bibliotece liczącej miliony plików, nie spowalniając przy tym całego NAS-a?

Gdyby każde nowe zdjęcie było porównywane ze wszystkimi istniejącymi w bazie przy użyciu „wizualnych odcisków”, system bardzo szybko przestałby działać wydajnie. Dlatego zaprojektowaliśmy wielopoziomowy mechanizm podziału zadań i optymalizacji.

Na początek ograniczyliśmy „pole widzenia” algorytmu. Zauważyliśmy, że większość podobnych zdjęć, takich jak serie zdjęć seryjnych czy różne wersje edycji, powstaje w krótkim odstępie czasu. W związku z tym przyjęliśmy zasadę, że zarówno nowe zdjęcie, jak i zadania porządkowania w tle, są porównywane tylko z fotografiami wykonanymi w oknie czasowym 24 godzin, czyli plus minus 12 godzin.

Ten prosty zabieg pozwala radykalnie zawęzić zakres porównań i od początku eliminuje ogromną liczbę zbędnych operacji.

Następnie wykorzystaliśmy pełen potencjał całego ekosystemu. W aplikacji mobilnej, podczas przesyłania zdjęć z telefonu, obliczenia PDQ są wykonywane lokalnie, jeszcze przed wysłaniem pliku na NAS. Oznacza to, że najbardziej wymagający etap przetwarzania odbywa się na urządzeniu użytkownika, a serwer NAS zajmuje się już tylko odbiorem danych i porównywaniem odcisków w bazie.

Na końcu zadbaliśmy o integrację z systemowym harmonogramem DSM. Dzięki temu zadania porównywania i grupowania zdjęć nie działają w oderwaniu od reszty systemu, lecz są częścią wspólnego mechanizmu zarządzania zasobami.

Takie podejście pozwala uniknąć sytuacji, w której operacje fotograficzne regularnie wybudzają dyski z uśpienia, co ma bezpośredni wpływ na energooszczędność całego NAS-a.

Dodatkowo system współdzieli zasoby z innymi procesami, takimi jak harmonogramy pobierania w Download Station czy zadania kopii zapasowych w Hyper Backup. W praktyce oznacza to, że porządkowanie zdjęć odbywa się wtedy, gdy system ma na to najlepsze warunki, bez konkurowania o zasoby z innymi operacjami w tle.

Efekt jest prosty: większa stabilność, przewidywalne działanie i brak sytuacji, w której kilka ciężkich zadań próbuje jednocześnie „przepchnąć się przez wąskie gardło” systemu.

Podsumowanie: inteligentne wsparcie, decyzja należy do Ciebie

Funkcja „Stack Similar Photos” w Synology Photos została zbudowana wokół jednej, kluczowej idei: technologia ma być sprawnym asystentem, a nie zastępować użytkownika w podejmowaniu decyzji.

Włożyliśmy dużo pracy w zwiększenie precyzji algorytmu, usprawnienie porównań na dużą skalę oraz zapewnienie, że cały proces nie obciąża wydajności NAS-a. Równocześnie oddaliśmy użytkownikom pełną swobodę działania — od wyboru zdjęcia wiodącego w grupie, przez szybkie rozłączanie stosów, aż po możliwość usunięcia dowolnego zdjęcia z utworzonej grupy.

Wierzymy, że najlepsza automatyzacja polega na tym, że wykonuje żmudną pracę wstępną, a potem oddaje użytkownikowi to, co w organizacji najważniejsze — kontrolę i końcową decyzję.

Mamy nadzieję, że przeglądając uporządkowaną oś czasu swoich zdjęć, poczujesz właśnie tę „odpowiednią precyzję działania”, którą starannie zaprojektowaliśmy.