LLMImageIndexer est un outil intelligent de traitement et d'indexation d'images qui exploite l'IA locale pour générer des métadonnées complètes pour votre collection d'images. Cet outil utilise des modèles de langage avancés pour analyser les images et générer des légendes et des métadonnées de mots clés.
Analyse intelligente des images : utilise un modèle d'IA local pour générer un nombre variable de mots-clés et une légende pour chaque image.
Amélioration des métadonnées : peut modifier automatiquement les métadonnées de l'image avec les balises générées.
Traitement local : Tous les traitements sont effectués localement sur votre machine.
Prise en charge multiformat : gère une large gamme de formats d'image, y compris tous les principaux fichiers bruts de l'appareil photo.
Interface graphique conviviale : comprend une interface graphique et un programme d'installation. S'appuie sur Koboldcpp, un exécutable unique, pour toutes les fonctionnalités d'IA.
Accélération GPU : utilisera le matériel Apple Metal, Nvidia CUDA ou AMD (Vulkan) s'il est disponible pour accélérer considérablement l'inférence.
Multiplateforme : prend en charge Windows, macOS ARM et Linux.
Capacité d'arrêt et de démarrage : peut s'arrêter et démarrer sans avoir à retraiter à nouveau tous les fichiers.
Post-traitement des mots-clés : développez les mots-clés afin que tous les synonymes soient ajoutés à chaque image avec l'un des synonymes, ou dédoublonnez les mots-clés en utilisant le synonyme le plus fréquemment utilisé à la place de tous les synonymes correspondants.
Avant de commencer à utiliser ce script, vous devez être conscient des points suivants :
Il s'agit d'un projet réalisé par quelqu'un qui ne connaît absolument pas les protocoles formels utilisés par les photographes professionnels. Si vous comptez sur votre photographie pour payer vos factures, vous devez tester minutieusement les effets de ce script avant de l'exécuter sur quelque chose d'important.
S'il est invité à écrire les métadonnées, il écrira dans les balises suivantes à l'aide d'exiftool : MWG : Keywords, XMP : Description, Status, XMP : Identifier. Ce ne sont pas nécessairement les noms des balises qu'exiftool décide d'utiliser. Le développeur exiftool est probablement le plus grand expert en matière de schéma de métadonnées de fichiers et connaît l'endroit approprié pour placer les métadonnées mieux que je ne pourrais jamais l'espérer. J'ai passé beaucoup de temps à rendre cela aussi « faible impact » que possible tout en conservant la possibilité de suivre l'état des images traitées sans base de données centrale ni référentiel d'informations afin que les fichiers puissent être déplacés n'importe où ou renommés sans problème, mais vous devez vous assurer que vos images ne seront pas affectées négativement par les données de ces champs
Il s'agit d'un processus assez technique. J'espère que tout fonctionne, et j'ai essayé de faire en sorte que ce soit le cas, mais j'ai une capacité limitée (re: none) à tester cela sur d'autres machines ou plates-formes, donc un certain nombre de bugs peuvent survenir. Je m'efforcerai de travailler avec les gens pour résoudre les problèmes, mais vous devez avoir les compétences techniques nécessaires pour dépanner et suivre les instructions. Si vous ne pouvez pas le faire, vous devriez procéder avec hésitation.
Python 3.8 ou supérieur
KoboldCPP
Un modèle de vision est nécessaire, mais si vous utilisez llmii-run.bat pour l'ouvrir, la première fois qu'il sera exécuté, il téléchargera le projecteur MiniCPM-V 2.6 Q4_K_M gguf et F16 à partir du dépôt de Bartowski sur huggingface. Si vous ne souhaitez pas l'utiliser, ouvrez simplement llmii-no-kobold.bat, ouvrez Koboldcpp.exe et chargez le modèle de votre choix.
Clonez le référentiel ou téléchargez le fichier ZIP et extrayez-le.
Installez Python pour Windows.
Téléchargez KoboldCPP.exe et placez-le dans le dossier LlavaImageTagger. S'il ne s'appelle pas KoboldCPP.exe, renommez-le KoboldCPP.exe
Exécutez llmii-run.bat
et attendez qu'exiftool soit installé. Une fois terminé, vous devez redémarrer le fichier. Si vous l'avez appelé depuis une fenêtre de terminal, vous devrez fermer la fenêtre et la rouvrir. Il créera ensuite un environnement python et téléchargera les poids du modèle. Le téléchargement est assez volumineux (6 Go) et il n’y a pas de barre de progression, mais il suffit de le faire une seule fois. Une fois que cela est fait, KoboldCPP démarrera et l'une des fenêtres du terminal dira Please connect to custom endpoint at http://localhost:5001
, puis il sera prêt.
Clonez le référentiel ou téléchargez le fichier ZIP et extrayez-le.
Installez Python 3.7 ou supérieur s'il n'est pas déjà installé. Vous pouvez utiliser Homebrew :
brew install python
Installez ExifTool :
brew install exiftool
Téléchargez KoboldCPP pour macOS et placez-le dans le dossier LLMImageIndexer.
Ouvrez un terminal dans le dossier LLMImageIndexer et exécutez :
chmod +x koboldcpp-mac-arm64 ./llmii-run.sh
Clonez le référentiel ou téléchargez et extrayez le fichier ZIP.
Installez Python 3.7 ou supérieur s'il n'est pas déjà installé. Utilisez le gestionnaire de paquets de votre distribution, par exemple sur Ubuntu :
sudo apt-get update sudo apt-get install python3 python3-pip
Installez ExifTool. Sur Ubuntu :
sudo apt-get install libimage-exiftool-perl
Téléchargez le binaire KoboldCPP approprié pour votre distribution Linux à partir des versions de KoboldCPP et placez-le dans le dossier LLMImageIndexer.
Ouvrez un terminal dans le dossier LLMImageIndexer et exécutez :
chmod +x koboldcpp-linux-x64 ./llmii-run.sh
Pour toutes les plates-formes, le script configurera l'environnement Python, installera les dépendances et téléchargera les poids de modèle nécessaires (6 Go au total). Cette configuration initiale n'est effectuée qu'une seule fois et prendra quelques minutes en fonction de votre vitesse de téléchargement.
Lancez l'interface graphique de LLMImageIndexer :
Sous Windows : exécutez llmii-run.bat
Sur macOS/Linux : exécutez python3 llmii-gui.py
Assurez-vous que KoboldCPP est en cours d'exécution. Attendez jusqu'à ce que le message suivant s'affiche dans la fenêtre KoboldCPP :
Please connect to custom endpoint at http://localhost:5001
Configurez les paramètres d'indexation dans l'interface graphique :
Sélectionnez le répertoire d'images cible
Définir l'URL de l'API (par défaut : http://localhost:5001)
Choisissez les balises de métadonnées à générer (mots clés, descriptions)
Définir des options supplémentaires (explorer les sous-répertoires, les fichiers de sauvegarde, etc.)
Cliquez sur "Exécuter l'indexeur d'images" pour démarrer le processus.
Surveillez la progression dans la zone de sortie de l’interface graphique.
Répertoire : Répertoire d'images cible (inclut les sous-répertoires par défaut)
URL de l'API : point de terminaison de l'API KoboldCPP (à modifier si exécuté sur une autre machine)
Mot de passe API : défini si requis par votre configuration KoboldCPP
Légende : Demandez au LLM de décrire l'image et de la définir dans XMP:Description (double le temps de traitement)
GenTokens : Quantité de tokens que le LLM doit générer
Ignorer les fichiers traités absents de la base de données : ne tentera pas de retraiter les fichiers avec un UUID et des mots-clés même s'ils ne sont pas dans la base de données llmii.json
Échec du retraitement : si des fichiers ont échoué lors du dernier cycle, il tentera de les traiter à nouveau.
Retraiter TOUT : les fichiers déjà traités sont stockés dans une base de données et ignorés si vous reprenez plus tard, cela les recommencera
Ne pas explorer les sous-répertoires : désactiver l'analyse des sous-répertoires
Ne faites pas de sauvegardes avant d'écrire : ignorez la création des fichiers de sauvegarde (REMARQUE : cela s'applique au traitement et au post-traitement ; si vous activez le post-traitement et laissez cette case décochée, une deuxième sauvegarde sera effectuée !)
Mode simulation : simulez le traitement sans écrire dans des fichiers ou une base de données
Ignorer le traitement : Si vous souhaitez utiliser le traitement par mot-clé et ne souhaitez pas qu'il vérifie chaque image du répertoire avant de démarrer, cochez cette case
Mots-clés : choisissez d'effacer et d'écrire de nouveaux mots-clés ou de mettre à jour ceux existants
Mots-clés de post-traitement : conservez les mots-clés tels que générés, développez les mots-clés en appliquant tous les synonymes aux mots-clés correspondants, ou supprimez les mots-clés en remplaçant les synonymes correspondants par le synonyme le plus fréquent ; ces options ont lieu une fois l'indexeur terminé, sauf si la case « ignorer le traitement » est cochée
Consultez le wiki pour plus d'informations et les étapes de dépannage.
Les contributions sont les bienvenues ! N'hésitez pas à soumettre une Pull Request.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
ExifTool pour la manipulation des métadonnées
KoboldCPP pour le traitement local de l'IA
PyQt6 pour le framework GUI
Correction de Busted JSON et Json Repair pour obtenir de l'aide sur l'analyse JSON mutilée