Cách tạo hình ảnh bằng API OpenAI và DALL·E 2 trong Python
Nếu bạn đã từng sử dụng ChatGPT, thì bạn đã chứng kiến trực giác của nó. Với các API của OpenAI, việc tạo mã, hoàn thành văn bản, so sánh văn bản, đào tạo mô hình và tạo hình ảnh đều sẵn sàng để các nhà phát triển khám phá và tích hợp vào các ứng dụng.
Trong hướng dẫn này, bạn sẽ học cách sử dụng API của OpenAI với Python để tạo, chỉnh sửa và thay đổi hình ảnh bằng lời nhắc ngôn ngữ tự nhiên.
Mục Lục
Bắt đầu với OpenAI bằng Python
Bạn cần thiết lập một số thứ trước khi bắt đầu hướng dẫn này. Trước tiên, hãy đảm bảo rằng bạn đã cài đặt phiên bản mới nhất của Python trên máy tính của mình. Nếu bạn sử dụng bản phân phối Linux như Ubuntu, bạn cũng có thể muốn xem cách cài đặt Python trên Ubuntu.
Tạo một thư mục mới cho dự án của bạn và mở dòng lệnh vào thư mục dự án của bạn.
Tiếp theo là cài đặt gói OpenAI. Bạn cần cài đặt cái gối để chuyển đổi hình ảnh sang RGBA trong khi sử dụng điểm cuối chỉnh sửa hình ảnh. Bạn cũng có thể muốn cài đặt python-dotenv; bạn sẽ sử dụng điều này để che giấu các khóa bí mật.
Chúng tôi khuyên bạn nên tạo một môi trường ảo Python chuyên dụng để tách biệt các thành phần phụ thuộc.
Mã được sử dụng trong dự án này có sẵn trong kho lưu trữ GitHub và bạn được sử dụng miễn phí theo giấy phép MIT.
Để cài đặt python-dotenv, cái gốiVà openai các gói, hãy chạy lệnh sau trong thiết bị đầu cuối:
pip install openai python-dotenv pillow
Bây giờ hãy truy cập OpenAI và đăng nhập vào bảng điều khiển của bạn để lấy khóa API của bạn:
- Khi bạn đã đăng nhập, hãy nhấp vào biểu tượng hồ sơ của bạn ở phần trên cùng bên phải.
- Đi đến Xem khóa API. Nếu khóa API của bạn không hiển thị, hãy nhấp vào Tạo khóa bí mật mới để tạo ra một cái mới.
- Sao chép khóa bí mật đã tạo và dán vào nơi an toàn trên máy tính của bạn. Bạn có thể muốn dán nó vào một tệp biến môi trường trong thư mục gốc của dự án để bảo mật.
Cách tạo và chỉnh sửa hình ảnh bằng API OpenAI trong Python
Tính năng tạo hình ảnh của OpenAI API có các điểm cuối để tạo hình ảnh mới, tạo các biến thể hình ảnh và chỉnh sửa chúng.
Trong các phần sau, bạn sẽ khám phá những điểm cuối này để tạo, chỉnh sửa, tinh chỉnh và tải xuống hình ảnh bằng lời nhắc ngôn ngữ tự nhiên.
Tạo hình ảnh bằng API OpenAI
Điểm cuối tạo hình ảnh chấp nhận ba đối số từ khóa. Bao gồm các lời nhắc, NVà kích cỡ.
Các lời nhắc từ khóa là một chuỗi văn bản mô tả hình ảnh bạn muốn tạo, trong khi N là số lượng hình ảnh sẽ tạo trong một lệnh gọi API. Các kích cỡ là kích thước hình ảnh và khi viết, nó chỉ chấp nhận 256×256, 512×512 và 1024×1024 pixel, theo tài liệu tạo hình ảnh chính thức của OpenAI.
Đoạn mã sau tạo hình ảnh bằng lời nhắc ngôn ngữ tự nhiên và xuất URL của chúng (địa chỉ hình ảnh):
import openai
import os
import requests
from dotenv import load_dotenv
from PIL import Image
load_dotenv()class ImageGenerator:
def __init__(self) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
self.APIKey = openai.api_key
self.name = None
def generateImage(self, Prompt, ImageCount, ImageSize):
try:
self.APIKey
response = openai.Image.create(
prompt = Prompt,
n = ImageCount,
size = ImageSize,
)
self.image_url = response['data']
self.image_url = [image["url"] for image in self.image_url]
print(self.image_url)
return self.image_url
except openai.error.OpenAIError as e:
print(e.http_status)
print(e.error)
def downloadImage(self, names)-> None:
try:
self.name = names
for url in self.image_url:
image = requests.get(url)
for name in self.name:
with open("{}.png".format(name), "wb") as f:
f.write(image.content)
except:
print("An error occured")
return self.name
imageGen = ImageGenerator()
imageGen.generateImage(
Prompt = "Giant lion, bear, ape, and tiger standing on a water water fall",
ImageCount = 2,
ImageSize = '1024x1024'
)
imageGen.downloadImage(names=[
"Animals",
"Animals2"
])
Đoạn mã trên chứa một ImageGenerator lớp học với URL hình ảnh Và Mã API thuộc tính. Các tạo hình ảnh phương pháp điều chỉnh các yêu cầu của điểm cuối tạo hình ảnh. Nó tạo ra N URL sử dụng lời nhắc ngôn ngữ tự nhiên, tùy thuộc vào Đếm hình ảnh giá trị.
Tuy nhiên, self.image_url trích xuất các URL hình ảnh được tạo từ phản hồi JSON vào danh sách bằng cách sử dụng vòng lặp for để hiểu danh sách.
Đầu ra trông như thế này:
cuối cùng tải hình ảnh phương thức tải xuống từng hình ảnh bằng cách yêu cầu các địa chỉ được tạo. Phương pháp này chấp nhận N số tên mà bạn muốn đặt cho mỗi hình ảnh.
Chỉnh sửa hình ảnh bằng API OpenAI
Điểm cuối chỉnh sửa cho phép bạn chỉnh sửa hình ảnh hiện có dựa trên mẫu mặt nạ. Mặt nạ có định dạng RGBA với vùng trong suốt, có chú thích và phải có cùng kích thước với hình ảnh bạn muốn chỉnh sửa.
Khi bạn cung cấp mặt nạ, điểm cuối chỉnh sửa sẽ thay thế khu vực được che bằng dấu nhắc mới trong hình ảnh hiện có để tạo một hình ảnh mới. Thêm các phương thức sau vào lớp trước đó:
class ImageGenerator:
def __init__(self, ...):
.............. def convertImage(self, maskName):
image = Image.open("{}.png".format(maskName))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format(maskName))
return rgba_image
def editImage(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage(maskName)
response = openai.Image.create_edit(
image = open("{}.png".format(imageName), "rb"),
mask = open("{}.png".format(maskName), "rb"),
prompt = Prompt,
n = ImageCount,
size = ImageSize,
)
self.image_url = response['data']
self.image_url = [image["url"] for image in self.image_url]
print(self.image_url)
return self.image_url
imageGen.editImage(
imageName = "Animals",
maskName = "mask",
ImageCount = 1,
ImageSize = "1024x1024",
Prompt = "An eagle standing on the river bank drinking water with a big mountain"
)
imageGen.downloadImage(names=[
"New Animals",
])
Các chuyển đổiImage phương pháp chuyển đổi hình ảnh mặt nạ sang định dạng RGBA. Bạn có thể đạt được điều này bằng cách sử dụng chuyển thành phương thức từ gói gối của Python (được nhập dưới dạng PIL).
Sau khi được chuyển đổi, nó sẽ lưu mặt nạ mới dưới dạng ghi đè lên mặt nạ hiện có. Do đó, chuyển đổi hình ảnh là nhiệm vụ đầu tiên mà phương pháp chỉnh sửa (chỉnh sửa hình ảnh) thực thi.
Các hình ảnh đọc hình ảnh mục tiêu từ một tệp hiện có, trong khi mặt nạ đọc hình ảnh mặt nạ đã chuyển đổi, hình ảnh này phải có vùng trong suốt.
Bạn có thể đánh dấu một vùng trong suốt trên mặt nạ bằng phần mềm chỉnh sửa ảnh như Gimp hoặc Photoshop.
Ví dụ: hình ảnh chúng tôi muốn chỉnh sửa bằng cách sử dụng dấu nhắc trong đoạn mã trên là:
Bây giờ, giả sử bạn muốn thay thế con linh dương đang đứng bên bờ sông bằng một con đại bàng, như đã nêu trong lời nhắc.
Đây là những gì mặt nạ trông giống như:
Vì từ khóa trong lời nhắc của đoạn mã trên cho biết, “một con đại bàng đang đứng trên bờ sông”, nên chỗ trống được lấp đầy bởi một con đại bàng, thay thế con linh dương đã ở đó trước đó.
Đây là hình ảnh mới trong trường hợp này:
Bạn có thể thử chơi xung quanh với điểm cuối chỉnh sửa hình ảnh bằng cách sử dụng các ảnh khác.
Tạo các biến thể hình ảnh trong Python bằng API OpenAI
Điểm cuối biến thể tạo ra các hình ảnh thay thế từ một hình ảnh hiện có. Mở rộng lớp trình tạo hình ảnh hơn nữa bằng cách thêm một phương thức biến thể hình ảnh như dưới đây:
class ImageGenerator:
def __init__(self) -> str:
.............
def imageVariations(self, ImageName, VariationCount, ImageSize):
response = openai.Image.create_variation(
image = open("{}.png".format(ImageName), "rb"),
n = VariationCount,
size = ImageSize
)
self.image_url = response['data']
self.image_url = [image["url"] for image in self.image_url]
print(self.image_url)
return self.image_url
imageGen = ImageGenerator()
imageGen.imageVariations(
ImageName = "New_Animals",
VariationCount = 2,
ImageSize = "1024x1024"
)
imageGen.downloadImage(names=[
"Variation1",
"Variation2",
]
)
Đoạn mã trên tạo ra các biến thể của một hình ảnh.
Sử dụng OpenAI để có lợi cho bạn
Mặc dù một số người lo sợ AI có thể đánh cắp công việc của họ, nhưng xét cho cùng, đó có thể là một thiên đường—nếu bạn học cách kiểm soát và sử dụng nó. Hướng dẫn tạo hình ảnh OpenAI này chỉ là một trong nhiều trường hợp sử dụng AI trong thế giới thực. API OpenAI cung cấp các mô hình được đào tạo trước tiện dụng mà bạn có thể dễ dàng tích hợp vào ứng dụng của mình. Vì vậy, bạn có thể chấp nhận thử thách và xây dựng thứ gì đó đáng giá từ hướng dẫn này.
Mặc dù API tạo hình ảnh vẫn đang ở giai đoạn thử nghiệm khi viết, nhưng nó đã cho phép bạn tạo các tác phẩm nghệ thuật tưởng tượng. Hy vọng rằng nó sẽ nhận được các bản cập nhật tiếp theo để cho phép nâng cấp và chấp nhận các kích thước hình ảnh khác nhau.