安定拡散Web APIを利用したAI生成で画像の背景のみを置き換える

Patricia Arquette
リリース: 2024-11-10 02:52:02
オリジナル
824 人が閲覧しました

導入

このガイドでは、Photoshop などの画像編集ソフトウェアに依存せず、Python コードのみを使用して画像の背景を置き換える方法を説明します。目標は、AI が生成した背景と入れ替えながら、被写体をそのままの状態に保つことです。

このアプローチは革新的ではないかもしれませんが、一般的なニーズに対応しているため、同様の要件を持つ人にとって役立つことを願っています。

入力画像と出力画像

結果から始めましょう。

次の出力画像は、以下に示す入力画像から生成されました。

入力画像

Replacing Only the Background of an Image with AI Generation Using the Stable Diffusion Web API

出力画像

Replacing Only the Background of an Image with AI Generation Using the Stable Diffusion Web API

図書館

API 呼び出しを処理するためのインストール リクエスト。

$ pip install requests
ログイン後にコピー

次のようにバージョンを確認しました:

$ pip list | grep -e requests
requests                  2.31.0
ログイン後にコピー

APIキー

バックグラウンド生成には、Stability AI の Web API を使用します。

この API にアクセスするには、開発者プラットフォームから API キーを取得する必要があります。価格については、「価格」ページを参照してください。

キーを安全に保つには、コードにハードコードするのではなく、環境変数として保存します。

私の環境では、zshrc 設定ファイルを使用しています。

$ open ~/.zshrc
ログイン後にコピー

キーを STABILITY_API_KEY という名前で保存しました。

export STABILITY_API_KEY=your_api_key_here
ログイン後にコピー

コード

ここでは、背景の削除 API を使用して主題を分離します。次に、抽出した画像を Inpaint API に渡して、新しい背景を作成します。

使用されるプロンプトは「背後の大都市の景色を望む大きなガラス窓

import os
import requests

# File paths
input_path = './input.png'  # Original image
mask_path = './mask.png'  # Mask image (temporarily generated)
output_path = './output.png'  # Output image

# Check for API Key
api_key = os.getenv("STABILITY_API_KEY")
if api_key is None:
    raise Exception("Missing Stability API key.")

headers = {
    "Accept": "image/*",
    "Authorization": f"Bearer {api_key}"
}

# Call Remove Background API
response = requests.post(
    f"https://api.stability.ai/v2beta/stable-image/edit/remove-background",
    headers=headers,
    files={
        "image": open(input_path, "rb")
    },
    data={
        "output_format": "png"
    },
)

# Save mask image
if response.status_code == 200:
    with open(mask_path, 'wb') as file:
        file.write(response.content)
else:
    raise Exception(str(response.json()))

# Call Inpaint API
response = requests.post(
    "https://api.stability.ai/v2beta/stable-image/edit/inpaint",
    headers=headers,
    files={
        "image": open(mask_path, "rb"),
    },
    data={
        "prompt": "Large glass windows with a view of the metropolis behind",
        "output_format": "png",
        "grow_mask": 0,  # Disable blurring around the mask
    },
)

# Delete mask image
os.remove(mask_path)

# Save output image
if response.status_code == 200:
    with open(output_path, "wb") as file:
        file.write(response.content)
else:
    raise Exception(str(response.json()))
ログイン後にコピー

rembgの使用

背景を削除する別のアプローチは、rembg を使用することです。この方法では API 呼び出しが 1 回だけ必要なため、コスト効率が高くなりますが、抽出精度に差が生じる可能性があります。

まず、rembg をインストールします。

$ pip install rembg
ログイン後にコピー

次のようにバージョンを確認しました:

$ pip list | grep -e rembg
rembg                     2.0.59
ログイン後にコピー

このアプローチのコードは次のとおりです:

from rembg import remove
import os
import requests

# File paths
input_path = './input.png'  # Input image path
mask_path = './mask.png'  # Mask image path (temporarily generated)
output_path = './output.png'  # Output image path

# Generate mask image with background removed
with open(input_path, 'rb') as i:
    with open(mask_path, 'wb') as o:
        input_image = i.read()
        mask_image = remove(input_image)
        o.write(mask_image)

# Check for API Key
api_key = os.getenv("STABILITY_API_KEY")
if api_key is None:
    raise Exception("Missing Stability API key.")

# Call Inpaint API
response = requests.post(
    "https://api.stability.ai/v2beta/stable-image/edit/inpaint",
    headers={
        "Accept": "image/*",
        "Authorization": f"Bearer {api_key}"
    },
    files={
        "image": open(mask_path, "rb"),
    },
    data={
        "prompt": "Large glass windows with a view of the metropolis behind",
        "output_format": "png",
        "grow_mask": 0,
    },
)

# Delete mask image
os.remove(mask_path)

# Save output image
if response.status_code == 200:
    with open(output_path, "wb") as file:
        file.write(response.content)
else:
    raise Exception(str(response.json()))
ログイン後にコピー

これが出力画像です。この場合、抽出の精度は満足できるものと思われます。

Replacing Only the Background of an Image with AI Generation Using the Stable Diffusion Web API

ローカルの安定した拡散環境をセットアップすると、API 呼び出しコストを削減できるため、ニーズに合ったオプションを自由に検討してください。

結論

コードだけでこれを実現できるのは非常に便利です。

It’s exciting to witness the ongoing improvements in workflow efficiency.

Original Japanese Article

Stable DiffusionのWeb APIを用いて画像上の人物はそのままに背景だけをAI生成で入れ替えてみた

以上が安定拡散Web APIを利用したAI生成で画像の背景のみを置き換えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート