無料のローカル AI を使用して、1 枚もアップロードせずに数百枚の写真を整理しました
あなたはどうか知りませんが、私は何年にもわたって、数千枚とは言わないまでも、数百枚の画像を PC 上に蓄積してきました。それらの中には、私が Canon Rebel で撮った写真もあれば、妻または私が携帯電話を買い替えたときに写真のダンプから取ってきたものもあります。ご想像のとおり、これはかなり厄介なことになりました。さまざまなフォルダーに画像がいっぱいありました。私の最大の不満は、ファイル名が IMG_1543.jpg のような汎用的なものであることです。これでは、画像に何が含まれているかについてほとんど何も分からないため、特定の画像を見つけようとすると、サムネイルのあるフォルダーをスクロールすることになります。
私の iCloud はすでにいっぱいです。古い写真を保存して整理するためだけに毎月 Apple にこれ以上のお金を払いたくありません。たとえば、大規模な写真コレクションの整理に役立つ、digiKam のような無料の写真管理アプリケーションもあります。どちらのオプションも簡単かもしれませんが、別の写真管理アプリをインストールしたり、すべての画像をクラウドにアップロードしたりするのではなく、ミニ PC 上のローカル AI を使用して自分で何かを構築できるかどうかを試してみたかったのです。私はすでにローカル AI を使用して、プライベートなドキュメントの整理や、日常的なタスクやイライラするタスクを自動化するのに役立つその他の優れたプロジェクトを実行していましたが、これは素晴らしい使用例のように思えました。
私の計画は、AI にフォルダー内の各写真を見てその中に何が入っているかを識別させ、わかりやすいファイル名を生成して、適切なフォルダーに分類することでした。ファイルを 1 つずつ AI モデルにアップロードする必要はありません。私のミニ PC にはすでに Ollama と LM Studio がインストールされていましたが、私は Ollama をよく使っていました。ただし、このプロジェクトでは、LM Studio を使用しました。これは、LM Studio に組み込まれたローカル サーバーによって、Python スクリプトが AI モデルと直接通信できるためです。これらはすべて無料です。少し時間をかけて少しいじってみるのもいいでしょう。
LM Studio と Qwen3-VL-2B Instruct を使用して写真に何が写っていたかを特定しました
実際に機能したビジョンモデルを見つける
少しグーグルで調べた結果、Qwen2-VL-2B-Instruct Q4_K_M が適していると思いました。これは視覚機能を備えた軽量モデルであり、画像を調べてその内容を分析できます。残念ながら、このモデルは私にとって何度も失敗しました。コンテキスト ウィンドウで許可されているよりも多くのトークンが必要でした。コンテキストの長さを長くしようとしましたが、数回試した後、これはうまくいかないことがわかりました。
もう少し調査した後、Qwen3-VL-2B-Instruct をダウンロードして LM Studio にロードしました。次に、新しいチャットを開いて写真を追加して、ankfa のテストを実行しました。私はモデルに、主要な主題を特定し、何が起こっているのかを説明し、設定を特定するように促しました。なるほど、この新しいモデルは要望通りにやってくれました。画像を分析して結果が得られるまでに 20 秒もかかりませんでした。ミニ PC 上でローカルに実行していることを考えると、これは妥当だと思われました。
モデルは予想以上に多くのことを識別できた
私がモデルに与えた最初の画像は、14 年前に参加したカンファレンスからのものでした。それはオーランドで開催された Gartner Symposium/ITxpo でした。単にアリーナやホールで立っている人々を描写するのではなく、画像内のテキストを読み取り、会議と年を正確に識別しました。また、背景についてもよく説明されており、数人の人々が白いオットマンに座って、青い PowerPoint プレゼンテーションが表示されたモニターを見ている様子が説明されていました。次に、愛犬、ビーチ、人々などの写真を撮ってみました。モデルは被写体と設定を非常にうまく認識しました。とはいえ、一部の説明は他の説明よりも役に立ちました。もちろん、すべての写真を一度にアップロードして分析するつもりはありませんでした。このプロセスを自動化したいと考えていました。
シンプルな Python スクリプトで名前の変更と編成を処理しました
変更を加える前に結果を確認する
Python スクリプトを使用して、写真をフォルダーから AI モデルに一度に 1 つずつフィードしました。スクリプトは説明を生成し、ファイル名を提案し、自然、ペット、その他などのカテゴリを割り当てました。また、私のミニ PC が負荷を処理できるかどうかを確認するために、分析前に写真のサイズが変更されました。
スクリプトの実行が完了すると、元のファイル名、置換名、説明、カテゴリを含む CSV ファイルが生成されます。この時点まで、私の画像はどれも修正されていませんでした。次に、CSV ファイルを調べて、置換されたファイル名が意味をなしていること、説明とカテゴリが適切であることを確認する必要がありました。ファイル名の中には一般的すぎるものもあり、オーロラの 2 つの異なる画像に同じ名前と説明が付けられているケースもありました。
CSV ファイル内のこれらの間違いを修正し、完了したら、スクリプトの apply コマンドを実行して、新しい名前の画像のコピーを含む分類されたフォルダーを作成しました。元の写真はまだ「画像」フォルダーにあり、名前を変更した写真は「整理された写真」というフォルダーにありました。これで、整理された写真と照らし合わせて検査し、すべてが正しく設定されていることが確認できたら削除できるようになりました。
40 分以内に 240 枚以上の写真を整理して名前を変更しましたが、結果は完璧ではありませんでした
最初は 1 枚の画像から始まり、次に 20 枚の画像を試し、最終的には 240 枚を超える画像が含まれているフォルダーの 1 つでスクリプトを実行しました。 40 分もかからずに、CSV ファイルを確認し、カテゴリ内のより一般的な名前のいくつかを編集しました。写真には、風景、動物、人物、アクションショットなどが含まれていました。
途中でいくつかの速度の上昇はありましたが、全体として、モデルはこの大きな画像フォルダーをうまく処理しました。これを手動で行おうとすると、何時間もかかっていたでしょう。このようにして、スクリプトを実行して終了し、AI モデルに任せることができました。
関連情報は以下のリンクからご確認いただけます