見出し画像

【生成AI】StableDiffusionの画像をPythonで整理してみた話

生成AIとお話している皆さん、こんにちは!

最近StableDiffusionでホイホイ画像生成していて、次作る時のために設定やプロンプトをメモしているのですが、毎回手作業で整理するのも面倒だし、せっかく生成した画像にはウォーターマークも入れておきたい。

そんなとき、StableDiffusionの生成画像にはプロンプトや設定などの情報が入っていることを教えてもらって、そこで閃いたんです。

生成情報を持っているなら「Pythonを使えば生成情報の整理とか、ついでに画像編集までできるんじゃないか」と。

そこで今日は、生成画像の整理と編集をPythonで実際にやってみた話をお届けします!

やりたいことの整理

今回解決したかった課題は2つ:

  • 画像を効率的に管理したい
    手作業で毎回生成情報と画像をまとめてメモ作るのは中々疲れる。

  • 画像にウォーターマークを入れたい
    せっかく生成した画像だから、自分の作品だと分かるようにしたい。

手作業だとメモ作るだけで1枚1分くらいかかってしまうし、そこからウォーターマーク足して、とかこれを何十枚も繰り返すのは正直しんどい。

Pythonできるのか、Claudeに相談してみた

早速Claudeに聞いてみると:

  • 生成画像の持っているメタデータから生成情報を抽出
    → Pythonなら読み取れる

  • ウォーターマークを載せたい
    → Pythonならライブラリ使って画像編集もできる

  • 生成情報と画像をまとめてメモを作成できる?
    できる、ついでにタグも付けられる

おぉ、これはいけそうじゃないの?

実際にコードを書いてもらって試してみた

Claudeにコードを書いてもらって、いざ実行...

案の定、最初はエラーが出た

やっぱり最初はうまくいきませんでした。
エラーの原因を調べてみると、同じ名前の関数が2つあって、そのうち1つがおかしな書かれ方をされていました。

でも、これはある意味想定内。
やっぱりAIにコード書いてもらうのは直すまでがセットですね。

にしても「このコードが中途半端でおかしいですよ、直してください」とか言うけど、コレ書いたのあなたですからね!

結果:手作業より圧倒的に早くなった!

修正後のスクリプトを動かしてみると...なんと!

  • 手作業:生成情報のコピペと画像貼付で1枚1分ぐらい(画像加工はなしで)

  • スクリプト:画像加工込みで、画像20枚処理でも5秒もかからない

手作業で1枚分の処理する時間より、スクリプトで20枚処理する方はるかに早い!これは予想以上の効果でした。

完成したサンプル

Pythonで編集したウォーターマーク付き画像と、
生成されるマークダウンファイルはこんな感じ。

ウォーターマーク付き画像

右下にちょこんと名前入れてみました

自動生成されるマークダウンファイル

この形でメモを量産してくれる!

画像の処理だけでなく、メタデータを読み取ってマークダウンファイルも自動生成してくれるので、後から「この画像どんな設定で作ったっけ?」というときも安心です。

あとタグ付けも組み込んでくれて、モデルとサンプラーを入れてくれました。あとあとモデル単位で検索できたりしてよさそうです。
このへんはClaudeのセンスのよさを感じる。

やはりPython...!Pythonはすべてを解決する...!

今回の体験で改めて感じました。
ちょっとした自動化でこんなに楽になるなんて。
Pythonはいいぞ・・・!

せっかくなので、今回作ったコードをGitHubで公開してみます。書いたのはClaudeですけど・・・。

ちょっと難しいかもしれないので、Python分からないとなんぞやってなるかもですが・・・、こちらからコードとか見られます。

おわりに

今回は「面倒だから自動化したい」という単純な動機から始めましたが、想像以上に便利なツールができました。

正直コードは改善の余地はあるのですが、とりあえず使えればよし!
改善はまたあとから考えます。

もう少し使いやすい形にしてから公開しようかなとも思いましたが、思ったより時間掛かりそうだったので断念しました。もし使ってみたい!という方がいたらがんばって手直しします。

今回プログラミング、Pythonの知識前提ではありますが、生成画像の整理について同じような課題を抱えている方の参考になれば嬉しいです。

それではまた!