Rumah > pembangunan bahagian belakang > Tutorial Python > Menggantikan Hanya Latar Belakang Imej dengan Penjanaan AI Menggunakan API Web Resapan Stabil

Menggantikan Hanya Latar Belakang Imej dengan Penjanaan AI Menggunakan API Web Resapan Stabil

Patricia Arquette
Lepaskan: 2024-11-10 02:52:02
asal
881 orang telah melayarinya

pengenalan

Panduan ini menunjukkan cara menggantikan latar belakang imej menggunakan kod Python sahaja, tanpa bergantung pada perisian penyuntingan imej seperti Photoshop. Matlamatnya adalah untuk memastikan subjek tetap utuh sambil bertukar-tukar dalam latar belakang yang dijana AI.

Walaupun pendekatan ini mungkin tidak revolusioner, ia menangani keperluan biasa, jadi saya harap ia akan membantu mereka yang mempunyai keperluan yang serupa.

Imej Input dan Output

Mari kita mulakan dengan keputusan.

Imej output berikut dijana daripada imej input yang ditunjukkan di bawah.

Imej Input

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

Imej Keluaran

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

Perpustakaan

Pasang permintaan untuk mengendalikan panggilan API.

$ pip install requests
Salin selepas log masuk

Saya mengesahkan versi seperti berikut:

$ pip list | grep -e requests
requests                  2.31.0
Salin selepas log masuk

Kunci API

Untuk penjanaan latar belakang, kami akan menggunakan API Web Stability AI.

Untuk mengakses API ini, anda perlu mendapatkan Kunci API daripada Platform Pembangun mereka. Untuk harga, rujuk halaman Harga.

Untuk memastikan kunci anda selamat, simpannya sebagai pembolehubah persekitaran dan bukannya pengekodan keras dalam kod anda.

Dalam persekitaran saya, saya menggunakan fail tetapan zshrc.

$ open ~/.zshrc
Salin selepas log masuk

Saya menyimpan kunci di bawah nama KESTABILAN_API_KEY.

export STABILITY_API_KEY=your_api_key_here
Salin selepas log masuk

Kod

Di sini, kami menggunakan API Alih Keluar Latar Belakang untuk mengasingkan subjek. Kami kemudian menghantar imej yang diekstrak ke Inpaint API untuk mencipta latar belakang baharu.

Gesaan yang digunakan ialah "Tingkap kaca besar dengan pemandangan kota metropolis di belakang"

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()))
Salin selepas log masuk

Menggunakan rembg

Satu lagi pendekatan untuk mengalih keluar latar belakang ialah menggunakan rembg. Kaedah ini hanya memerlukan satu panggilan API, menjadikannya lebih menjimatkan kos, walaupun ia mungkin menyebabkan perbezaan dalam ketepatan pengekstrakan.

Mula-mula, pasang rembg.

$ pip install rembg
Salin selepas log masuk

Saya mengesahkan versi seperti berikut:

$ pip list | grep -e rembg
rembg                     2.0.59
Salin selepas log masuk

Berikut ialah kod untuk pendekatan ini:

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()))
Salin selepas log masuk

Berikut ialah imej output. Dalam kes ini, ketepatan pengekstrakan nampaknya memuaskan.

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

Jika anda menyediakan persekitaran Stable Diffusion setempat, anda boleh menghapuskan kos panggilan API, jadi jangan ragu untuk meneroka pilihan itu jika ia sesuai dengan keperluan anda.

Kesimpulan

Mampu mencapai ini melalui kod sahaja adalah sangat mudah.

Sangat menarik untuk menyaksikan peningkatan berterusan dalam kecekapan aliran kerja.

Artikel Asal Jepun

Saya menggunakan API Web Stable Diffusion untuk menggantikan hanya latar belakang dengan penjanaan AI sambil membiarkan orang dalam imej seperti sedia ada.

Atas ialah kandungan terperinci Menggantikan Hanya Latar Belakang Imej dengan Penjanaan AI Menggunakan API Web Resapan Stabil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan