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 の開発者はおそらくファイル メタデータ スキーマの第一人者であり、メタデータを配置する適切な場所を私が期待する以上によく知っています。私はこれをできる限り「影響を少なく」することに多くの時間を費やしましたが、中央のデータベースや情報リポジトリがなくても処理された画像の状態を追跡できる機能を維持し、ファイルをどこにでも移動したり名前を変更したりすることができます。ただし、これらのフィールドのデータが画像に悪影響を及ぼさないようにする必要があります。
これはかなり技術的なプロセスです。すべてがうまくいけばいいので、それを実現しようとしましたが、他のマシンやプラットフォームでこれをテストする能力は限られている(再テストできない)ため、いくらでもバグが発生する可能性があります。私は人々と協力して問題を解決するよう努めますが、トラブルシューティングを行って指示に従うための技術スキルが必要です。それができない場合は、躊躇せずに続行する必要があります。
Python 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)、進行状況バーは表示されませんが、これを行う必要があるのは 1 回だけです。それが完了すると、KoboldCPP が開始され、ターミナル ウィンドウの 1 つが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をインストールします。 Ubuntu の場合:
sudo apt-get install libimage-exiftool-perl
Linux ディストリビューションに適切な KoboldCPP バイナリを KoboldCPP リリースからダウンロードし、LLMImageIndexer フォルダーに配置します。
LLMImageIndexer フォルダーでターミナルを開き、次を実行します。
chmod +x koboldcpp-linux-x64 ./llmii-run.sh
すべてのプラットフォームで、スクリプトは Python 環境をセットアップし、依存関係をインストールし、必要なモデルの重み (合計 6 GB) をダウンロードします。この初期セットアップは 1 回だけ実行され、ダウンロード速度に応じて数分かかります。
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)
生成するメタデータ タグを選択します (キーワード、説明)
追加オプションを設定します (サブディレクトリのクロール、バックアップ ファイルなど)
「Run Image Indexer」をクリックしてプロセスを開始します。
GUI の出力領域で進行状況を監視します。
ディレクトリ: ターゲット画像ディレクトリ (デフォルトではサブディレクトリが含まれます)
API URL : KoboldCPP API エンドポイント (別のマシンで実行している場合は変更します)
API パスワード: KoboldCPP 設定で必要な場合に設定します。
キャプション: LLM に画像を記述させ、それを XMP:Description に設定します (処理時間が 2 倍になります)
GenTokens : LLM が生成するトークンの量
データベースにない処理済みファイルをスキップする: llmii.json データベースにない場合でも、UUID とキーワードを持つファイルの再処理は試行されません。
再処理に失敗しました: 最後のラウンドでファイルが失敗した場合、それらのファイルの処理が再度試行されます。
Reprocess ALL : すでに処理されたファイルはデータベースに保存されており、後で再開するとスキップされ、最初からやり直しになります。
サブディレクトリをクロールしない: サブディレクトリのスキャンを無効にします
書き込み前にバックアップを作成しない: バックアップ ファイルの作成をスキップします (注: これは処理と後処理に適用されます。後処理を有効にしてこれをオフのままにすると、2 番目のバックアップが作成されます。)
ふりモード: ファイルやデータベースに書き込まずに処理をシミュレートします。
処理をスキップ: キーワード処理を使用し、開始前にディレクトリ内のすべての画像をチェックしたくない場合は、このボックスをチェックします。
キーワード: 新しいキーワードをクリアして書き込むか、既存のキーワードを更新するかを選択します
キーワードの後処理: キーワードを生成されたままにするか、すべての同義語を一致するキーワードに適用してキーワードを拡張するか、一致する同義語を最も頻繁に使用される同義語に置き換えることによってキーワードをデデペします。これらのオプションは、「処理をスキップ」ボックスがチェックされていない限り、インデクサーの完了後に実行されます。
詳細とトラブルシューティング手順については、Wiki を参照してください。
貢献は大歓迎です!お気軽にプルリクエストを送信してください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。
メタデータ操作のための ExifTool
ローカルAI処理用のKoboldCPP
GUI フレームワークの PyQt6
壊れた JSON 解析をサポートするために、バステッド JSON と Json Repair を修正しました。