StableDiffusionで大量生成したAI絵管理の最適解!超高速画像管理アプリ“Eagle”を試す

アプリケーション

画像生成AIで大量生成した画像の整理に良さそうなアプリケーションを探していたところ、とても動作が軽く、使い勝手の良いアプリケーション“Eagle”を見つけましたので、使い始めてみました。
今では10万枚を超える画像をEagleで管理していますが、AI絵の生成には手放せないソフトとなっています。
素晴らしく便利なソフトなので、大量に生成している方は、是非使ってみることをお勧めします!

画像生成AIは大量の画像との勝負

画像生成AIは今までのイラスト作成とは異なり、指定したPromptで大量に画像生成→気に入った絵を探すことになりますので、あっという間にストレージが大量の画像で埋まります。

あっという間に埋まるストレージ

上の画像は、出力した絵を格納しているフォルダですが、ファイル数は7万3千、このうち半分はPromptなどの情報を記載したテキストファイルなので、画像数は3万6千枚といったところでしょうか。

出力したPromptに応じてディレクトリ分けされるとはいえ、これだけ大量の画像になるととても手作業で整理が追いつく訳がありません。
しかもPromptの最初はほぼ固定(Promptは最初の方がより反映されるので、固定になりがち)なので、ディレクトリを見ても訳わからん、ということになります。

ディレクトリ名だけだと何がなんだか…

フォルダにサムネイル画像が表示されていますが、Windowsの仕様では上半分しか表示されず、下は隠れてしまっているので、さらにわかりづらさに拍車をかけています。
これ、どうにかならんのか…

画像整理専用のアプリケーションを探す

手動での画像管理では限界がありますので、画像管理に特化したアプリケーションを探すことにしました。
アプリケーションを探す条件は以下となります。

  • フォルダではなく、タグ付けで画像管理が可能なこと。
    Automatic1111が生成するフォルダ名だと、promptに依存するので、容易にpromptの冒頭部分を変更できない…(出力中にフォルダが別に分かれてしまう)
  • 大量の画像を扱っても軽く動作すること
    現時点で3万枚を軽く超えており、今後も画像が増えていくことを考えると、とにかく軽いことが必須です。
  • レーティング機能は必須
    大量に生成した画像を分けるのに、やはり一番簡単な方法はレーティング(評価)でしょう。
    生成された絵に対して、1~5段階の★を付けておけば、あとでお気に入りのものだけピックアップするのが簡単です。
  • 画像にタグ付け可能
    画像生成時のPromptやSeedなどの情報はpng内とテキストファイル(Automatic1111のオプションで設定可能)に保存されるので確認できますが、使用した学習モデル(ckptファイル)はわかりません。
    複数のモデルを使い分ける時に、生成された画像にタグ付けしておくと便利です。
  • いろいろな条件で検索可能
    生成した日時、画像サイズ、タグ、レーティングでの検索ができると便利です。
  • 画像をブラウザにドラッグ&ドロップできること(twitterやpixivへの投稿)
    生成した画像は、twitterやpixivに投稿することが多いのですが、その際にアプリケーションからブラウザにドラッグ&ドロップできないと非常に面倒です。

大量の画像整理に特化した素材管理アプリ“Eagle”

先ほどの条件で、有料、無料を問わずいろいろなアプリを探していましたが、なかなか良いものにたどり着きませんでした。
フリーソフトでレーティング可能なXnViewは数万枚レベルを扱うには重たいのと、レーティング時の動作が重たい上に、挙動が怪しいので使い物になりませんでした。

長らくACDSeeを使っていましたが、最近のACDSeeはいろいろ機能が付いて重たくなってきた上に、そもそも画像管理のみが目的なので、もっと軽量、安価、サクサク動く方が好みです。

そんなときに見つけたのが、今回ご紹介するEagleです。
凄いことに、先ほど挙げた条件のすべてを満たす、ものすごく便利なアプリでした。

Eagle - 画像収集と管理するアプリ
デザイン事例、スクリーンショット、画像、動画、音声などの素材を簡単に整理し、アイデアを生み出し、仕事の効率をさらに高めましょう!

StableDiffusionが生成した画像を自動的にEagleに取り込み、処理するフローを自分なりに作ってみましたので、その方法をレビューしてみたいと思います。
また、Eagleを使っていて良い!と思った点を紹介していきたいと思います。

超便利!Automatic1111用拡張機能「Eagle-pnginfo」を使ってみる

Automatic1111用の拡張機能(Extensions)に、Eagleと連携するためのEagle-pnginfoというものがあります。

GitHub - bbc-mc/sdweb-eagle-pnginfo: Send your creation image to Eagle with PNGinfo. Extension for Stable Diffusion UI by AUTOMATIC1111
Send your creation image to Eagle with PNGinfo. Extension for Stable Diffusion UI by AUTOMATIC1111 - bbc-mc/sdweb-eagle-pnginfo

この拡張機能は、Eagle側の自動インポートは使わずに、Automatic1111が画像を保存する際、Eagleに直接画像を送ることが可能なので、自動インポートよりスマートといえます。

また、以下の点も便利です。

  • PNGinfoに保存されるテキスト情報(pngのチャックデータ)をメモとして保存可能、いちいちAutomatic1111でPNGinfoを実行しなくても確認出来る(ただし、なぜかLora関連のタグはメモとして記録されない様子)
  • モデル名やモデルハッシュなどの値をタグとして保存

ただし、デメリットが2つあります。
1つめは、Automatic1111で設定した画像保存先にも画像が保存されてしまうため、画像が二重に保存されてしまうというという点。

Eagleは取り込んだ画像を、ライブラリごとに作成されたディレクトリにコピーして、DB情報とともに管理しています。
つまり、StableDiffusionが出力した画像(通常はoutput/img2imgなど)をEagleに取り込むと、StableDiffusion配下と、Eagleのライブラリディレクトリ配下に二重に画像が存在することになります。
この管理方法では、ストレージの容量が倍の速度で埋まっていきますので、適切とは言いがたい状態です。

Eagleでの画像保存方法。1ファイルごとにディレクトリが作られている。

この問題については、自動的にファイルの削除を行うフリーソフト「fdel」を使って、30分に一度のタイミングで、Automatic1111の画像保存先のファイルを自動的に削除することで解決可能です。
10年位前のソフトですが、Windows11でも問題無く動作しています。

fdelの詳細情報 : Vector ソフトを探す!
常駐型の指定日数が経過したファイルの自動削除ツール

2つめは、i2iのバッチ処理で出力先を指定してしまうとEagle-pnginfoが発動せず、Eagleに画像が取り込まれない点です。
おそらく、画像生成と違う保存先に画像を保存するので、Eagle-pnginfoのEagleへの画像送出ロジックが機能していないためと思われます。
これについては、バッチ処理で生成する際に、出力ディレクトリを空の状態にしておけば、通常の画像生成と同様にファイルが保存されますので、問題なくEagle-pnginfoの機能が利用できます。

Eagle-pnginfoのお勧め設定

Send all image to Eagle
ONにします。でないと、Eagleに画像が転送されません。

Save Generation info as Annotation
これもONです。
pngのチャンクデータに格納されるテキスト情報が、eagleのメモ欄にも記録されます。
いちいち、automatic1111のpng infoを使う必要が無いので楽です。
この機能が抜群に便利でして、以前生成した画像を探すときに、メモからpromptの単語を入れるだけで簡単に探せるのです。

複数の語で検索するときはカンマ区切りで単語を入力すればOK。
promptをタグにして管理する方法もありますが、タグにするとpromptが1つずつ分割してタグとなり、タグ一覧がとんでもないことになります。

これ、Promptとしてはまだ短い方ですが、それでもこの有様。
Promptの一部をコピペしたい時に、タグだと不向きですが、メモであれば簡単にコピペ可能です。
また、視認性もメモの方が優れてますし、メモの一部で検索をかけることも可能(複数単語指定も可)ですから、使い勝手としてはタグよりも便利かと思います。
というわけで、Promptはタグではなく、アノテーション(メモ欄)を使うのが便利です。

Save positive prompt to Eagle as tags
これはOFFにしています。
というのも、これには理由が2つあって、1つめはタグはできるだけ少なくしたいということ。生成した絵のモチーフ、シチュエーション(例えば女子高生、着替えとか)、あとはpixivやTwitterに投稿した情報などを管理していますので、ここにタグの内容が放り込まれると、管理に混乱してしまいます。
2つめは、Promptの内容はタグを使わなくても、「Save Generation info as Annotation」の設定でメモ欄に記録されていますので、Promptを検索したい場合はメモ欄を使うようにすれば問題無いためです。

Save negative prompt as
ここはNoneにします。3番目と同じく、メモ欄を見れば良いので。

Additional tag pattern
ここには「Model」を入れます。そうすることで、「model:anything_v4.5」のように、モデル名がタグに記録されます。
ハッシュ値だとぱっと見た目でどのモデルを使ったかわからないので、これは便利です。

Modelと入力しても、モデル名がタグに記録されない場合は、Automatic1111側の設定変更が必要です。その場合は、Automatic1111のUI設定にある、「モデルの名称を生成情報に追加」をONにしてください。(以下は日本語UIでの表示名です)

(option) FolderID or FolderName on Eagle
これは空欄でOKです。

(option) Allow to create folder on Eagle, if specified foldername dont exists
このチェックはOFFにしています。

自動インポート機能を利用してEagleで管理する方法

Eagleには、特定のフォルダに出力された画像を自動的にライブラリに取り込む、自動インポート機能があります。
自動インポートで指定したディレクトリに生成されたファイルは、自動的にEagleのライブラリに移動され、Eagleの管理下となります。

キモはファイルを「移動する」ことで、元のディレクトリには残りません。
Eagle-pnginfoを使う場合は、fdelで自動削除する必要がありますが、自動インポート機能を使えばその必要はなくなります。
元が無くなってしまうと管理がわかりづらいのでは?と思いますが、すべてEagleで管理するのであれば問題ありません。

Eagle-pnginfoに比べると、チャンクデータをメモやタグ情報として残せない点がデメリットです。

【手順1】Eagle側で自動インポートを設定

まずは、Eagle側で自動インポートを設定します。
私はAutomatic1111を使っていますので、自動インポートには\stable-diffusion-webui\outputフォルダを指定します。

自動インポートで、automatic1111のoutputディレクトリを指定

自動インポートを指定したフォルダには、プロジェクト名のフォルダが自動的に作成されます。
このフォルダの中に保存されたファイルは、自動的にEagleに取り込まれることになります。
なお、サブフォルダは取り込み対象外ですので、必ずプロジェクト名のディレクトリに出力する必要があります。

私はAI_pictureというライブラリ名にしていますので、\stable-diffusion-webui\outputフォルダの中に、AI_pictureというフォルダが作られます。
このフォルダが自動インポート用のものとなります。

【手順2】Automatic1111の出力ディレクトリを変更

続いて、Automatic1111側で、Eagleの自動インポートディレクトリに画像が生成されるように設定を変更します。
Settingタブを開き、paths for savingのtxt2imgとimg2imgの出力先を、output/【ライブラリ名】/に設定変更します。

【ライブラリ名】というのはEagle側のライブラリが入ります。
私はAI_pictureというライブラリにしてますので、output/AI_picture/を指定しています。

ファイル名にPromptを含んでいる場合、%などのコードに置換された文字があるとEagleでサムネイルが表示されないことがあったので、ファイル名の命名規則も変えておきます。
下の設定は、ファイル名にseed値と生成日時をファイル名に指定した場合です。

【手順3】自動的にEagleに取り込まれた画像を分類

自動インポートの設定が終わったら、Automatic1111で画像を生成してみましょう。
出力された画像が自動的にEagleに取り込まれれば、事前準備は完了です。

このままでは、Eagleを導入した意味がありませんので、分類していきましょう。
まずは、分類するためのフォルダを作成します。
今回はとりあえず「女子校生」というフォルダを作成しました。

Eagleでは、画像ごとにタグを設定することもできますが、特定のフォルダに振り分けられたら、自動的にタグを付与することが可能です。
「女子校生」フォルダを作成したら、左側のメニューに表示されたフォルダを右クリック→自動的にタグを設定を選択します。

自動的にタグを追加の入力欄に、「女子校生」と入力し、タグを追加して保存します。
これで、女子校生フォルダに分類したファイルには、すべて自動的に「女子校生」タグが付くようになりました。

つづいて、[ctrl]+[A]ですべてのファイルを選択し、先ほど作成した「女子校生」フォルダにドラッグ&ドロップします。
これで、すべてのファイルに「女子校生」のタグが自動的に付与されました。

【手順4】評価機能を使ってお気に入りの画像を振り分ける

最後に、生成された画像に評価を付けていきましょう。
Eagleでは、★1~5の5段階評価を付けることができます。
評価を付ける際には、以下の手順で行うと簡単です。

  1. フィルターでpng画像のみを選択
  2. [→]キーを押してファイルを切り替えつつ、数字の[1]~[5]キーで評価を付与

フィルタ機能を使うと、簡単にpngのみを一覧表示することができます。
このほか、タグや評価、画像サイズなど様々な条件でフィルタリングできますので、かなり強力です。
また、よく使うフィルタは条件を保存しておき、一発で呼び出すことが可能です。

フィルタ機能を使うと目的のファイルが簡単に見つかる

Eagleの便利なところは、数字キー(通常の数字キーでも、Numキーでも可)の1~5を押すだけで、ファイルに評価を付与することができます。
評価を取り消す場合は[0]を入力します。

この評価付与の作業がとても楽で、[←][→]キーでファイルを切り替えつつ、数字キーを押して評価をどんどん入れていきます。
すべてのファイルに評価を入れていると大変なので、気に入ったものに4~5を付与しています。

【手順5】スマートフォルダを使って評価別の画像を一覧する

評価が終わったら、スマートフォルダを作成します。
スマートフォルダを使うと、様々な条件を指定し、その条件に一致するファイルのみを表示することができます。
要するに、複合条件検索のショートカットみたいな使い方になります。

様々な検索軸が用意されている

評価★5のものだけを表示するのであれば、「評価」「★★★★★」を設定すれば、★5のファイルのみが表示されるようになります。
条件にタグを加えれば、特定のタグで★5のものだけを表示することも可能です。

スマートフォルダの条件設定はかなり強力で、複数の条件によるand、or、not指定も可能ですし、複数の検索条件を組み合わせられますので、適切にタグやファイル名で管理していれば、検索できないものは無いような気がします。

評価・タグの付け方次第で、どんな分類でも対応可能

上記の例では、タグは1種類のみ付与していますが、タグはいくつも付与することができます。
私は、端的に絵の内容を表す語(女子校生、初音ミクなど)のほか、生成に使った学習モデル名をタグで付与しています。

というのも、画像生成時に出力されるtxtファイルには、promptやseed、CFG Sampleなどの値は保存されますが、どの学習モデルを使ったかはハッシュ値で保存されるため、ぱっと見でわからないためです。
複数の学習モデルを使っていると、あとから同じものを生成したいと思っても、思い出せないときがありますので、タグで付与しておくと後に便利です。

ほかには、Twitterやpixivなどに投稿したら、それぞれ「twitter」「pixiv」というタグを付けておくと便利です。
投稿していない作品を抽出するには、「twitter」を除外条件で検索すればOKです。

twitter投稿済み作品

大量に生成した画像のうち、どれを評価したかわからなくなることが多く、評価を付ける際に一度見たものは除外したいときがあります。
そういう場合は、特定のPromptで出力された画像群に対し、評価が付いていないものをフィルタリングし、「評価済み」のラベルを付けています。
こうすることで、評価を行っていない画像を一発で表示することができ、作業がはかどります。

お勧めの管理方法

かなり柔軟にタグ付けなどができますから、いろいろな使い方があると思いますが、私は以下の方法で使っています。

評価
★4~5:気に入った絵に対して付与
★3:気に入っているが、レタッチの必要がある絵に付与
★2:未使用
★1:体のパーツが欠けたり、足が3本あったりするようなもので、削除対象

タグ
twitter:twitterに投稿済み
pixiv:pixivに投稿済み
評価済み:★のレーティングを終わったものに対して付与。(★を付けていないものも対象)

フォルダ分け
第1階層に主カテゴリ(初音ミク、メイドさん、女子校生など)、第2階層に衣装・シチュエーションというように作成

上記のルールで管理していますが、かなり便利です。

promptを設定すると、だいたい100~300枚くらい生成することが多いです。
それら出力されたものは未分類としてEagleに登録されますので、まずはビューアで確認しつつレーティングを行います。この際、★が無いものも結構ありますが、そのままで良いです。
次に、★1の絵を削除します。
削除後、残った絵に対して、評価済みのタグを付与します。これは、目視チェックをしていない絵を防止するためです。
最後に、適切なフォルダに格納し、絵に関するタグを付けて格納完了です。

ほかにもある、Eagleの便利な点

他の画像ビューアや管理ツールと比べて、Eagleの優れている点は以下となります。

Twitterやpixivに、画像のドラッグ&ドロップで投稿可能

Eagleで表示された画像を、そのままブラウザにドラッグ&ドロップすることで、Twitterやpixivに投稿が可能です。
フィルタで画像を探して、好みのものを選んで投稿ができるので、とても便利です。

右上のサムネイルがドラッグ&ドロップ可能

1枚の画像を表示しているビューア時は、右上に表示されているサムネイルをドラッグ&ドロップすれば、同様に投稿が可能です。

スマートフォルダが超絶便利

スマートフォルダという機能があるのですが、これはフォルダにあらかじめ検索条件をセットしておき、スマートフォルダを選択すると自動的にその条件に一致した画像のみが表示される仕組みです。
スマートフォルダの便利なところは、階層構造にすることができ、検索条件を絞り込んで使えるところ。以下のScaleUP済はi2iで拡大処理したもののみを抽出し、★★★★★フォルダでさらに評価★5のものだけに絞り込んでいます。

検索条件は、様々な条件(タグ、メモ、ファイルサイズ、その他Eagleで管理している情報大量)から選択可能で、かつ、それらをand・or条件で複数設定でき、さらに満たす、満たさないようにすることもできます。
例えば、メモにmaidまたはbunny、評価★5をand条件として、メモnsfwを満たさない条件とすると、
「メイドさんまたはバニーガールで、かつ評価★5の画像。ただしnsfwを除く」という条件のフォルダが作成できます。

大量の画像も管理しても動作は軽量

なんと言っても素晴らしいのは、数万枚の画像を放り込んでも極めて軽量ということ。
試しに、3万枚のファイルをライブラリに入れてみましたが、動作が重くなることもなく、サムネイルの表示もほぼ一瞬で、まったくストレスがありません。

これだけのファイルを扱ってもサクサク動きますので、安心です。(現時点で15万枚を管理中)
機能が良くても重たくてもたつくと、それだけでストレスですからね…。
たまに、数千枚生成したときなど動作が重たくなる場合がありますが、その場合はEagleを再起動すれば直ります。

chrome拡張機能を使うと、ブラウザからの画像ドラッグ&ドロップで取り込み可能

ブラウザの画像をEagleにドラッグ&ドロップするだけで、画像をEagleで管理できる拡張機能がリリースされています。
これを使うと、ブラウザで開いた画像素材を簡単にEagle側で管理できます。
しかも便利なのが、その画像のURLをEagle側が保持している、ということ。
どのサイトからダウンロードした画像かわからなくなることはありません。
ネットで見かけたお気に入りのAI絵を保存しておく、なんて時にも便利です。

ぜひ対応してもらいたい追加機能

StableDiffusionが大量に生成する画像を管理するのに便利なEagleですが、いくつか残念な点もあります。
これが対応されると、最強の画像生成AI用管理ソフトとして使えると思います。

  • PNG内のチャンクに保存されたメタデータを表示
    これは、ぜひ対応してほしい機能です。
    Automatic1111はPrompt情報をPNGのチャンクにメタデータとして保存可能ですが、Eagleでは呼び出せないため、私はtxtファイルを別途書き出しています。
    チャンク内のメタデータが表示できれば、最強です。是非対応していただきたい…
    検索もできると超神アプリ確定です。
    この機能については開発元にリクエストとして伝えていますので、いつか実装されると良いなぁ…と期待しています。


    …と思いましたが、上記のEagle-pnginfoを使えば解決するので、問題ありません。
  • 任意のフィルタを適用した状態で起動してほしい
    pngのみ表示したいので、フィルタを保存していますが、できればアプリ起動時に、任意のフィルタを適用した状態で利用できると便利かと思います。
    もしくは、フォルダに適用したフィルタを覚えておくオプション機能が欲しいです。

気になるお値段

すこぶる便利なEagleですが、30日の試用が可能な有料ソフトウェアとなっています。
Eagleの価格は買い切りライセンスで、29.95ドルとなっています。
執筆時のレートで4,200円程度です。
サブスクリプション制ではなく、しかも将来のアップデートにも対応しますので、割安といえるかと思います。
大抵、買い切りのソフトってあっという間にアップデートして、ライセンスは使えなくなり、有償アップグレードの通知がバンバン届くアプリが多いので…。

Eagleの30日無料トライアルは、以下よりファイルをDLしてお試しください。
https://jp.eagle.cool/

Eagleの導入で画像管理が劇的に改善

今までは、Promptの最初の方の名前で生成されるフォルダに画像を格納し、分類していました。
ただし、この方法だと連続生成中にPromptを変更すると、出力されるフォルダが変わってしまういうデメリットがあります。

フォルダが変わらないようにするにはPromptの頭の方を固定するしかないのですが、絵に対する影響が大きいPromptの冒頭部分を変えない訳にもいかず、さらにmasterpiece系の固定Promptを頭の方に置くと、ほぼすべてのディレクトリが同じような名前になってしまい、混乱します。

同じPromptで始まっても、中身は全く別の画像を生成していることもあって、フォルダ名だけの管理では限界がありました。
かといって、すべて手作業で分けるのも面倒…という状態でした。

今回導入したEagleですが、強力なタグ付けと検索機能のおかげで、フォルダ名の呪縛から解き放たれたのはとてもメリット大です。
特に、自動連携でどんどんEagleが画像を取り込み、StableDiffusionと組み合わせて使うには、最強の画像管理ツールかと思います。
今となっては、Eagle無しでのAI絵生成は考えられないですね。

コメント

タイトルとURLをコピーしました