LLMImageIndexer é uma ferramenta inteligente de processamento e indexação de imagens que aproveita IA local para gerar metadados abrangentes para sua coleção de imagens. Esta ferramenta usa modelos de linguagem avançados para analisar imagens e gerar legendas e metadados de palavras-chave.
Análise inteligente de imagens : utiliza um modelo de IA local para gerar um número variável de palavras-chave e uma legenda para cada imagem.
Aprimoramento de metadados : pode editar automaticamente metadados de imagem com tags geradas.
Processamento Local : Todo o processamento é feito localmente em sua máquina.
Suporte a vários formatos : suporta uma ampla variedade de formatos de imagem, incluindo todos os principais arquivos raw de câmera.
GUI amigável : Inclui uma GUI e instalador. Baseia-se no Koboldcpp, um único executável, para todas as funcionalidades de IA.
Aceleração de GPU : usará hardware Apple Metal, Nvidia CUDA ou AMD (Vulkan), se disponível, para acelerar bastante a inferência.
Plataforma cruzada : compatível com Windows, macOS ARM e Linux.
Capacidade de parar e iniciar : pode parar e iniciar sem precisar reprocessar todos os arquivos novamente.
Pós-processamento de palavras-chave : expanda palavras-chave para que todos os sinônimos sejam adicionados a cada imagem com um dos sinônimos ou desduplique palavras-chave usando o sinônimo usado com mais frequência no lugar de todos os sinônimos correspondentes.
Antes de continuar a usar este script, você deve estar ciente do seguinte:
Este é um projeto feito por alguém que não conhece os protocolos formais utilizados pelos fotógrafos profissionais. Se você depende de sua fotografia para pagar contas, você deve testar extensivamente os efeitos deste script antes de executá-lo em qualquer coisa importante.
Se for direcionado para gravar os metadados, ele gravará nas seguintes tags usando exiftool: MWG:Keywords, XMP:Description, Status, XMP:Identifier. Estes não são necessariamente os nomes das tags que o exiftool decide que serão usadas. O desenvolvedor do exiftool é provavelmente o maior especialista em esquema de metadados de arquivos e conhece o local apropriado para colocar os metadados melhor do que eu jamais poderia esperar. Gastei muito tempo para tornar isso o mais 'baixo impacto' possível, mantendo ao mesmo tempo a capacidade de acompanhar o estado das imagens processadas sem um banco de dados central ou repositório de informações, para que os arquivos possam ser movidos para qualquer lugar ou renomeados sem problema, mas você precisa garantir que suas imagens não serão impactadas negativamente com os dados nesses campos
Este é um processo bastante técnico. Espero que tudo funcione, e tentei fazer com que fosse assim, mas tenho capacidade limitada (re: nenhuma) de testar isso em outras máquinas ou plataformas, então qualquer número de bugs pode surgir. Tentarei trabalhar com as pessoas para resolver problemas, mas você deve ter as habilidades técnicas para solucionar problemas e seguir as instruções. Se você não puder fazer isso, prossiga com hesitação.
Python 3.8 ou superior
KoboldCPP
Um modelo de visão é necessário, mas se você usar o llmii-run.bat para abri-lo, na primeira vez que for executado, ele fará o download do MiniCPM-V 2.6 Q4_K_M gguf e do projetor F16 do repositório de Bartowski em huggingface. Se você não quiser usar isso, basta abrir llmii-no-kobold.bat e abrir Koboldcpp.exe e carregar o modelo que desejar.
Clone o repositório ou baixe o arquivo ZIP e extraia-o.
Instale Python para Windows.
Baixe KoboldCPP.exe e coloque-o na pasta LlavaImageTagger. Se não tiver o nome KoboldCPP.exe, renomeie-o para KoboldCPP.exe
Execute llmii-run.bat
e aguarde a instalação do exiftool. Quando estiver concluído, você deve iniciar o arquivo novamente. Se você o chamou de uma janela de terminal, precisará fechar as janelas e reabri-lo. Em seguida, ele criará um ambiente python e fará download dos pesos do modelo. O download é bastante grande (6 GB) e não há barra de progresso, mas só é necessário fazer isso uma vez. Assim que terminar, o KoboldCPP será iniciado e uma das janelas do terminal dirá Please connect to custom endpoint at http://localhost:5001
e então estará pronto.
Clone o repositório ou baixe o arquivo ZIP e extraia-o.
Instale o Python 3.7 ou superior, se ainda não estiver instalado. Você pode usar o Homebrew:
brew install python
Instale o ExifTool:
brew install exiftool
Baixe KoboldCPP para macOS e coloque-o na pasta LLMImageIndexer.
Abra um terminal na pasta LLMImageIndexer e execute:
chmod +x koboldcpp-mac-arm64 ./llmii-run.sh
Clone o repositório ou baixe e extraia o arquivo ZIP.
Instale o Python 3.7 ou superior, se ainda não estiver instalado. Use o gerenciador de pacotes da sua distribuição, por exemplo no Ubuntu:
sudo apt-get update sudo apt-get install python3 python3-pip
Instale o ExifTool. No Ubuntu:
sudo apt-get install libimage-exiftool-perl
Baixe o binário KoboldCPP apropriado para sua distribuição Linux nas versões KoboldCPP e coloque-o na pasta LLMImageIndexer.
Abra um terminal na pasta LLMImageIndexer e execute:
chmod +x koboldcpp-linux-x64 ./llmii-run.sh
Para todas as plataformas, o script configurará o ambiente Python, instalará dependências e fará download dos pesos de modelo necessários (6 GB no total). Esta configuração inicial é realizada apenas uma vez e levará alguns minutos dependendo da velocidade de download.
Inicie a GUI do LLMImageIndexer:
No Windows: execute llmii-run.bat
No macOS/Linux: execute python3 llmii-gui.py
Certifique-se de que o KoboldCPP está em execução. Espere até ver a seguinte mensagem na janela do KoboldCPP:
Please connect to custom endpoint at http://localhost:5001
Defina as configurações de indexação na GUI:
Selecione o diretório da imagem de destino
Defina o URL da API (padrão: http://localhost:5001)
Escolha tags de metadados para gerar (palavras-chave, descrições)
Defina opções adicionais (subdiretórios de rastreamento, arquivos de backup, etc.)
Clique em “Executar Indexador de Imagens” para iniciar o processo.
Monitore o progresso na área de saída da GUI.
Diretório : diretório de imagem de destino (inclui subdiretórios por padrão)
URL da API : endpoint da API KoboldCPP (alterar se estiver executando em outra máquina)
Senha API : Defina se exigido pela configuração do KoboldCPP
Legenda : Faça com que o LLM descreva a imagem e defina-a em XMP: Descrição (dobra o tempo de processamento)
GenTokens : Quantidade de tokens para o LLM gerar
Ignorar arquivos processados que não estão no banco de dados : não tentará reprocessar arquivos com um UUID e palavras-chave, mesmo que eles não estejam no banco de dados llmii.json
Falha no reprocessamento : se algum arquivo falhou na última rodada, ele tentará processá-lo novamente
Reprocessar TODOS : Os arquivos que já foram processados são armazenados em um banco de dados e ignorados se você retomar mais tarde, isso fará tudo novamente
Não rastreie subdiretórios : desative a verificação de subdiretórios
Não faça backups antes de gravar : Ignore a criação de arquivos de backup (NOTA: isso se aplica ao processamento e pós-processamento; se você ativar o pós-processamento e deixar esta opção desmarcada, será feito um segundo backup!)
Modo de simulação : simula o processamento sem gravar em arquivos ou banco de dados
Ignorar processamento : Se você deseja usar a palavra-chave processamento e não deseja verificar todas as imagens no diretório antes de iniciar, marque esta caixa
Palavras-chave : escolha limpar e escrever novas palavras-chave ou atualizar as existentes
Palavras-chave de pós-processamento : mantenha as palavras-chave conforme geradas, expanda as palavras-chave aplicando todos os sinônimos às palavras-chave correspondentes ou palavras-chave Dedepe substituindo os sinônimos correspondentes pelos sinônimos mais frequentes; essas opções ocorrem após a conclusão do indexador, a menos que a caixa 'pular processamento' esteja marcada
Consulte o wiki para obter mais informações e etapas de solução de problemas.
Contribuições são bem-vindas! Sinta-se à vontade para enviar uma solicitação pull.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.
ExifTool para manipulação de metadados
KoboldCPP para processamento local de IA
PyQt6 para a estrutura GUI
Corrigir Busted JSON e Json Repair para obter ajuda com análise JSON mutilada