Featured image of post AIエージェントが画像を自動生成し、スワイプ評価で好みを学習する仕組みを作った

AIエージェントが画像を自動生成し、スワイプ評価で好みを学習する仕組みを作った

ComfyUIとAIエージェントのローカル画像生成を自動化し、スマホのスワイプ評価をフィードバックとして生成内容を最適化するシステムの作り方。実測データとハマりどころ付き。

結論: 「生成→評価→学習」のループを自動化した

AI画像生成で一番面倒なのは「作ること」ではなく「選ぶこと」だ。1枚3〜4分で量産できる一方、数百枚のストックから好みの1枚を見つけ、その傾向を次の生成に反映するのは手作業では追いつかない。

そこで作ったのが、アイドル時に自動生成 → スマホのスワイプで評価 → 好みを学習して次の生成に反映するループだ。画像生成はローカルのComfyUIで完結するので、API課金ゼロで動く。

システム構成

  • 生成デーモン: マシンがアイドル(負荷2.0未満)のとき自動生成し、ストックを蓄積(上限200枚で停止)。macOSならlaunchdで常駐化して再起動後も自動復帰
  • 評価UI: スマホのブラウザからアクセスするスワイプ評価画面。右スワイプ=良い、左スワイプ=ぼつ。LAN内+トークン認証で自分だけがアクセス可能(画像生成の内容がプライベートでも安心)
  • ギャラリー: 良い評価の画像だけが自動でギャラリーに蓄積される。タップで原寸表示

評価画面(左)とGoodギャラリー(右)

フィードバックループの実装ポイント

  1. 重み付き選択: シナリオごとのgood率を集計し、重み = 1 + (good-bad) ÷ (good+bad) × 2 で選択確率を調整。評価データがなければ均等に生成
  2. バッチ反映: 5枚生成ごとにフィードバックをまとめて反映。毎回反映すると重みがチョコチョコ変わって生成が不安定になる
  3. シード近傍生成: 良い評価が付いたシードの±5を10%の確率で生成。「好みの延長線上」を狙う
  4. モデルも可変: 2つのモデル(アニメ寄り/実写寄り)を使い分け、評価で生き残る方を自動選択。悪い評価が続いた要素は重みが0になり自然淘汰される

実測データ

  • 生成ペース: 約12枚/時(1枚4〜5分・768×1024+高解像度化)
  • ストック200枚で約400MB。ディスクの心配はほぼ無し
  • フィードバック反映後、低評価シナリオの生成比率が明確に低下(100回シミュレーションで6%まで減衰)

ハマった罠

  1. キュー飢餓: 複数スクリプトが同時にComfyUIへ生成を投げると、待ち行列に押し出されてタイムアウトする。対策は「ComfyUIのキューが空くのを待ってから次のジョブを投げる」
  2. シード使い回し: 別のプロンプトに同じシードを使うと不自然な絵になる。1枚1枚を新シードで生成するのが正解

応用

この「生成→評価→重み付け」のループは画像に限らない。テキスト生成の文体、商品レコメンド、UIデザイン案など、「大量生成+人間の好み」が絡む場所ならどこにでも転用できる。生成AIが日常化した今、勝負どころは「どう選び、どう育てるか」の方に移っている。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。