LLMImageIndexer es una herramienta inteligente de indexación y procesamiento de imágenes que aprovecha la IA local para generar metadatos completos para su colección de imágenes. Esta herramienta utiliza modelos de lenguaje avanzados para analizar imágenes y generar leyendas y metadatos de palabras clave.
Análisis inteligente de imágenes : utiliza un modelo de IA local para generar una cantidad variable de palabras clave y un título para cada imagen.
Mejora de metadatos : puede editar automáticamente metadatos de imágenes con etiquetas generadas.
Procesamiento local : todo el procesamiento se realiza localmente en su máquina.
Compatibilidad con múltiples formatos : Maneja una amplia gama de formatos de imagen, incluidos los principales archivos de cámara sin formato.
GUI fácil de usar : Incluye una GUI y un instalador. Se basa en Koboldcpp, un único ejecutable, para todas las funciones de IA.
Aceleración de GPU : utilizará hardware Apple Metal, Nvidia CUDA o AMD (Vulkan) si está disponible para acelerar enormemente la inferencia.
Multiplataforma : compatible con Windows, macOS ARM y Linux.
Capacidad de detener e iniciar : puede detenerse e iniciarse sin tener que volver a procesar todos los archivos.
Postprocesamiento de palabras clave : expanda las palabras clave para que todos los sinónimos se agreguen a cada imagen con uno de los sinónimos, o elimine las duplicaciones de palabras clave utilizando el sinónimo más utilizado en lugar de todos los sinónimos coincidentes.
Antes de proceder a utilizar este script debes tener en cuenta lo siguiente:
Este es un proyecto realizado por alguien que desconoce por completo los protocolos formales utilizados por los fotógrafos profesionales. Si depende de su fotografía para pagar las facturas, debe probar exhaustivamente los efectos de este script antes de ejecutarlo en algo importante.
Si se le indica que escriba los metadatos, escribirá en las siguientes etiquetas usando exiftool: MWG:Palabras clave, XMP:Descripción, Estado, XMP:Identificador. Estos no son necesariamente los nombres de las etiquetas que exiftool decide que se utilizarán. El desarrollador de exiftool es probablemente el mayor experto en esquemas de metadatos de archivos y conoce el lugar apropiado para colocar los metadatos mejor de lo que podría esperar. Dediqué mucho tiempo a hacer que esto tuviera el menor impacto posible y al mismo tiempo mantuviera la capacidad de realizar un seguimiento del estado de las imágenes procesadas sin una base de datos central o un depósito de información para que los archivos se puedan mover a cualquier lugar o cambiar el nombre sin problema, pero debe asegurarse de que sus imágenes no se vean afectadas negativamente por los datos de esos campos
Este es un proceso bastante técnico. Con suerte, todo funciona, y traté de que así fuera, pero tengo una capacidad limitada (re: ninguna) para probar esto en otras máquinas o plataformas, por lo que pueden surgir muchos errores. Me esforzaré en trabajar con la gente para resolver los problemas, pero usted debe tener las habilidades técnicas para solucionar problemas y seguir las instrucciones. Si no puede hacerlo, debe proceder con vacilación.
Python 3.8 o superior
KoboldCPP
Se necesita un modelo de visión, pero si usa llmii-run.bat para abrirlo, la primera vez que se ejecute, descargará el gguf MiniCPM-V 2.6 Q4_K_M y el proyector F16 del repositorio de Bartowski en huggingface. Si no desea utilizarlo, simplemente abra llmii-no-kobold.bat, abra Koboldcpp.exe y cargue el modelo que desee.
Clona el repositorio o descarga el archivo ZIP y extráelo.
Instale Python para Windows.
Descarga KoboldCPP.exe y colócalo en la carpeta LlavaImageTagger. Si no se llama KoboldCPP.exe, cámbiele el nombre a KoboldCPP.exe
Ejecute llmii-run.bat
y espere a que se instale exiftool. Cuando esté completo deberás iniciar el archivo nuevamente. Si lo llamó desde una ventana de terminal, deberá cerrar la ventana y volver a abrirla. Luego creará un entorno Python y descargará los pesos del modelo. La descarga es bastante grande (6 GB) y no hay barra de progreso, pero solo es necesario hacerlo una vez. Una vez hecho esto, KoboldCPP se iniciará y una de las ventanas de la terminal dirá Please connect to custom endpoint at http://localhost:5001
y luego estará listo.
Clona el repositorio o descarga el archivo ZIP y extráelo.
Instale Python 3.7 o superior si aún no está instalado. Puedes usar cerveza casera:
brew install python
Instalar ExifTool:
brew install exiftool
Descargue KoboldCPP para macOS y colóquelo en la carpeta LLMImageIndexer.
Abra una terminal en la carpeta LLMImageIndexer y ejecute:
chmod +x koboldcpp-mac-arm64 ./llmii-run.sh
Clona el repositorio o descarga y extrae el archivo ZIP.
Instale Python 3.7 o superior si aún no está instalado. Utilice el administrador de paquetes de su distribución, por ejemplo en Ubuntu:
sudo apt-get update sudo apt-get install python3 python3-pip
Instale ExifTool. En Ubuntu:
sudo apt-get install libimage-exiftool-perl
Descargue el binario KoboldCPP apropiado para su distribución de Linux desde las versiones de KoboldCPP y colóquelo en la carpeta LLMImageIndexer.
Abra una terminal en la carpeta LLMImageIndexer y ejecute:
chmod +x koboldcpp-linux-x64 ./llmii-run.sh
Para todas las plataformas, el script configurará el entorno Python, instalará dependencias y descargará los pesos de modelo necesarios (6 GB en total). Esta configuración inicial se realiza sólo una vez y tardará unos minutos dependiendo de la velocidad de descarga.
Inicie la GUI de LLMImageIndexer:
En Windows: ejecute llmii-run.bat
En macOS/Linux: ejecute python3 llmii-gui.py
Asegúrese de que KoboldCPP esté ejecutándose. Espere hasta que vea el siguiente mensaje en la ventana de KoboldCPP:
Please connect to custom endpoint at http://localhost:5001
Configure los ajustes de indexación en la GUI:
Seleccione el directorio de imágenes de destino
Establezca la URL de la API (predeterminada: http://localhost:5001)
Elija etiquetas de metadatos para generar (palabras clave, descripciones)
Establecer opciones adicionales (rastrear subdirectorios, archivos de respaldo, etc.)
Haga clic en "Ejecutar indexador de imágenes" para iniciar el proceso.
Supervise el progreso en el área de salida de la GUI.
Directorio : directorio de imágenes de destino (incluye subdirectorios de forma predeterminada)
URL de API : punto final de API de KoboldCPP (cambiar si se ejecuta en otra máquina)
Contraseña API : Establezca si así lo requiere su configuración de KoboldCPP
Leyenda : Haga que el LLM describa la imagen y la configure en XMP: Descripción (duplica el tiempo de procesamiento)
GenTokens : cantidad de tokens que generará el LLM
Omitir archivos procesados que no están en la base de datos : no intentará reprocesar archivos con un UUID y palabras clave incluso si no están en la base de datos llmii.json.
Falló el reprocesamiento : si algún archivo falló en la última ronda, intentará procesarlo nuevamente
Reprocesar TODOS : Los archivos que ya están procesados se almacenan en una base de datos y se omiten si los reanuda más tarde, esto los hará todo de nuevo.
No rastrear subdirectorios : deshabilitar el escaneo de subdirectorios
No haga copias de seguridad antes de escribir : omita la creación de archivos de copia de seguridad (NOTA: esto se aplica al procesamiento y al posprocesamiento; si habilita el posprocesamiento y deja esta opción sin marcar, se realizará una segunda copia de seguridad).
Modo de simulación : simule el procesamiento sin escribir en archivos o bases de datos
Omitir procesamiento : si desea utilizar el procesamiento de palabras clave y no desea que verifique cada imagen en el directorio antes de comenzar, marque esta casilla.
Palabras clave : elija borrar y escribir nuevas palabras clave o actualizar las existentes.
Postprocesamiento de palabras clave : mantenga las palabras clave tal como se generaron, expanda las palabras clave aplicando todos los sinónimos a las palabras clave coincidentes o dedepegue las palabras clave reemplazando los sinónimos coincidentes con los sinónimos más frecuentes; estas opciones tienen lugar después de que se haya completado el indexador, a menos que la casilla "omitir procesamiento" esté marcada
Consulte la wiki para obtener más información y pasos para solucionar problemas.
¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción.
Este proyecto tiene la licencia MIT; consulte el archivo de LICENCIA para obtener más detalles.
ExifTool para manipulación de metadatos
KoboldCPP para procesamiento local de IA
PyQt6 para el marco GUI
Repare JSON roto y reparación de Json para obtener ayuda con el análisis de JSON dañado