PhotoPrism: Bilddatenbank mit künstlicher Intelligenz

Aus LinuxUser 07/2022

PhotoPrism: Bilddatenbank mit künstlicher Intelligenz

© Santima Suksawat / 123RF.com

Private Fotowand

Die clevere Fotoverwaltung PhotoPrism verbindet eine Datenbank mit künstlicher Intelligenz.

Die Kameras in unseren Smartphones sind in den letzten Jahren kontinuierlich besser geworden, sodass bei vielen Nutzern die Spiegelreflexkamera immer öfter zu Hause bleibt. Schnappschüsse auf Ausflügen und Reisen sowie im Alltag landen auf dem Smartphone, wo sich schnell Tausende von Fotos ansammeln. Das bedeutet gemeinhin, dass sie damit automatisch auf den Servern von Diensten wie Google Photos oder Apples iCloud landen.

In Sachen Datenschutz und Wahrung der Privatsphäre ist das die schlechteste Möglichkeit, bildgewordene Erinnerungen zu bewahren und mit anderen zu teilen. Zudem schließt die Verwendung von Google Photos beispielsweise Geräte mit alternativen Android-Varianten ohne Google-Dienste oder Linux-Phones von vorneherein aus.

PhotoPrism

Eine von vielen Lösungen, die diese Probleme umgehen will, ist die noch recht junge, aber vielversprechende Anwendung PhotoPrism zum Betrachten, Organisieren und Teilen der eigenen Fotosammlung unter Linux, MacOS und Windows [1]. Die Software der Berliner Firma PhotoPrism UG steht als selbst gehostete Anwendung ganz unter Ihrer eigenen Kontrolle und erlaubt, Ihre Fotosammlung auf verschiedenen Geräten zu durchsuchen, zu organisieren und gezielt zu teilen. Die quelloffene Software steht unter der Lizenz AGPL 3.0 und wird auf Github entwickelt [2].

Mithilfe moderner Technologien verschlagwortet und geolokalisiert das Programm Bilder automatisch, ohne Ihren Arbeitsablauf zu beeinträchtigen. Beim Indexieren der Sammlung extrahiert PhotoPrism die Metadaten und bereitet sie auf. Für den Chrome-Browser gibt es zudem mit dem Geolocation Plugin eine passende Erweiterung. Um einen ersten Eindruck von PhotoPrism zu erlangen, sehen Sie sich am besten die Demo [3] auf der Webseite an (Abbildung 1).

Abbildung 1: Mit der Demo-Anwendung auf der Webseite des Projekts können Sie herausfinden, ob PhotoPrism Ihren Vorstellungen entspricht.

Abbildung 1: Mit der Demo-Anwendung auf der Webseite des Projekts können Sie herausfinden, ob PhotoPrism Ihren Vorstellungen entspricht.

Im Docker-Container

Sie richten PhotoPrism auf einem ausgedienten Rechner, einem Server im Netz, auf Ihrem NAS oder einem Raspberry Pi relativ einfach mithilfe von Docker und Docker-Compose ein. Wir setzten für unseren Test PhotoPrism in einer virtuellen Maschine auf einem Proxmox-Server unter Ubuntu 20.04 auf (Abbildung 2). Anstelle von Docker kann auch Podman zum Einsatz kommen [4].

Abbildung 2: Die Docker-Compose-Datei von PhotoPrism unter Ubuntu 20.04 in einer von Proxmox erstellten virtuellen Maschine.

Abbildung 2: Die Docker-Compose-Datei von PhotoPrism unter Ubuntu 20.04 in einer von Proxmox erstellten virtuellen Maschine.

Die Entwickler empfehlen als Mindestvoraussetzung einen Rechner mit zwei CPU-Kernen und 3 GByte Arbeitsspeicher. Darüber hinaus sollte der Umfang des Arbeitsspeichers mit der Anzahl an Rechenkernen korrelieren. In jedem Fall sollten Sie unbedingt 4 GByte Swap-Speicher einrichten. Dimensionieren Sie die Partition für PhotoPrism ausreichend und bedenken Sie dabei, dass beim Indexieren der Bilder zusätzlich bis zu sechs Thumbnails entstehen.

Besonders einfach gelingt der Einstieg mit der auf Debian basierenden NAS-Software OpenMediaVault in Version 6, da diese über ein eigenes Plugin für PhotoPrism verfügt, das die Anwendung mithilfe von Podman automatisch aufsetzt [5].

Haben Sie Ihre Fotosammlung in PhotoPrism erfasst, greifen Sie auf Geräten wie Desktop-Computern, Notebooks, Tablets oder Smartphones über einer eingängigen Oberfläche auf Ihren Fotobestand zu. Dazu dient die Progressive Web App von PhotoPrism. Progressive Web Apps (PWAs) lassen sich als Symbiose aus einer responsiven Webseite und einer App beschreiben [6].

KI per TensorFlow

Im Hintergrund nimmt PhotoPrism automatisch eine Klassifizierung der hochgeladenen Bilder (und Videos) mit verschiedenen Etiketten auf der Grundlage von Googles KI-Framework TensorFlow [7] vor. Der Indexer erkennt zudem Farben, Gesichter, Qualität, Standort (wenn gewünscht) und viele andere Eigenschaften eines Bilds. Er gruppiert als identisch erkannte Gesichter und weist Bilder, die nicht für die Öffentlichkeit bestimmt sind, weil sie etwa Nacktheit beinhalten, gesondert aus.

PhotoPrism unterstützt viele Dateiformate, darunter JPEG, PNG, GIF, BMP, HEIF, HEIC, MP4, MOV, WebP und WebM. Zudem beherrscht es die Konvertierung aus dem RAW-Dateiformat. Die eingelesenen Bilder lassen sich in verschiedenen Ansichten betrachten, unter anderem in Kategorien, einer Kalenderansicht (Abbildung 3), selbst erstellten Alben (Abbildung 4), einer Ansicht für Favoriten und einer für Personen. Hinzu kommt eine Weltkarte (Abbildung 5), die zeigt, wie viele Bilder an welchem Ort aufgenommen wurden (Abbildung 6).

Abbildung 3: Die Kalenderansicht erlaubt einen schnellen Überblick über die pro Monat aufgenommenen Bilder.

Abbildung 3: Die Kalenderansicht erlaubt einen schnellen Überblick über die pro Monat aufgenommenen Bilder.


Abbildung 4: Beim Hochladen über den Browser können Sie im entsprechenden Dialog Alben anlegen und benennen, die die Bilder aufnehmen sollen.

Abbildung 4: Beim Hochladen über den Browser können Sie im entsprechenden Dialog Alben anlegen und benennen, die die Bilder aufnehmen sollen.


Abbildung 5: Die Kartenansicht zeigt, auf welchen Kontinenten und Ländern die Aufnahmen in der Datenbank gemacht wurden.

Abbildung 5: Die Kartenansicht zeigt, auf welchen Kontinenten und Ländern die Aufnahmen in der Datenbank gemacht wurden.


Abbildung 6: In die Kartenansicht kann man beliebig hineinzoomen, um die Aufnahmeorte genauer zu bestimmen.

Abbildung 6: In die Kartenansicht kann man beliebig hineinzoomen, um die Aufnahmeorte genauer zu bestimmen.

Diese Magie passiert komplett im Hintergrund, Sie müssen in keiner Weise mit TensorFlow interagieren oder auch nur wissen, was das ist. Die einzige Konfigurationsmöglichkeit besteht darin, die KI-Funktion abzuschalten. Obwohl es sich bei künstlicher Intelligenz und Machine Learning um noch relativ junge Technologien handelt, erzielte die Implementierung in PhotoPrism bei unseren Tests überwiegend korrekte Ergebnisse (Abbildung 7).

Abbildung 7: Manchmal liegt die KI von PhotoPrism auch daneben, wie im rechten Bild der oberen Reihe, wo sie einen kleinen See als Giraffe erkennt.

Abbildung 7: Manchmal liegt die KI von PhotoPrism auch daneben, wie im rechten Bild der oberen Reihe, wo sie einen kleinen See als Giraffe erkennt.

Mit leistungsstarken Suchfiltern finden Sie ohne große Umstände bestimmte Fotos und Videos, wobei PhotoPrism Ihre Bilder automatisch anhand des Inhalts und Standorts klassifiziert. Viele weitere Bildeigenschaften lassen sich ebenfalls zur Suche heranziehen, wie Farben, Chroma und Qualität. So zeigt etwa die Eingabe “blume:rot” entsprechende Fundstücke.

Aufsetzen mit Docker

Am einfachsten setzen Sie die Anwendung über Docker und Docker-Compose auf. Gerade Letzteres nimmt Ihnen viel Arbeit ab, da es ein vorgefertigtes Rezept abarbeitet, das Sie zu diesem Zweck auf den entsprechenden Rechner kopieren. Falls Sie mit Docker noch nicht vertraut sind, lassen Sie sich dadurch nicht davon abhalten, Ihre Fotos unter eigener Regie zu verwalten und nach Ihren Vorstellungen zu teilen. Folgen Sie unserer Anleitung, können Sie spätestens nach einer Stunde bereits Bilder in Ihre PhotoPrism-Instanz übertragen.

Möchten Sie PhotoPrism später außerhalb Ihres heimischen Netzwerks verfügbar machen, führen Sie es immer hinter einem sicheren HTTPS-Reverse-Proxy wie Traefik oder Caddy aus. Ihre Dateien und Passwörter laufen sonst im Klartext über das Netz und können von jedermann abgefangen werden, einschließlich Providern, Hackern und Regierungen.

Docker-Compose

Wie Sie Docker und Docker-Compose in der jeweils aktuellen Version installieren, erfahren Sie im Internet an vielen Stellen [8] für Ihre jeweilige Distribution [9]. Wenn Sie abschließend nach Installation der beiden Anwendungen mittels docker-compose --version sichergestellt haben, dass Docker-Compose läuft, besuchen Sie zunächst die Github-Seite des PhotoPrism-Projekts. Wie Sie von dort die Docker-Compose-Datei bereitstellen, zeigt Listing 1.

Listing 1

Docker-Compose-Datei herunterladen

$ mkdir ~/photoprism
$ cd ~/photoprism
$ wget wget https://dl.photoprism.app/docker/docker-compose.yml

Ist das erledigt, gilt es, die Datei docker-compose.yml an einigen Stellen anzupassen. Für das Verständnis der Funktionsweise des Unterbaus von PhotoPrism hilft es, sich die gesamte Datei anzusehen, denn hier nehmen Sie die grundlegende Konfiguration vor. Sollten Sie Änderungen außer den hier beschriebenen eintragen, sichern Sie die Datei am besten im Original, um eventuelle Fehler später leichter ausbügeln zu können. Die Datei ist in der Auszeichnungssprache YAML verfasst, die schon bei kleinsten Patzern in der Formatierung kritisch reagiert.

Auf jeden Fall sollten Sie die Zeilen PHOTOPRISM_ADMIN_PASSWORD, MYSQL_ROOT_PASSWORD und MYSQL_PASSWORD mit einem neuen Passwort versehen. Dasselbe gilt für alle anderen Zeilen, die insecure als Passwort-Dummy aufweisen. Des Weiteren können Sie PHOTOPRISM_SITE_TITLE und PHOTOPRISM_SITE_CAPTION setzen, um Ihre Instanz der Anwendung etwas zu individualisieren.

Verzeichnisse einhängen

Da die App in einem Container läuft, müssen Sie die Verzeichnisse auf dem Host oder einem anderen lokalen oder entfernten Rechner einhängen, auf dem Ihre Bilder liegen. Das erledigen Sie im Abschnitt volumes der YAML-Datei. Dort passen Sie die Zeile /home/Benutzer/Pictures:/photoprism/originals an, indem Sie vor dem Doppelpunkt das Verzeichnis angeben, in dem Ihre Bilder liegen. Bitte beachten Sie, dass Sie bei diesen Zeilen den kompletten Pfad ausschreiben müssen und nicht ~ als Alias verwenden können: Das zeigt später beim Start der Anwendung mit administrativen Rechten via Sudo auf /root/home/. Entfernen Sie außerdem das Kommentarzeichen vor der Zeile - "./storage:/photoprism/storage.

Halten Sie Bilder und Videos getrennt vor oder haben Sie mehrere Ordner mit Bildern, dann orientieren Sie sich an der Beispielzeile /example/family:/photoprism/originals/family und passen diese entsprechend an. Für die Anzahl dieser Unterverzeichnisse gibt es (im üblichen Rahmen) keine Begrenzung. Sie können zudem Geräte direkt einhängen, etwa über eine Zeile wie /media/Benutzer/nas/Photos:/photoprism/originals/nas. Bilder lassen sich aber auch über den Upload-Button hochladen, der oben rechts erscheint, sobald Sie sich in der Suche befinden (Abbildung 8).

Abbildung 8: So sah im Test der Bereich <code>volumes</code> aus. Darin wurden je ein Bild- und Video-Ordner unter <span class="ui-element">Downloads</span> auf dem Host sowie der Ordner <code>Photos</code> auf einem NAS im Heimnetz eingeh&auml;ngt. Die letzte (Standard-)Zeile d&uuml;rfen Sie keinesfalls entfernen.

Abbildung 8: So sah im Test der Bereich volumes aus. Darin wurden je ein Bild- und Video-Ordner unter Downloads auf dem Host sowie der Ordner Photos auf einem NAS im Heimnetz eingehängt. Die letzte (Standard-)Zeile dürfen Sie keinesfalls entfernen.

Die gut dokumentierte YAML-Datei enthält am Anfang eine ausführliche Befehlsreferenz für Docker-Compose, sodass Sie über eventuelle Hürden gut hinwegkommen sollten. Haben Sie die Datei nach Ihren Wünschen angepasst und gespeichert, starten Sie Ihre Instanz von PhotoPrism, indem Sie im Verzeichnis mit der YAML-Datei den Befehl sudo docker-compose up -d absetzen. Nun lädt das Skript die benötigten Images herunter und setzt damit zwei Container für die Datenbank MariaDB und für PhotoPrism selbst auf (Abbildung 9).

Abbildung 9: Die YAML-Datei enth&auml;lt am Anfang eine Befehlsreferenz f&uuml;r Docker-Compose, die beim Zurechtfinden hilft.

Abbildung 9: Die YAML-Datei enthält am Anfang eine Befehlsreferenz für Docker-Compose, die beim Zurechtfinden hilft.

Webserver inklusive

Falls Sie sich wundern, dass ein Container für den Webserver fehlt: Das in Go geschriebene PhotoPrism bringt bereits selbst einen Webserver mit. Sobald nach dem Start der Prompt wieder erscheint, öffnen Sie in einem Webbrowser über die URL http://localhost:2342 die Weboberfläche von PhotoPrism. Dort loggen Sie sich mit dem Usernamen admin und dem vorher vergebenen Admin-Passwort ein. Möchten Sie sich von einem anderen Rechner im Heimnetz aus einloggen, müssen Sie in der YAML-Datei hinter PHOTOPRISM_SITE_URL die IP-Adresse oder den Domain-Namen des PhotoPrism-Servers angeben und den localhost in der URL damit ersetzen. Nutzen Sie eine Firewall, müssen Sie diese für die IP respektive Domain öffnen.

Wenn Sie (wie wir im Test zunächst) vergessen haben, einen Ordner mit Bildern anzugeben, sehen Sie eine sehr aufgeräumte Oberfläche, die Ihnen mitteilt, dass keine Bilder gefunden wurden. Um dieses oder andere Probleme zu beseitigen, stoppen Sie zunächst die Anwendung mit dem Befehl sudo docker-compose stop, korrigieren Ihren Fehler in der YAML-Datei und starten die Container neu mit sudo docker-compose up -d.

Nachdem wir die Pfade zu unseren Bildern angegeben hatten, stellten wir zunächst in der Leiste am linken Rand ganz unten unter Einstellungen die Sprache auf Deutsch um und ließen dann unter dem Menüpunkt Dateien den Index der von uns bereitgestellten Bilder erstellen. Für den Test lasen wir rund 2000 Bilder mit verschiedensten Motiven ein, die die TensorFlow-KI in Kategorien einteilte. Das klappte nicht immer hundertprozentig, arbeitete aber hinreichend genau.

Einzelne nicht korrekte Kategorisierungen korrigieren Sie von Hand, indem Sie die jeweiligen Bilder über das Lupensymbol oben links öffnen und dann den Bleistift zum Editieren anklicken. Falls Sie Aktionen für mehrere Bilder oder Alben ausführen möchten, klicken Sie den Kreis rechts unten an, der auftaucht, sobald Sie den Mauszeiger über ein Objekt positionieren. Ein Zähler rechts unten zeigt Ihnen, wie viele Objekte Sie markiert haben. Ein Klick auf die Zahl öffnet ein Menü, das die möglichen Aktionen zeigt. Die reichen vom Herunterladen, Editieren und Teilen über das Markieren als privat bis hin zum Archivieren. Als privat markierte Bilder eines Albums nimmt sie PhotoPrism beim Teilen aus.

Einstellungssache

In den Einstellungen haben Sie vielfältige Möglichkeiten der Einflussnahme, sowohl was die Darstellung der Oberfläche angeht als auch die zu verwendenden Komponenten. Das Löschen von Bildern müssen Sie dort unter Allgemein mit einem Haken bestätigen (Abbildung 10). Im Reiter Erweitert schalten Sie bei Bedarf WebDAV, Exiftool, Ffmpeg oder TensorFlow ab, wechseln in den schreibgeschützten Modus oder schalten experimentelle Funktionen frei (Abbildung 11). Unter Sync fügen Sie Server hinzu oder verbinden sich mit WebDAV-Clients (Abbildung 12). Treten Probleme auf, werfen Sie zunächst einen Blick ins Log, etwa mit dem Befehl sudo docker-compose logs --tail=25 -f. Damit zeigen Sie die letzten 25 Zeilen an. Der Schalter -f sorgt dafür, dass Sie hereinkommende Meldungen zur Laufzeit verfolgen können.

Abbildung 10: Die Einstellungen verteilen sich auf f&uuml;nf Reiter. Unter <span class="ui-element">Allgemein</span> beeinflussen Sie unter anderem, in welchen Kategorien PhotoPrism Ihre Bilder pr&auml;sentiert.

Abbildung 10: Die Einstellungen verteilen sich auf fünf Reiter. Unter Allgemein beeinflussen Sie unter anderem, in welchen Kategorien PhotoPrism Ihre Bilder präsentiert.


Abbildung 11: Der Reiter <span class="ui-element">Erweitert</span> in den Einstellungen erlaubt das Deaktivieren von WebDAV, Exiftool und TensorFlow. Zudem legen Sie dort Maximalgr&ouml;&szlig;en f&uuml;r verschiedene Darstellungsarten fest.

Abbildung 11: Der Reiter Erweitert in den Einstellungen erlaubt das Deaktivieren von WebDAV, Exiftool und TensorFlow. Zudem legen Sie dort Maximalgrößen für verschiedene Darstellungsarten fest.


Abbildung 12: Im Reiter <span class="ui-element">Sync</span> verbinden Sie PhotoPrism mit WebDAV-Clients wie Nextcloud oder einer weiteren PhotoPrism-Instanz.

Abbildung 12: Im Reiter Sync verbinden Sie PhotoPrism mit WebDAV-Clients wie Nextcloud oder einer weiteren PhotoPrism-Instanz.

WebDAV

PhotoPrism macht ausgiebig Gebrauch von WebDAV, um Bilder zu teilen, hoch- oder herunterzuladen oder zu festgelegten Zeiten zu synchronisieren. Die Verbindung gelingt zu beliebigen WebDAV-Clients wie etwa Nextcloud oder anderen PhotoPrism-Instanzen. Auch im mobilen Einsatz kommt über die App PhotoSync WebDAV bei der Synchronisation zum Einsatz. Möchten Sie Ihre Fotos in voller Qualität übertragen, benötigen Sie die Kaufversion PhotoSync Pro. Bei der iOS-Version lässt sich PhotoPrism direkt als Ziel angeben, unter Android wählen Sie WebDAV und richten die Verbindung ein [10]. Eine Alternative zur Synchronisation von Smartphones oder anderen (auch entfernten) Quellen stellt Syncthing [11] dar. Auf Github arbeitet ein unabhängiges Projekt an der App PhotoPrism-Mobile [12], die sich aber noch in einem frühen Stadium befindet.

Wie Sie die Container mit der Datenbank und PhotoPrism selbst manuell aktualisieren, zeigt Listing 2. Die YAML-Datei enthält ganz am Ende einen deaktivierten Abschnitt zur automatischen Aktualisierung über die Anwendung Watchtower. Die App überwacht die laufenden Docker-Container auf Änderungen. Sobald Watchtower feststellt, dass sich ein Image geändert hat, startet es den Container automatisch mit dem frischen Image neu. Die App läuft größtenteils ohne Probleme. Verwenden Sie allerdings ein Synology-NAS als Basis für PhotoPrism, sollten Sie Watchtower außen vor lassen. Um die App zu testen, entfernen Sie die Kommentarzeilen im entsprechenden Abschnitt der YAML-Datei.

Listing 2

Container aktualisieren

$ sudo docker-compose pull
$ sudo docker-compose stop
$ sudo docker-compose up -d

Fazit und Ausblick

Zunächst einmal ein Lob an die Entwickler: PhotoPrism ist eine großartige Anwendung. Sie sorgt für die Befreiung vom Joch von Google Photos oder ähnlichen Cloud-Diensten, bei denen Sie die Rechnung mit Ihrer Privatsphäre bezahlen. Die gut gestaltete Anwendung bietet unter einer ansehnlichen Oberfläche eine gelungene Kombination aus Datenbank und künstlicher Intelligenz. Dass Letztere ab und zu skurrile Ergebnisse bei der Erkennung abliefert, sei ihr verziehen. Dafür bietet PhotoPrism verschiedenste Ansichten der Bilder, bis hin zu detaillierten Angaben über Ort und Aufnahmeparameter (Abbildung 13).

Abbildung 13: PhotoPrism bietet eine Vielzahl von Ansichten Ihrer Bilder bis hin zu Details &uuml;ber Aufnahmeort und Einstellungen der Kamera.

Abbildung 13: PhotoPrism bietet eine Vielzahl von Ansichten Ihrer Bilder bis hin zu Details über Aufnahmeort und Einstellungen der Kamera.

PhotoPrism verfügt über eine gute deutsche Dokumentation [13]. Bei Problemen gibt es mehrere Anlaufstellen, etwa auf Github, per Gitter Chat oder via E-Mail [14]. Die App befindet sich in ständiger Entwicklung, eine Roadmap skizziert die nächsten Schritte [15]. Wenn Ihnen PhotoPrism gefällt, ziehen Sie bitte in Erwägung, die Entwickler mit Code oder einer Spende zu unterstützen. (cla)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 07/2022 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben