オブジェクトのセグメンテーションと位置シフトに関するプロジェクト ドキュメントへようこそ。このリポジトリには、テキスト プロンプトに基づいて特定の画像内のオブジェクトをセグメント化し、そのオブジェクトを同じシーン内の新しい位置に移動するためのコードが含まれています。最先端の生成 AI モデルを活用して、このタスクをユーザーフレンドリーな方法で実行します。
このプロジェクトには、特に電子商取引目的での製品画像のポストプロダクション編集を目的とした 2 つの重要なタスクが含まれています。
タスク 1: テキスト プロンプト (「棚」など) に基づいて画像内のオブジェクトをセグメント化し、赤いマスクで強調表示します。
タスク 2: ユーザーの指定に従って、オブジェクトを x 方向と y 方向に移動することにより、シーン内でオブジェクトを移動します。
たとえば、「棚」を含む画像があるとします。セグメンテーションを実行して、画像内のすべての棚を強調表示できます。次に、ピクセル オフセットを使用して、特定された棚をシーン内で移動できます。
テキストベースのオブジェクトのセグメント化: 「シェルフ」などのクラス プロンプトを使用してオブジェクトを識別し、強調表示します。
位置シフト: オブジェクトを x (水平) および y (垂直) 方向にピクセル値ずつ移動します。
事前構築されたモデル: SAM (Segment Anything Model) や Stable Diffusion Inpainting などの既存のモデルを利用して、再トレーニングを必要とせずにオブジェクトを操作します。
プロジェクトをローカルでセットアップするには、次の手順に従います。
リポジトリのクローンを作成します。
git clone https://github.com/your-repo/object-segmentation-shift.git
cd object-segmentation-shift
仮想環境を作成してアクティブ化します。
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
依存関係をインストールします。
pip install -r requirements.txt
クラス プロンプトに基づいて画像内のオブジェクトをセグメント化するには:
python run.py --image ./example.jpg --class shelf --output ./generated.png
このコマンドは、 example.jpg
を取得し、クラス プロンプトで指定されたオブジェクト (例: "shelf") のすべてのインスタンスをセグメント化し、それらのオブジェクトに赤いマスクを付けた画像を出力します。
画像内のセグメント化されたオブジェクトを移動するには:
python run.py --image ./example.jpg --class shelf --x 80 --y 0
これにより、識別された棚が右に 80 ピクセル、垂直方向に 0 ピクセル移動します。
アルゴリズムをサンプル画像に適用した結果は次のとおりです。
入力画像 | セグメンテーション (タスク 1) | 移動したオブジェクト (タスク 2) |
---|---|---|
データ | レス1 | レス2 |
タスク 1: オブジェクトが赤で強調表示されます。
セグメンテーション前
セグメンテーション後
タスク 2: オブジェクトは、ユーザー定義の x および y 値に従ってシフトされます。
複雑なオブジェクトの境界: オブジェクトに複雑な境界がある場合、または部分的に不明瞭な場合、セグメンテーションは完全ではない可能性があります。
アーティファクトの移動: 複雑な背景を持つオブジェクトを移動する場合、背景を確実に自然に再生成することが課題となります。
モデルの微調整: セグメンテーションの精度を向上させるための微調整手法を実験します。
シームレスな背景修復: 高度な修復技術を使用して、オブジェクトの移動後の背景の再構築を処理します。
このプロジェクトに貢献したい場合は、次の手順に従ってください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。