LLMImageIndexer는 로컬 AI를 활용하여 이미지 컬렉션에 대한 포괄적인 메타데이터를 생성하는 지능형 이미지 처리 및 인덱싱 도구입니다. 이 도구는 고급 언어 모델을 사용하여 이미지를 분석하고 캡션 및 키워드 메타데이터를 생성합니다.
지능형 이미지 분석 : 로컬 AI 모델을 활용하여 각 이미지에 대한 다양한 수의 키워드와 캡션을 생성합니다.
메타데이터 향상 : 생성된 태그로 이미지 메타데이터를 자동으로 편집할 수 있습니다.
로컬 처리 : 모든 처리는 컴퓨터에서 로컬로 수행됩니다.
다중 형식 지원 : 모든 주요 Raw 카메라 파일을 포함하여 광범위한 이미지 형식을 처리합니다.
사용자 친화적인 GUI : GUI와 설치 프로그램이 포함되어 있습니다. 모든 AI 기능에 대해 단일 실행 파일인 Koboldcpp를 사용합니다.
GPU 가속 : 추론 속도를 크게 높이기 위해 가능한 경우 Apple Metal, Nvidia CUDA 또는 AMD(Vulkan) 하드웨어를 사용합니다.
크로스 플랫폼 : Windows, macOS ARM 및 Linux를 지원합니다.
중지 및 시작 기능 : 모든 파일을 다시 처리하지 않고도 중지하고 시작할 수 있습니다.
키워드 사후 처리 : 모든 동의어가 동의어 중 하나를 사용하여 모든 이미지에 추가되도록 키워드를 확장하거나 일치하는 모든 동의어 대신 가장 자주 사용되는 동의어를 사용하여 키워드를 중복 제거합니다.
이 스크립트를 사용하기 전에 다음 사항을 알고 있어야 합니다.
이것은 전문 사진작가들이 사용하는 공식적인 프로토콜에 전혀 익숙하지 않은 누군가가 만든 프로젝트입니다. 청구서를 지불하기 위해 사진에 의존하는 경우 중요한 작업에 실행하기 전에 이 스크립트의 효과를 광범위하게 테스트해야 합니다.
메타데이터를 쓰도록 지시된 경우 EXIFtool을 사용하여 MWG:Keywords, XMP:Description, Status, XMP:Identifier 태그에 씁니다. 이는 반드시 EXIFTool이 사용하기로 결정한 태그의 이름은 아닙니다. Exiftool 개발자는 아마도 파일 메타데이터 스키마에 대한 최고의 전문가일 것이며 내가 기대했던 것보다 메타데이터를 더 잘 배치할 적절한 위치를 알고 있을 것입니다. 나는 이것을 가능한 한 '낮은 영향'으로 만드는 데 많은 시간을 보냈습니다. 동시에 중앙 데이터베이스나 정보 저장소 없이 처리된 이미지의 상태를 추적하는 기능을 유지하여 파일을 어디든 이동하거나 이름을 바꿀 수 있도록 했습니다. 문제가 발생하지만 이미지가 해당 필드의 데이터로 인해 부정적인 영향을 받지 않도록 해야 합니다.
이는 상당히 기술적인 과정입니다. 모든 것이 제대로 작동하기를 바라며 그렇게 하려고 노력했지만, 다른 시스템이나 플랫폼에서 이를 테스트할 수 있는 능력이 제한되어 있어 많은 버그가 발생할 수 있습니다. 저는 사람들과 협력하여 문제를 해결하기 위해 열심히 노력할 것입니다. 그러나 귀하는 문제를 해결하고 지침을 따르기 위한 기술적인 능력이 있어야 합니다. 그렇게 할 수 없다면 주저하면서 진행해야 합니다.
파이썬 3.8 이상
코볼트CPP
비전 모델이 필요하지만 llmii-run.bat를 사용하여 열면 처음 실행될 때 Huggingface의 Bartowski 저장소에서 MiniCPM-V 2.6 Q4_K_M gguf 및 F16 프로젝터를 다운로드합니다. 이를 사용하지 않으려면 대신 llmii-no-kobold.bat를 열고 Koboldcpp.exe를 열고 원하는 모델을 로드하세요.
저장소를 복제하거나 ZIP 파일을 다운로드하여 추출하세요.
Windows용 Python을 설치합니다.
KoboldCPP.exe를 다운로드하여 LlavaImageTagger 폴더에 넣습니다. 이름이 KoboldCPP.exe가 아닌 경우 KoboldCPP.exe로 이름을 바꿉니다.
llmii-run.bat
실행하고 EXIFtool이 설치될 때까지 기다립니다. 완료되면 파일을 다시 시작해야 합니다. 터미널 창에서 호출한 경우 창을 닫았다가 다시 열어야 합니다. 그런 다음 Python 환경을 생성하고 모델 가중치를 다운로드합니다. 다운로드 용량이 꽤 크고(6GB) 진행률 표시줄도 없지만 이 작업은 한 번만 수행하면 됩니다. 완료되면 KoboldCPP가 시작되고 터미널 창 중 하나에 Please connect to custom endpoint at http://localhost:5001
라는 메시지가 표시되면 준비가 완료됩니다.
저장소를 복제하거나 ZIP 파일을 다운로드하여 추출하세요.
Python 3.7 이상이 아직 설치되지 않은 경우 설치하십시오. Homebrew를 사용할 수 있습니다.
brew install python
ExifTool을 설치합니다:
brew install exiftool
macOS용 KoboldCPP를 다운로드하여 LLMImageIndexer 폴더에 넣습니다.
LLMImageIndexer 폴더에서 터미널을 열고 다음을 실행합니다.
chmod +x koboldcpp-mac-arm64 ./llmii-run.sh
저장소를 복제하거나 ZIP 파일을 다운로드하여 추출하세요.
Python 3.7 이상이 아직 설치되지 않은 경우 설치하십시오. 예를 들어 Ubuntu에서 배포판의 패키지 관리자를 사용하세요.
sudo apt-get update sudo apt-get install python3 python3-pip
ExifTool을 설치합니다. 우분투에서:
sudo apt-get install libimage-exiftool-perl
KoboldCPP 릴리스에서 Linux 배포판에 적합한 KoboldCPP 바이너리를 다운로드하여 LLMImageIndexer 폴더에 넣습니다.
LLMImageIndexer 폴더에서 터미널을 열고 다음을 실행합니다.
chmod +x koboldcpp-linux-x64 ./llmii-run.sh
모든 플랫폼에 대해 스크립트는 Python 환경을 설정하고, 종속성을 설치하고, 필요한 모델 가중치(총 6GB)를 다운로드합니다. 이 초기 설정은 한 번만 수행되며 다운로드 속도에 따라 몇 분 정도 소요됩니다.
LLMImageIndexer GUI를 실행합니다:
Windows: llmii-run.bat
실행
macOS/Linux: python3 llmii-gui.py
실행
KoboldCPP가 실행 중인지 확인하세요. KoboldCPP 창에 다음 메시지가 나타날 때까지 기다리십시오.
Please connect to custom endpoint at http://localhost:5001
GUI에서 인덱싱 설정을 구성합니다.
대상 이미지 디렉터리를 선택하세요.
API URL 설정(기본값: http://localhost:5001)
생성할 메타데이터 태그 선택(키워드, 설명)
추가 옵션 설정(하위 디렉터리 크롤링, 파일 백업 등)
프로세스를 시작하려면 "이미지 인덱서 실행"을 클릭하세요.
GUI의 출력 영역에서 진행 상황을 모니터링합니다.
디렉터리 : 대상 이미지 디렉터리(기본적으로 하위 디렉터리 포함)
API URL : KoboldCPP API 엔드포인트(다른 머신에서 실행 중인 경우 변경)
API 비밀번호 : KoboldCPP 설정에 필요한 경우 설정하십시오.
캡션 : LLM이 이미지를 설명하고 XMP:Description에서 설정하도록 합니다(처리 시간이 두 배로 늘어남).
GenTokens : LLM이 생성할 토큰의 양
데이터베이스에 없는 처리된 파일 건너뛰기 : llmii.json 데이터베이스에 없더라도 UUID 및 키워드가 있는 파일을 다시 처리하려고 시도하지 않습니다.
재처리 실패 : 마지막 라운드에서 실패한 파일이 있으면 다시 처리를 시도합니다.
모두 재처리 : 이미 처리된 파일은 데이터베이스에 저장되며 나중에 다시 시작하면 건너뛰어 모든 작업을 다시 수행합니다.
하위 디렉터리를 크롤링하지 마세요 : 하위 디렉터리 검색을 비활성화합니다.
쓰기 전에 백업하지 마세요 : 백업 파일 생성을 건너뜁니다. (참고: 이는 처리 및 후처리에 적용됩니다. 후처리를 활성화하고 이 항목을 선택하지 않은 상태로 두면 두 번째 백업이 생성됩니다!)
척 모드 : 파일이나 데이터베이스에 쓰지 않고 처리를 시뮬레이션합니다.
처리 건너뛰기 : 키워드 처리를 사용하고 시작하기 전에 디렉터리의 모든 이미지를 확인하지 않으려면 이 상자를 선택하세요.
키워드 : 새 키워드를 지우고 작성하거나 기존 키워드를 업데이트하도록 선택합니다.
사후 처리 키워드 : 키워드를 생성된 대로 유지하고, 일치하는 키워드에 모든 동의어를 적용하여 키워드를 확장하거나, 일치하는 동의어를 가장 빈번한 동의어로 대체하여 Dedepe 키워드를 사용합니다. 이러한 옵션은 '처리 건너뛰기' 상자를 선택하지 않는 한 인덱서가 완료된 후에 발생합니다.
자세한 내용과 문제 해결 단계는 위키를 참조하세요.
기여를 환영합니다! 언제든지 Pull Request를 제출해 주세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
메타데이터 조작을 위한 ExifTool
로컬 AI 처리를 위한 KoboldCPP
GUI 프레임워크용 PyQt6
손상된 JSON 구문 분석에 대한 도움말을 위해 Busted JSON 및 Json Repair를 수정합니다.