Ai-Rating-Skript: Eine umfassende Anleitung

Dieses Skript ermöglicht es dir, Bilder entweder über eine Web-Oberfläche oder direkt über die Kommandozeile von einer lokalen KI bewerten zu lassen. Die Ergebnisse können als CSV-Dateien für die Datenanalyse und/oder als XMP-Sidecar-Dateien für die Integration in Bildverwaltungsprogramme wie Darktable gespeichert werden.

1. Voraussetzungen

Bevor du das Skript ausführst, stelle sicher, dass die folgenden Abhängigkeiten installiert sind:

  • Python 3: Eine aktuelle Version von Python. Anleitung zur Installation.
  • pip: Der Python-Paketmanager (normalerweise bei Python dabei).
  • Darktable: Eine Open-Source-Fotobearbeitungssoftware. Das Skript verwendet darktable-cli zur Bildkonvertierung. Stelle sicher, dass darktable-cli in deinem Systempfad (PATH) verfügbar ist.
  • LM Studio oder eine kompatible lokale KI-API: Das Skript ist so konfiguriert, dass es mit einer lokalen KI-API kommuniziert, die dem OpenAI-Standard entspricht (z.B. LM Studio). Stelle sicher, dass deine lokale KI-API läuft und unter der konfigurierten URL erreichbar ist (Standard: http://localhost:1234/v1/chat/completions).

2. Installation der Python-Abhängigkeiten

Öffne dein Terminal oder deine Kommandozeile und führe den folgenden Befehl aus:

Fish
pip install pandas flask requests 

3. Dateistruktur

Stelle sicher, dass die folgenden Dateien im selben Verzeichnis liegen:

  • Ai-Rating.py: Das Hauptskript.
  • ai_rating_utils.py: Eine Hilfsdatei mit gemeinsamen Funktionen.
  • prompt.txt: Enthält den Benutzer-Prompt für die KI-Bewertung.
  • system_prompt.txt: Enthält den System-Prompt, der die KI anweist, wie sie die Bilder bewerten soll.
  • template.html: Die HTML-Vorlage für die Web-Oberfläche.

Wenn prompt.txt oder system_prompt.txt nicht existieren, werden sie beim ersten Start des Skripts mit Standardinhalten erstellt.

4. Konfiguration der Prompts

Die KI-Bewertung basiert auf zwei Prompts:

  • system_prompt.txt: Definiert die Bewertungskriterien und das gewünschte Ausgabeformat der KI. Der Standard-Prompt enthält Kriterien wie „Technische Qualität“, „Komposition“, „Inhalt und Aussage“ und „Kreativität und Ästhetik“. Du kannst diese Kriterien an deine Bedürfnisse anpassen.
  • prompt.txt: Enthält die Anweisung an die KI, das Bild zu analysieren und zu bewerten.

Du kannst diese Dateien manuell bearbeiten, um die KI-Bewertung zu steuern. Im Web-Modus kannst du die Prompts auch über die Benutzeroberfläche anpassen und speichern.

5. Ausführung des Skripts

Das Skript kann in zwei Modi ausgeführt werden: Konsolenmodus und Web-Modus.

5.1. Konsolenmodus

Der Konsolenmodus ist nützlich für die Stapelverarbeitung von Bildern ohne grafische Oberfläche.

Syntax:

Fish
python Ai-Rating.py <folder_path> [--subfolders] [--model <model_tag>] [--no-skip] [--csv] [--xmp] [--api-url <url>] 

Argumente:

  • <folder_path>: Der Pfad zu dem Ordner, der die zu bewertenden Bilder enthält. Dies ist ein Pflichtargument im Konsolenmodus.
  • --subfolders: (Optional) Wenn angegeben, werden auch Bilder in Unterordnern des <folder_path> verarbeitet.
  • --model <model_tag>: (Optional) Ein Tag für das KI-Modell, das verwendet wird. Dieser Tag wird in der CSV-Datei gespeichert.
  • --no-skip: (Optional) Wenn angegeben, werden Bilder neu verarbeitet, auch wenn bereits Ergebnisse (CSV-Einträge oder XMP-Dateien) existieren. Standardmäßig werden bereits bewertete Bilder übersprungen.
  • --csv: (Pflichtargument im Konsolenmodus, wenn --xmp nicht angegeben ist) Speichert die Bewertungsergebnisse in einer CSV-Datei.
  • --xmp: (Pflichtargument im Konsolenmodus, wenn --csv nicht angegeben ist) Speichert die Bewertungsergebnisse in XMP-Sidecar-Dateien neben den Originalbildern.
  • --api-url <url>: (Optional) Überschreibt die Standard-URL der LM Studio API. Nützlich, wenn deine KI-API auf einer anderen Adresse läuft.

Beispiele:

  • Bilder in einem Ordner bewerten und Ergebnisse in CSV speichern: bashCopypython Ai-Rating.py /pfad/zu/meinen/bildern –csv
  • Bilder in einem Ordner und Unterordnern bewerten, Ergebnisse in CSV und XMP speichern, Modell-Tag hinzufügen: bashCopypython Ai-Rating.py /pfad/zu/meinen/bildern –subfolders –model my_custom_model –csv –xmp
  • Bilder neu verarbeiten und nur XMP-Dateien aktualisieren: bashCopypython Ai-Rating.py /pfad/zu/meinen/bildern –no-skip –xmp
5.2. Web-Modus

Der Web-Modus bietet eine benutzerfreundliche Oberfläche im Browser.

Starten des Servers:

Fish
# Skript starten
python Ai-Rating.py 

# Optional
[--host <host_address>] [--port <port_number>] [--api-url <url>] 

Argumente:

  • --host <host_address>: (Optional) Die Host-Adresse, auf der der Webserver laufen soll (Standard: 127.0.0.1).
  • --port <port_number>: (Optional) Der Port, auf dem der Webserver lauschen soll (Standard: 5000).
  • --api-url <url>: (Optional) Überschreibt die Standard-URL der LM Studio API.

Beispiel:

Fish
python Ai-Rating.py  

Nach dem Starten des Servers öffne deinen Webbrowser und navigiere zu der angezeigten Adresse (standardmäßig http://127.0.0.1:5000).

Web-Oberfläche:

Die Web-Oberfläche ermöglicht es dir:

  • Einen Ordnerpfad für die Bildverarbeitung anzugeben.
  • Auszuwählen, ob Unterordner einbezogen werden sollen.
  • Einen Modell-Tag festzulegen.
  • Festzulegen, ob bereits bewertete Bilder übersprungen werden sollen.
  • Auszuwählen, ob die Ergebnisse in CSV- und/oder XMP-Dateien gespeichert werden sollen.
  • Die System- und Benutzer-Prompts anzupassen und zu speichern.
  • Den Fortschritt der Bildverarbeitung zu verfolgen.
  • Die Verarbeitung zu starten und zu stoppen.
  • Die zuletzt generierte CSV-Datei herunterzuladen.

6. Funktionsweise

  1. Bildkonvertierung: Das Skript verwendet darktable-cli, um die Originalbilder (RAW, TIFF, JPG usw.) in temporäre JPEG-Dateien zu konvertieren. Diese JPEGs werden dann an die KI-API gesendet. Die konvertierten JPEGs werden in einem Unterordner namens ai_rated_jpegs im jeweiligen Bildordner gespeichert.
  2. KI-Bewertung: Die konvertierten JPEGs werden zusammen mit den konfigurierten System- und Benutzer-Prompts an deine lokale KI-API gesendet. Die KI analysiert das Bild und gibt eine Bewertung basierend auf den Kriterien im System-Prompt zurück.
  3. Ergebnis-Parsing: Die KI-Antwort wird geparst, um die einzelnen Bewertungskriterien (z.B. „Komposition“, „Belichtung“) und eine Gesamtbewertung sowie Keywords zu extrahieren.
  4. Speichern der Ergebnisse:
    • CSV: Wenn save_to_csv aktiviert ist, werden die Ergebnisse in einer CSV-Datei (ai_rating_results_<model_tag>.csv) im Stammordner der verarbeiteten Bilder gespeichert. Bestehende CSV-Dateien werden aktualisiert, wenn neue Bilder verarbeitet werden.
    • XMP: Wenn save_to_xmp aktiviert ist, wird für jedes bewertete Bild eine XMP-Sidecar-Datei erstellt oder aktualisiert. Diese XMP-Dateien enthalten das Gesamt-Rating, die einzelnen Kriterienbewertungen und die Keywords, die von der KI generiert wurden. Bildverwaltungsprogramme wie Darktable können diese Informationen lesen und anzeigen.

7. Fehlerbehebung

  • darktable-cli nicht gefunden: Stelle sicher, dass Darktable installiert ist und der Pfad zu darktable-cli in deiner System-PATH-Variable enthalten ist.
  • API-Fehler: Überprüfe, ob deine lokale KI-API (z.B. LM Studio) läuft und unter der korrekten URL erreichbar ist. Überprüfe auch die Netzwerkkonnektivität.
  • Prompts nicht gefunden: Das Skript erstellt prompt.txt und system_prompt.txt automatisch, wenn sie nicht existieren. Überprüfe die Konsolenausgabe auf Fehlermeldungen beim Erstellen oder Lesen dieser Dateien.
  • Keine Ausgabe (CSV/XMP): Stelle sicher, dass du im Konsolenmodus --csv und/oder --xmp angegeben hast oder im Web-Modus die entsprechenden Optionen ausgewählt sind.

Wie installierst du die Abhängigkeiten unter Windows?

  1. Luarocks installieren (empfohlen, da es einfach ist):
    • Lade Luarocks von luarocks.org herunter und installiere es. Wähle die Version, die zu deiner Lua-Version passt (z.B. für Lua 5.3).
    • Öffne die Kommandozeile (cmd oder PowerShell) und installiere die Libraries:
      • Für LuaSocket (enthält socket.http und ltn12): luarocks install luasocket
      • Für JSON: luarocks install dkjson (oder luarocks install lua-cjson, wenn verfügbar).
    • Luarocks sollte die Libraries in den Lua-Pfad legen, den darktable erkennt. Wenn nicht, musst du den Pfad manuell anpassen (siehe unten).

Installation:

  • LuaSocket (für socket.http und ltn12): Installiere es systemweit mit deinem Paketmanager, z.B.:
    • Ubuntu/Debian: sudo apt install lua-socket
    • Arch/Fedora: Ähnlich (pacman -S lua-socket oder dnf install lua-socket).
    • Stelle sicher, dass die Lua-Version passt (darktable verwendet oft Lua 5.3 oder 5.4).
  • JSON-Library: Oft als lua-json oder dkjson verfügbar. Zum Beispiel:
    • sudo apt install lua-json (oder luarocks install dkjson, wenn Luarocks installiert ist).
    • Darktable könnte bereits eine eingebaute JSON-Unterstützung haben – teste es einfach.