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, dassdarktable-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:
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:
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:
# 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:
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
- 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 namensai_rated_jpegs
im jeweiligen Bildordner gespeichert. - 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.
- Ergebnis-Parsing: Die KI-Antwort wird geparst, um die einzelnen Bewertungskriterien (z.B. „Komposition“, „Belichtung“) und eine Gesamtbewertung sowie Keywords zu extrahieren.
- 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.
- CSV: Wenn
7. Fehlerbehebung
darktable-cli
nicht gefunden: Stelle sicher, dass Darktable installiert ist und der Pfad zudarktable-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
undsystem_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?
- 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
undltn12
):luarocks install luasocket
- Für JSON:
luarocks install dkjson
(oderluarocks install lua-cjson
, wenn verfügbar).
- Für LuaSocket (enthält
- 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
undltn12
): Installiere es systemweit mit deinem Paketmanager, z.B.:- Ubuntu/Debian:
sudo apt install lua-socket
- Arch/Fedora: Ähnlich (
pacman -S lua-socket
oderdnf install lua-socket
). - Stelle sicher, dass die Lua-Version passt (darktable verwendet oft Lua 5.3 oder 5.4).
- Ubuntu/Debian:
- JSON-Library: Oft als
lua-json
oderdkjson
verfügbar. Zum Beispiel:sudo apt install lua-json
(oderluarocks install dkjson
, wenn Luarocks installiert ist).- Darktable könnte bereits eine eingebaute JSON-Unterstützung haben – teste es einfach.