این صفحه نحوه استفاده از قابلیت سفارشی سازی Imagen را برای ویرایش یا تولید تصاویر بر اساس یک موضوع مشخص با استفاده از Firebase AI Logic SDK توضیح می دهد.
چگونه کار میکند : یک پیام متنی و حداقل یک تصویر مرجع ارائه میکنید که موضوع خاصی را نشان میدهد (مانند یک محصول، شخص یا حیوان همراه). مدل از این ورودی ها برای تولید یک تصویر جدید بر اساس موضوع مشخص شده در تصاویر مرجع استفاده می کند.
به عنوان مثال، می توانید از مدل بخواهید که یک سبک کارتونی را روی عکس کودک اعمال کند یا رنگ دوچرخه را در یک عکس تغییر دهد.
قبل از شروع
فقط در صورت استفاده از Vertex AI Gemini API به عنوان ارائهدهنده API در دسترس است. |
اگر قبلاً این کار را نکردهاید، راهنمای شروع را تکمیل کنید، که نحوه راهاندازی پروژه Firebase را توضیح میدهد، برنامه خود را به Firebase متصل کنید، SDK را اضافه کنید، سرویس Backend را برای ارائهدهنده API انتخابی خود مقداردهی اولیه کنید و یک نمونه ImagenModel
ایجاد کنید.
مدل هایی که از این قابلیت پشتیبانی می کنند
Imagen ویرایش تصویر را از طریق مدل capability
خود ارائه می دهد:
-
imagen-3.0-capability-001
توجه داشته باشید که برای مدل های Imagen ، موقعیت global
پشتیبانی نمی شود.
درخواست سفارشی سازی موضوع را ارسال کنید
نمونه زیر یک درخواست سفارشی سازی موضوع را نشان می دهد که از مدل می خواهد یک تصویر جدید بر اساس تصویر مرجع ارائه شده (در این مثال، یک گربه) ایجاد کند. از آنجایی که گربه یک حیوان است، از نوع موضوع ImagenSubjectReferenceType.ANIMAL
استفاده می کند.
اگر موضوع شما یک شخص یا یک محصول است، می توانید از این مثال استفاده کنید اما با تغییرات زیر:
اگر موضوع شما یک شخص است، از نوع موضوع
ImagenSubjectReferenceType.PERSON
استفاده کنید. شما می توانید این نوع درخواست را با یا بدون تصویر کنترل فیس مش برای راهنمایی بیشتر تولید تصویر ارسال کنید.اگر موضوع شما یک محصول است، از نوع موضوع
ImagenSubjectReferenceType.PRODUCT
استفاده کنید.
الگوهای درخواست را در ادامه این صفحه مرور کنید تا در مورد دستورات نوشتن و نحوه استفاده از تصاویر مرجع در آنها بیاموزید.
سویفت
ویرایش تصویر با مدل های Imagen برای Swift پشتیبانی نمی شود. اواخر امسال دوباره بررسی کنید!
Kotlin
// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun customizeImage() {
// Initialize the Vertex AI Gemini API backend service
// Optionally specify the location to access the model (for example, `us-central1`)
val ai = Firebase.ai(backend = GenerativeBackend.vertexAI(location = "us-central1"))
// Create an `ImagenModel` instance with an Imagen "capability" model
val model = ai.imagenModel("imagen-3.0-capability-001")
// This example assumes 'referenceImage' is a pre-loaded Bitmap.
// In a real app, this might come from the user's device or a URL.
val referenceImage: Bitmap = TODO("Load your reference image Bitmap here")
// Define the subject reference using the reference image.
val subjectReference = ImagenSubjectReference(
image = referenceImage,
referenceID = 1,
description = "cat",
subjectType = ImagenSubjectReferenceType.ANIMAL
)
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
val prompt = "A cat[1] flying through outer space"
// Use the editImage API to perform the subject customization.
// Pass the list of references, the prompt, and an editing configuration.
val editedImage = model.editImage(
references = listOf(subjectReference),
prompt = prompt,
config = ImagenEditingConfig(
editSteps = 50 // Number of editing steps, a higher value can improve quality
)
)
// Process the result
}
Java
// Initialize the Vertex AI Gemini API backend service
// Optionally specify the location to access the model (for example, `us-central1`)
// Create an `ImagenModel` instance with an Imagen "capability" model
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.vertexAI("us-central1"))
.imagenModel(
/* modelName */ "imagen-3.0-capability-001");
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// This example assumes 'referenceImage' is a pre-loaded Bitmap.
// In a real app, this might come from the user's device or a URL.
Bitmap referenceImage = null; // TODO("Load your image Bitmap here");
// Define the subject reference using the reference image.
ImagenSubjectReference subjectReference = new ImagenSubjectReference.Builder()
.setImage(referenceImage)
.setReferenceID(1)
.setDescription("cat")
.setSubjectType(ImagenSubjectReferenceType.ANIMAL)
.build();
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
String prompt = "A cat[1] flying through outer space";
// Define the editing configuration.
ImagenEditingConfig imagenEditingConfig = new ImagenEditingConfig.Builder()
.setEditSteps(50) // Number of editing steps, a higher value can improve quality
.build();
// Use the editImage API to perform the subject customization.
// Pass the list of references, the prompt, and an editing configuration.
Futures.addCallback(model.editImage(Collections.singletonList(subjectReference), prompt, imagenEditingConfig), new FutureCallback<ImagenGenerationResponse>() {
@Override
public void onSuccess(ImagenGenerationResponse result) {
if (result.getImages().isEmpty()) {
Log.d("TAG", "No images generated");
}
Bitmap bitmap = result.getImages().get(0).asBitmap();
// Use the bitmap to display the image in your UI
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
Web
ویرایش تصویر با مدل های Imagen برای برنامه های وب پشتیبانی نمی شود. اواخر امسال دوباره بررسی کنید!
Dart
import 'dart:typed_data';
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI Gemini API backend service
// Optionally specify a location to access the model (for example, `us-central1`)
final ai = FirebaseAI.vertexAI(location: 'us-central1');
// Create an `ImagenModel` instance with an Imagen "capability" model
final model = ai.imagenModel(model: 'imagen-3.0-capability-001');
// This example assumes 'referenceImage' is a pre-loaded Uint8List.
// In a real app, this might come from the user's device or a URL.
final Uint8List referenceImage = Uint8List(0); // TODO: Load your reference image data here
// Define the subject reference using the reference image.
final subjectReference = ImagenSubjectReference(
image: referenceImage,
referenceId: 1,
description: 'cat',
subjectType: ImagenSubjectReferenceType.animal,
);
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
final prompt = "A cat[1] flying through outer space.";
try {
// Use the editImage API to perform the subject customization.
// Pass the list of references, the prompt, and an editing configuration.
final response = await model.editImage(
[subjectReference],
prompt,
config: ImagenEditingConfig(
editSteps: 50, // Number of editing steps, a higher value can improve quality
),
);
// Process the result.
if (response.images.isNotEmpty) {
final editedImage = response.images.first.bytes;
// Use the editedImage (a Uint8List) to display the image, save it, etc.
print('Image successfully generated!');
} else {
// Handle the case where no images were generated.
print('Error: No images were generated.');
}
} catch (e) {
// Handle any potential errors during the API call.
print('An error occurred: $e');
}
وحدت
ویرایش تصویر با مدل های Imagen برای Unity پشتیبانی نمی شود. اواخر امسال دوباره بررسی کنید!
الگوهای سریع
در درخواست، تصاویر مرجع (حداکثر 4 تصویر) را با تعریف یک ImagenSubjectReference
که در آن یک شناسه مرجع برای یک تصویر (و همچنین به صورت اختیاری شرح موضوع) مشخص میکنید، ارائه میکنید. توجه داشته باشید که چندین تصویر می توانند شناسه مرجع یکسانی داشته باشند (مثلاً چندین عکس از یک گربه).
سپس هنگام نوشتن دستور به این شناسه ها مراجعه می کنید. به عنوان مثال، شما از [1]
در اعلان برای ارجاع به تصاویر با شناسه مرجع 1
استفاده می کنید. اگر شرح موضوعی ارائه می دهید، می توانید آن را نیز در اعلان قرار دهید تا خواندن آن برای انسان آسان تر باشد.
جدول زیر الگوهای درخواستی را توضیح میدهد که میتوانند نقطه شروعی برای نوشتن درخواستها برای سفارشیسازی بر اساس یک موضوع (مانند یک محصول، شخص یا حیوان همراه) باشند.
مورد استفاده | تصاویر مرجع | الگوی درخواستی | مثال |
---|---|---|---|
سبک سازی تصویر محصول - تبلیغات | تصویر موضوع (حداکثر 4) | تصویری درباره SUBJECT_DESCRIPTION [1] ایجاد کنید تا با توضیحات مطابقت داشته باشد: ${PROMPT} | تصویری درباره Luxe Elixir hair oil, golden liquid in glass bottle [1] ایجاد کنید تا با توضیحات مطابقت داشته باشد: تصویری نزدیک و با کلید از دست زنی Luxe Elixir hair oil, golden liquid in glass bottle [1] در مقابل پس زمینه سفید خالص. دست زن به خوبی روشن است و تمرکز بر روی بطری تیز است، با عمق میدان کم، پسزمینه را محو میکند و بر محصول تأکید میکند. نورپردازی نرم و پراکنده است و درخشش ظریفی را در اطراف بطری و دست ایجاد می کند. ترکیب کلی ساده و ظریف است که جذابیت لوکس محصول را برجسته می کند. |
سبک سازی تصویر محصول - تغییر ویژگی | تصویر موضوع (حداکثر 4) | یک تصویر از یک SUBJECT_DESCRIPTION اما ${PROMPT} ایجاد کنید | تصویری از Seiko watch [1] اما به رنگ آبی ایجاد کنید. |
سبک سازی تصویر شخص بدون ورودی مش چهره | تصویر موضوع (حداکثر 4) | تصویری درباره SUBJECT_DESCRIPTION [1] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره ای از SUBJECT_DESCRIPTION [1] ${PROMPT} | تصویری درباره a woman with short hair[1] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره a woman with short hair[1] به سبک کارتونی سه بعدی با پس زمینه تار. شخصیتی بامزه و دوست داشتنی، با چهره ای خندان، نگاه به دوربین، رنگ پاستلی ... |
سبک سازی تصویر شخص بدون ورودی مش چهره | تصویر موضوع (حداکثر 4) | یک تصویر STYLE_DESCRIPTION [2] درباره SUBJECT_DESCRIPTION [1] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره ای از SUBJECT_DESCRIPTION [1] STYLE_PROMPT | یک تصویر 3d-cartoon style [2] درباره a woman with short hair [1] برای مطابقت با توضیحات ایجاد کنید: پرتره a woman with short hair [1] به سبک کارتونی سه بعدی با پس زمینه تار. شخصیتی بامزه و دوست داشتنی، با چهره ای خندان، نگاه به دوربین، رنگ پاستلی ... |
سبک سازی تصویر شخص با ورودی مش چهره | تصویر موضوع (حداکثر 3) تصویر کنترل فیس مش (1) | یک تصویر از SUBJECT_DESCRIPTION [1] با Face mesh from the control image [2] ایجاد کنید. ${PROMPT} | تصویری از the person [1] با face mesh from the control image [2] ایجاد کنید. فرد باید با حالتی خنثی مستقیم به جلو نگاه کند. پس زمینه باید یک ... |
سبک سازی تصویر شخص با ورودی مش چهره | تصویر موضوع (حداکثر 3) تصویر کنترل فیس مش (1) | تصویری درباره SUBJECT_DESCRIPTION [1] در حالت CONTROL_IMAGE [2] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره ای از SUBJECT_DESCRIPTION [1] ${PROMPT} | تصویری در مورد a woman with short hair [1] در حالت control image [2] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره a woman with short hair [1] به سبک کارتونی سه بعدی با پس زمینه تار. شخصیتی بامزه و دوست داشتنی، با چهره ای خندان، نگاه به دوربین، رنگ پاستلی ... |
سبک سازی تصویر شخص با ورودی مش چهره | تصویر موضوع (حداکثر 3) تصویر کنترل فیس مش (1) | یک تصویر STYLE_DESCRIPTION [3] درباره SUBJECT_DESCRIPTION [1] در حالت CONTROL_IMAGE [2] ایجاد کنید تا با توضیحات مطابقت داشته باشد: پرتره SUBJECT_DESCRIPTION [1] ${PROMPT} | یک تصویر 3d-cartoon style [3] درباره a woman with short hair [1] در حالت control image [2] برای مطابقت با توضیحات ایجاد کنید: پرتره a woman with short hair [1] به سبک کارتونی سه بعدی با پس زمینه تار. شخصیتی بامزه و دوست داشتنی، با چهره ای خندان، نگاه به دوربین، رنگ پاستلی ... |
بهترین شیوه ها و محدودیت ها
اگر از شخصی به عنوان سوژه خود استفاده می کنید، توصیه می کنیم چهره در تصویر مرجع شما دارای ویژگی های زیر باشد:
- در مرکز قرار دارد و حداقل نیمی از کل تصویر را اشغال می کند
- در نمای جلویی در همه جهات چرخش دارد (رول، گام، و انحراف)
- توسط اشیائی مانند عینک آفتابی یا ماسک مسدود نمی شود
موارد استفاده کنید
قابلیت سفارشیسازی، درخواستهایی به سبک آزاد ارائه میکند که میتواند این تصور را ایجاد کند که مدل میتواند بیش از آنچه برای انجام آن آموزش دیده است انجام دهد. بخشهای زیر موارد استفاده مورد نظر برای سفارشیسازی و نمونههای غیر جامع از موارد استفاده ناخواسته را شرح میدهند.
ما استفاده از این قابلیت را برای موارد استفاده مورد نظر توصیه می کنیم، زیرا ما این مدل را روی آن موارد استفاده آموزش داده ایم و انتظار نتایج خوبی برای آنها داریم. برعکس، اگر مدل را به انجام کارهایی خارج از موارد استفاده مورد نظر سوق دهید، باید انتظار نتایج ضعیفی را داشته باشید.
موارد استفاده مورد نظر
موارد زیر موارد استفاده در نظر گرفته شده برای سفارشی سازی بر اساس یک موضوع هستند:
تلطیف کردن عکس یک شخص
عکس یک شخص را سبک کنید و حالات چهره آن شخص را حفظ کنید.
(موفقیت کم) محصولی مانند کاناپه یا کوکی را در صحنه های مختلف با زوایای مختلف محصول قرار دهید.
تنوع محصولی را ایجاد کنید که جزئیات دقیق را حفظ نمی کند.
با حفظ حالت چهره، به عکس یک شخص تلطیف کنید.
نمونه هایی از موارد استفاده ناخواسته
در زیر فهرستی غیر جامع از موارد استفاده ناخواسته برای سفارشیسازی بر اساس موضوع ارائه شده است. این مدل برای این موارد استفاده آموزش ندیده است و احتمالاً نتایج ضعیفی خواهد داشت.
دو یا چند نفر را با حفظ هویت خود در صحنه های مختلف قرار دهید.
دو یا چند نفر را در صحنه های مختلف قرار دهید و هویت آنها را حفظ کنید و سبک تصویر خروجی را با استفاده از یک تصویر مثال به عنوان ورودی برای استایل مشخص کنید.
عکس دو یا چند نفر را با حفظ هویت آنها سبک کنید.
یک حیوان خانگی را با حفظ هویت خود در صحنه های مختلف قرار دهید.
عکس یک حیوان خانگی را سبک کنید و آن را به یک نقاشی تبدیل کنید.
عکس یک حیوان خانگی را تلطیف کنید و با حفظ یا مشخص کردن سبک تصویر (مانند رنگ آب) به نقاشی تبدیل کنید.
یک حیوان خانگی و یک شخص را در صحنه ای متفاوت قرار دهید و هویت هر دو را حفظ کنید.
عکس یک حیوان خانگی و یک یا چند نفر را سبک کنید و آن را به نقاشی تبدیل کنید.
دو محصول را در صحنه های مختلف با زوایای محصول متفاوت قرار دهید.
یک محصول مانند یک کوکی یا یک کاناپه را در صحنه های مختلف با زوایای محصول مختلف و پیروی از یک سبک تصویر خاص (مانند واقع گرایانه با رنگ های خاص، سبک های نورپردازی یا انیمیشن) قرار دهید.
یک محصول را در یک صحنه متفاوت قرار دهید، در حالی که ترکیب خاص صحنه را همانطور که توسط یک تصویر کنترل مشخص شده است، حفظ کنید.
دو محصول را در صحنههای مختلف با زوایای محصول متفاوت قرار دهید، با استفاده از یک تصویر خاص به عنوان ورودی (مانند واقعگرایانه با رنگهای خاص، سبکهای نورپردازی یا انیمیشن).
دو محصول را در صحنه های مختلف قرار دهید، در حالی که ترکیب خاص صحنه را همانطور که توسط یک تصویر کنترل مشخص شده است، حفظ کنید.