Rumah > Artikel > pembangunan bahagian belakang > Menggantikan Hanya Latar Belakang Imej dengan Penjanaan AI Menggunakan API Web Resapan Stabil
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.
Mari kita mulakan dengan keputusan.
Imej output berikut dijana daripada imej input yang ditunjukkan di bawah.
Pasang permintaan untuk mengendalikan panggilan API.
$ pip install requests
Saya mengesahkan versi seperti berikut:
$ pip list | grep -e requests requests 2.31.0
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
Saya menyimpan kunci di bawah nama KESTABILAN_API_KEY.
export STABILITY_API_KEY=your_api_key_here
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()))
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
Saya mengesahkan versi seperti berikut:
$ pip list | grep -e rembg rembg 2.0.59
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()))
Berikut ialah imej output. Dalam kes ini, ketepatan pengekstrakan nampaknya memuaskan.
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.
Mampu mencapai ini melalui kod sahaja adalah sangat mudah.
Sangat menarik untuk menyaksikan peningkatan berterusan dalam kecekapan aliran kerja.
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!