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

アプリケーション

画像生成AIで大量生成した画像の整理に良さそうなアプリケーションを探していたところ、とても動作が軽く、使い勝手の良いアプリケーション“Eagle”を見つけましたので、レビューしてみたいと思います。

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

画像生成AIのStableDiffusionですが、登場からわずか3ヶ月弱でものすごい進化を遂げており、NovelAIの登場など、特にサブカル的なイラストの生成において、まさに日進月歩、といった感じです。
今までのイラスト作成とは異なり、指定した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です。
凄いことに、先ほど挙げた条件のすべてを満たす、ものすごく便利なアプリでした。

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

自動インポート機能を利用して、生成した画像はすべてEagleで管理!

Eagleは取り込んだ画像を、ライブラリごとに作成されたディレクトリにコピーして、DB情報とともに管理しています。
つまり、StableDiffusionが出力した画像(通常はoutput/img2imgなど)をEagleに取り込むと、StableDiffusion配下と、Eagleのライブラリディレクトリ配下に二重に画像が存在することになります。

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

この管理方法では、ストレージの容量が倍の速度で埋まっていきますので、適切とは言いがたい状態です。
そのため、今回は画像はすべてEagleで管理することにしました。

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

キモはファイルを「移動する」ことで、元のディレクトリには残りません。
元が無くなってしまうと管理がわかりづらいのでは?と思いますが、すべてEagleで管理するのであれば問題ありません。

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

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

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

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

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

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

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

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

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

自動的に取り込まれた画像

私は、あとからPromptの内容を参照できるように、txtファイルも同時に出力するようにしています。
このため、ライブラリには画像とテキストの両方が表示されています。

このままでは、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で出力された画像群に対し、評価が付いていないものをフィルタリングし、「評価済み」のラベルを付けています。
こうすることで、評価を行っていない画像を一発で表示することができ、作業がはかどります。

体のパーツが欠けたり、足が3本あったりするようなものは削除対象ですが、これらは評価の際に★1を付けるようにしています。
あとで★1のものを抽出→削除でOKです。

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

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

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

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

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

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

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

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

これだけのファイルを扱ってもサクサク動きますので、安心です。
機能が良くても重たくてもたつくと、それだけでストレスですからね…。

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

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

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

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

  • PNG内のチャンクに保存されたメタデータを表示
    これは、ぜひ対応してほしい機能です。
    Automatic1111はPrompt情報をPNGのチャンクにメタデータとして保存可能ですが、Eagleでは呼び出せないため、私はtxtファイルを別途書き出しています。
    チャンク内のメタデータが表示できれば、最強です。是非対応していただきたい…
    検索もできると超神アプリ確定です。
  • 任意のフィルタを適用した状態で起動してほしい
    pngのみ表示したいので、フィルタを保存していますが、できればアプリ起動時に、任意のフィルタを適用した状態で利用できると便利かと思います。
    もしくは、フォルダに適用したフィルタを覚えておくオプション機能が欲しいです。

上記2点、対応してくれると神ツールになると思います。

気になるお値段

すこぶる便利な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と組み合わせて使うには、最強の画像管理ツールかと思います。

コメント

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