complex-image-editing
複雑な画像編集指示をより単純な部分タスクに分解し、自動生成されたコントロールガイダンスを提供します。複数オブジェクトの編集に対応し、周辺領域のアイデンティティを保持しながら、手動でのマスク作成を不要にします。
description の原文を見る
Decompose complex image editing instructions into simpler sub-tasks with automatically generated control guidance. Handles multi-object edits, preserves identity of surrounding regions, and eliminates manual mask creation.
SKILL.md 本文
X-Planner: 複雑な指示から計画ベースの画像編集を実現
複雑な指示に基づく画像編集には、単純なピクセル操作以上の処理が必要です。ユーザーが「建物をより高くして、空をより劇的にしてほしい」と言った場合、システムはこれら2つが異なるオブジェクトを対象とした別々の編集であることを理解し、それぞれの正確な境界線を生成し、隣接する領域への漏れ込みなしに適切な変換を適用する必要があります。X-Plannerは複雑な指示をより処理しやすいサブタスクに分解することで、編集モデルを誘導するマスクと制御信号を自動的に生成してこの問題を解決します。
主な課題は、複雑な指示が間接的に指定されることが多く、多くの場合複数のオブジェクトを対象としていることです。現在のアプローチでは、ユーザーにマスクを手動で提供させるか、アイデンティティ保持が重要な場合に失敗します。1つのオブジェクトを編集するとその周囲を破損させてしまいます。
コアコンセプト
X-Plannerは計画と実行を分離する3段階パイプラインとして機能します:
- 指示の分解: 複雑な指示をより単純な原子的なサブ指示に解析
- マスク生成: 各サブ指示に対して、編集タイプに合わせた正確なセグメンテーションマスクを生成
- バウンディングボックス予測: 挿入タスクの場合、新しいオブジェクトの空間位置を予測
マスキングを編集タイプに条件付けられた学習タスクとして扱うことで、システムはテクスチャ編集のためのより緊密なマスク、形状変更のための拡張されたマスクを生成します。各々は特定の編集目標に適応させられています。
アーキテクチャの概要
- MLLM指示パーサー: 複雑な指示を分析し、編集タイプを持つ構造化されたサブタスクを生成
- 編集タイプ固有のマスクジェネレーター: 編集タイプ(置換、スタイル変更、挿入など)に基づいてカスタマイズされたセグメンテーションマスクを作成
- 空間予測器: 挿入の場合、新しいオブジェクトが表示される位置を予測
- 互換性のある編集バックエンド: 既存のモデル(UltraEdit、InstructPix2Pixなど)と連携
- 反復的な精密化: サブ指示を順序立てて適用し、各ステップが前の編集に基づいて構築される
実装
複雑な指示を分析してサブタスクに分解することから始めます:
from xplanner.decomposer import InstructionDecomposer
from xplanner.masker import MaskGenerator
decomposer = InstructionDecomposer(model="gpt-4-vision")
# 複数のオブジェクトを暗黙的に対象とする複雑な指示
instruction = "Make the car red, remove the traffic cone, and brighten the road"
# 原子的なサブ指示に分解
sub_tasks = decomposer.decompose(
instruction=instruction,
image=image
)
# 出力:
# [
# {"text": "change the car color to red", "target": "car", "type": "color_change"},
# {"text": "remove the traffic cone", "target": "traffic_cone", "type": "deletion"},
# {"text": "brighten the road surface", "target": "road", "type": "lighting_change"}
# ]
各サブタスクについて、編集タイプに条件付けられた特化したマスクを生成します:
masker = MaskGenerator()
for sub_task in sub_tasks:
edit_type = sub_task["type"]
# 編集タイプに適応したマスクを生成
mask = masker.generate_mask(
image=image,
target_description=sub_task["text"],
edit_type=edit_type,
# 異なる編集に対する異なるマスク:
# - "texture" または "color_change": 緊密なマスク(正確なオブジェクト)
# - "shape" または "size": 拡張されたマスク(コンテキストを含める)
# - "deletion": 正確な境界線
# - "global": フル画像マスク
)
# マスクが対象をカバーしていることを検証
assert masker.validate_coverage(mask, sub_task["target"])
sub_task["mask"] = mask
挿入タスクの場合、既存のディテクターは元の画像に存在しないオブジェクトを幻覚させることができないため、バウンディングボックスを予測します:
from xplanner.spatial import BoundingBoxPredictor
predictor = BoundingBoxPredictor()
insertion_tasks = [t for t in sub_tasks if t["type"] == "insertion"]
for task in insertion_tasks:
# 新しいオブジェクトが表示されるべき位置を予測
bbox = predictor.predict(
image=image,
instruction=task["text"],
context_objects=get_visible_objects(image)
)
# バウンディングボックスは編集モデルへの空間的な誘導を提供
task["bbox"] = bbox
互換性のある編集モデルを使用してサブタスクを反復的に適用します:
from xplanner.executor import ImageEditor
editor = ImageEditor(backend="ultarEdit") # または InstructPix2Pix
result_image = image.copy()
# サブタスクを順序立てて適用
for i, sub_task in enumerate(sub_tasks):
# マスクとオプションの空間的誘導を取得
mask = sub_task["mask"]
bbox = sub_task.get("bbox", None)
# 指定されたマスクと誘導を使用して編集
result_image = editor.edit(
image=result_image,
instruction=sub_task["text"],
mask=mask,
spatial_guidance=bbox,
preserve_identity=True # マスク外の領域を変更しない
)
# 編集品質を検証
assert editor.validate_quality(result_image, result_image_prev)
return result_image
実践的なガイダンス
X-Plannerを使用する場合
このアプローチは以下に使用します:
- 複雑な複数オブジェクト編集指示
- アイデンティティ保持が重要なシナリオ
- 曖昧または間接的な言語を含むユーザー指示
- 手動マスクが面倒またはエラーが生じやすい場合
- 編集の反復的な精密化が必要なアプリケーション
使用すべきでない場合
X-Plannerを避けるべき場合:
- シンプルな単一オブジェクト編集(直接的なアプローチの方が高速)
- ユーザーによって既に分解された完全に構造化された指示
- スタイル転送または芸術的な変換(分解を必要としない)
- 即座なフィードバックが必要なリアルタイム編集
- カスタムモデルを備えた高度に特化した編集ドメイン
編集タイプ別マスク戦略
| 編集タイプ | マスク戦略 | 例 |
|---|---|---|
| 色の変更 | 緊密なマスク(正確なオブジェクト境界) | 「車を青くして」 |
| 形状変更 | 拡張されたマスク(オブジェクト+バッファー) | 「建物をより高くして」 |
| スタイル転送 | フル領域マスク | 「道路表面をつや出しして」 |
| 削除 | 正確な境界線 | 「交通コーンを削除して」 |
| 挿入 | バウンディングボックス誘導 | 「建物の近くに木を追加して」 |
| グローバル編集 | フル画像マスク | 「シーン全体を明るくして」 |
キーハイパーパラメーター
| パラメーター | 典型的な範囲 | ガイダンス |
|---|---|---|
| マスク拡張 | 0-30ピクセル | 形状編集では大きく、色編集では小さく |
| 信頼度閾値 | 0.5-0.9 | 高いほどマスクがより選別的 |
| 反復回数 | 1-5ステップ | 複雑な編集ではより多くの反復、ただし処理時間増加 |
| モデルバックボーン | GPT-4V、Claude | より大きなモデルはより良く分解 |
よくある落とし穴
- 過度な分解: すべての指示が分割を必要とするわけではありません。サブタスクは原子的でありながら細粒度でないようにしてください。
- マスク品質を無視する: 優れたマスクは編集成功の80%を占めます。慎重に検証してください。
- 空間コンテキストを忘れる: オブジェクトを挿入する際、物理的に妥当な位置に表示されることを確認してください。
- 順序立てられたエラー累積: 各編集により画像が劣化することがあります。各ステップ後に品質を監視してください。
- アイデンティティ保持を見落とす: マスクが隣接するオブジェクトに漏れ込まないことを確認するか、形状変更のために明示的に拡張してください。
検証チェックリスト
- 各サブ指示は原子的で独立している
- マスクが対象を完全にカバーしている
- マスクが保護領域と重なっていない
- 挿入されたオブジェクトに有効なバウンディングボックスがある
- 編集シーケンスが依存関係を尊重している
- 最終画像が編集領域外の元のアイデンティティを保持している
参考文献
"Beyond Simple Edits: X-Planner for Complex Instruction-Based Image Editing" - arXiv:2507.05259
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- ADu2021
- リポジトリ
- ADu2021/skillXiv
- ライセンス
- MIT
- 最終更新
- 2026/3/26
Source: https://github.com/ADu2021/skillXiv / ライセンス: MIT
関連スキル
listenhub
あらゆることを説明できます。アイデアをポッドキャスト、解説動画、または音声ナレーションに変換します。 ユーザーが「ポッドキャストを作りたい」「解説動画を作成したい」「これを読み上げてほしい」「画像を生成したい」、または知識を音声・映像形式で共有したいときに使用します。トピックの説明、YouTubeリンク、記事URL、プレーンテキスト、画像プロンプトに対応しています。
best-youtube-video-editor
ClawHub上の「best-youtube-video-editor」スキルは、YouTube クリエイターのコンテンツ制作を革新します。タイムラインや複雑なソフトウェアを必要とせず、会話形式のAI駆動型ビデオ編集が可能です。無音部分のカット、チャプターマーカーの追加、字幕の挿入、ペーシングの調整、エクスポートの最適化——すべてが自然言語の指示で実現します。初回使用時には NemoVideo API を通じて認証情報を自動設定するため、有効化後数秒で編集を開始できます。YouTuber、教育関係者、ポッドキャスター、ブランドチャネル向けに開発され、品質を損なわず高速な納期対応が必要な方に最適です。mp4、mov、avi、webm、mkv 形式に対応しています。
video
ユーザーがAIツールやプログラマティックフレームワークを使用してビデオコンテンツを作成、生成、または制作したい場合に使用します。また、ユーザーが「ビデオ制作」「AIビデオ」「Remotion」「Hyperframes」「HeyGen」「Synthesia」「Veo」「Runway」「Kling」「Pika」「ビデオ生成」「AIアバター」「トーキングヘッドビデオ」「プログラマティックビデオ」「ビデオテンプレート」「解説ビデオ」「プロダクトデモビデオ」「ビデオパイプライン」または「ビデオを作ってほしい」と言及している場合にも使用します。ビデオ作成、生成、制作のワークフロー全般に対応できます。ビデオコンテンツの戦略や投稿内容については「social-content」を、有料ビデオ広告クリエイティブについては「ad-creative」をご参照ください。
clipify
ビデオから最も面白い瞬間を検出し、スタンドアロンクリップとしてカットできます。オプションで16:9から9:16へのリフォーマット(フェイスパンまたはスプリットスクリーン)に対応し、Opus風の単語ごとのキャプションを焼き込みます。ユーザーが「clipify」「このビデオからクリップをカットして」「これからショーツを作って」「面白い瞬間を見つけて」「9:16にリフレーミングして」「縦型クリップ」と言及したり、ビデオファイルパスを貼り付けてSNS対応のクリップを求める場合に使用します。
speech
ユーザーが音声生成、ナレーション、アクセシビリティ対応の読み上げ、音声プロンプト、またはOpenAI Audio APIによるバッチ音声生成をリクエストした場合に使用します。組み込みボイスを備えたバンドルCLI(`scripts/text_to_speech.py`)を実行でき、ライブ呼び出しには`OPENAI_API_KEY`が必要です。カスタムボイスの作成には対応していません。
depth-estimation
Depth Anything v2を使用したリアルタイム深度マップのプライバシー変換(CoreML + PyTorch対応) このスキルは、Depth Anything v2モデルを活用して、画像やビデオから取得した深度情報をリアルタイムで処理し、プライバシーを保護しながら変換します。CoreMLとPyTorchの両方に対応しており、エッジデバイスでの高速処理とクラウド環境での柔軟な運用が可能です。顔認識データのぼかしや背景の匿名化など、プライバシー関連の処理を効率的に実行できます。