🚀 より良い!より速く!より強力に!
このアップデートでは、人工的な制限を削除し、レイアウトの非対称性を修正し、グリッドをより予測可能で整然かつメモリーセーフにしました。
📂 ファイル名と保存
- 以前: 秒単位のタイムスタンプは、高速保存時に衝突する可能性がありました。
- 変更後: ミリ秒単位のタイムスタンプにより、連続した保存でも一意な名前が保証されます。
🗂️ フォルダ構成
- 以前: 結果は
outputs/🔬 Sampler × Scheduler Grid (Forge)(パスに絵文字が含まれる)に保存されていました。
- 変更後: 今や
outputs/sampler_scheduler_grid_forge に保存されます——より洗練され、OSおよびスクリプトに優しい形式です。
🏷️ 画像ラベル
- 以前: 上部と側面の余白に異なる計算式(
+6 と +40)が使われており、グリッドが視覚的に非対称になっていました。
- 変更後: 一貫した
label_gap パラメータを導入。上部・側面ともに同じルール(2 * label_gap)を適用し、洗練された調和のとれた対称性を実現しました。
🛑 生成の停止
- 以前: 「🛑 グリッド生成を停止」の挙動が一貫していませんでした。
- 変更後: XYグリッドおよびバッチループ内に
state.interrupted のチェックを追加。停止が確実かつ予測可能になりました。
🖼️ グリッドの制限
- 以前: XYグリッドのセル数は50個がハードリミットでした。
- 変更後: 制限が削除されました。残る唯一の技術的セーフガードは、グローバルサイズ制限16,383pxで、超えた場合は自動的に縮小されます。
📜 ログとメッセージ
- 以前: ログが不十分でした。
- 変更後: コンソール出力が追加され、中断や縮小時に明確な警告、そして詳細な保存メッセージが表示されます。
💾 保存とメモリ
- 以前: 画像は保存されましたが閉じられず、メモリリークのリスクがありました。
- 変更後: 一時的なリサイズコピー(
out)のみを閉じ、ライブ画像はGradioで利用可能なままにします。最後に gc.collect() を実行します。
🧩 コード改善
- 以前: 重複したインポートや散らかったパラメータがありました。
- 変更後: よりクリーンな構造、簡素化されたロジック、および安全なファイル名生成のための
sanitize_filename を導入。
🧮 UIの強化
- 以前: 手動選択のみで、サンプラーやスケジューラリストを一括で埋める・クリアする方法がありませんでした。
- 変更後: XYグリッドのサンプラーおよびスケジューラー両方に対し、「✅ すべて選択」および「🧹 すべてクリア」ボタンを追加。直感的・高速・レイアウトに配慮された操作を実現。
📊 まとめ:変更前/変更後
- 一意な名前: 秒 → ミリ秒
- フォルダパス: 絵文字 → クリーンなASCII
- ラベルの対称性: 混在した余白 → 一貫した
label_gap(2 * label_gap)
- 停止動作: 不安定 →
state.interrupted で一貫性を確保
- グリッドサイズ: 50セル制限 → 16,383pxの技術的制限 + 自動縮小
- ログ: 最小限 → 詳細な保存通知と警告
- メモリ: リークの可能性 → 一時ファイルのみを閉じ、終了時にGCを実行
- コードベース: 重複 → クリーンな構造、
sanitize_filename 対応
- UIコントロール: 手動選択のみ → サンプラー・スケジューラー用の選択/クリアボタン追加
グリッドは今や無制限で、対称的かつ安全——コードはより洗練され、信頼性が高く、日常利用に最適な設計になりました。