এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে Firebase AI Logic SDK ব্যবহার করে একটি নির্দিষ্ট নিয়ন্ত্রণের উপর ভিত্তি করে ছবি সম্পাদনা বা তৈরি করতে Imagen থেকে কাস্টমাইজেশন ক্ষমতা ব্যবহার করা যায়।
এটি কীভাবে কাজ করে : আপনি একটি টেক্সট প্রম্পট এবং কমপক্ষে একটি কন্ট্রোল রেফারেন্স ইমেজ (যেমন একটি অঙ্কন বা একটি ক্যানি এজ ইমেজ) প্রদান করেন। মডেলটি কন্ট্রোল ইমেজের উপর ভিত্তি করে একটি নতুন ইমেজ তৈরি করতে এই ইনপুটগুলি ব্যবহার করে।
উদাহরণস্বরূপ, আপনি মডেলটিকে একটি রকেট জাহাজ এবং চাঁদের একটি অঙ্কন প্রদান করতে পারেন এবং সেই সাথে একটি টেক্সট প্রম্পটও দিতে পারেন যাতে অঙ্কনের উপর ভিত্তি করে একটি জলরঙের চিত্র তৈরি করা যায়।
নিয়ন্ত্রণ রেফারেন্স চিত্রের প্রকারভেদ
নিয়ন্ত্রিত কাস্টমাইজেশনের জন্য রেফারেন্স চিত্রটি একটি স্ক্রিবল , একটি ক্যানি এজ চিত্র , অথবা একটি ফেস মেশ হতে পারে।
একটি স্ক্রিবল হল একটি রুক্ষ, হাতে আঁকা স্কেচ বা রূপরেখা যা মডেলটিকে একটি মৌলিক কাঠামো, স্থানিক বিন্যাস এবং অনুসরণীয় বিন্যাস প্রদান করে। টেক্সট প্রম্পটটি তৈরি করা ছবির জন্য বিশদ, রঙ এবং টেক্সচার প্রদান করে।
উদাহরণ: আপনি একটি বাড়ি, একটি গাছ এবং একটি সূর্যের একটি অঙ্কন প্রদান করেন এবং "সূর্যোদয়ের সময় পাশে একটি বৃহৎ ওক গাছের সাথে একটি কুটিরের একটি অদ্ভুত জলরঙের চিত্রকর্ম" এর মতো একটি টেক্সট প্রম্পটও প্রদান করেন। এরপর মডেলটি আপনার অঙ্কন থেকে সাধারণ বিন্যাস অনুসরণ করে বর্ণিত দৃশ্যের সাথে মেলে এমন একটি চিত্র তৈরি করবে।
ক্যানি এজ ইমেজ হলো এমন একটি অ্যালগরিদম যেখানে একটি অ্যালগরিদম, বিশেষ করে ক্যানি এজ ডিটেক্টর , ছবির মধ্যে থাকা বস্তুর প্রান্তগুলি ম্যাপ করার জন্য একটি উৎস ছবিতে প্রয়োগ করা হয়। এই প্রান্তগুলি মডেলটিকে টেক্সট প্রম্পট দ্বারা নির্দিষ্ট শৈলী, রঙ বা অন্যান্য বৈশিষ্ট্য পরিবর্তন করার সময় বস্তুর সুনির্দিষ্ট কাঠামো বজায় রাখতে সহায়তা করে।
উদাহরণ: আপনার কাছে একটি কুকুরের সোফায় বসে থাকার ছবি আছে। আপনি কেবল কুকুর এবং সোফার রূপরেখার ছবি পেতে ছবিতে ক্যানি এজ ডিটেক্টর চালান। তারপর আপনি এই এজ ম্যাপটি কন্ট্রোল ইমেজ হিসেবে ব্যবহার করেন এবং "একটি চামড়ার সোফায় একটি সোনালী রিট্রিভার কুকুরছানার ছবি" এর মতো একটি টেক্সট প্রম্পট ব্যবহার করেন। মডেলটি একটি নতুন ছবি তৈরি করবে যা মূল কুকুরের ভঙ্গি এবং সোফার গঠনের সাথে মেলে, তবে মূল বিষয়বস্তুর পরিবর্তে একটি সোনালী রিট্রিভার কুকুরছানা এবং একটি চামড়ার সোফা সহ।
- ফেস মেশ হলো এমন একটি ছবি যা মডেলকে একটি নির্দিষ্ট মুখ বুঝতে এবং প্রতিলিপি করতে সাহায্য করে। এটি 3D তে একটি মানুষের মুখের একটি ডিজিটাল উপস্থাপনা, সাধারণত আন্তঃসংযুক্ত বিন্দু (শীর্ষ) এবং ত্রিভুজের একটি নেটওয়ার্ক যা মুখের আকৃতি এবং রূপরেখা নির্ধারণ করে। এটি মডেলটিকে মূল ল্যান্ডমার্ক (যেমন চোখ, নাক এবং মুখ) এবং টেক্সচার প্রদান করে।
শুরু করার আগে
| শুধুমাত্র আপনার API প্রদানকারী হিসেবে Vertex AI Gemini API ব্যবহার করলেই এটি উপলব্ধ। |
যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে শুরু করার নির্দেশিকাটি সম্পূর্ণ করুন, যেখানে আপনার Firebase প্রকল্পটি কীভাবে সেট আপ করবেন, আপনার অ্যাপটিকে Firebase-এর সাথে সংযুক্ত করবেন, SDK যোগ করবেন, আপনার নির্বাচিত API প্রদানকারীর জন্য ব্যাকএন্ড পরিষেবা শুরু করবেন এবং একটি ImagenModel ইনস্ট্যান্স তৈরি করবেন তা বর্ণনা করা হয়েছে।
এই ক্ষমতা সমর্থন করে এমন মডেলগুলি
ইমেজেন তার capability মডেলের মাধ্যমে চিত্র সম্পাদনা প্রদান করে:
-
imagen-3.0-capability-001
মনে রাখবেন যে Imagen মডেলের জন্য, global অবস্থান সমর্থিত নয় ।
একটি নিয়ন্ত্রিত কাস্টমাইজেশন অনুরোধ পাঠান
নিম্নলিখিত নমুনাটি একটি নিয়ন্ত্রিত কাস্টমাইজেশন অনুরোধ দেখায় যা মডেলটিকে প্রদত্ত রেফারেন্স চিত্রের উপর ভিত্তি করে একটি নতুন চিত্র তৈরি করতে বলে (এই উদাহরণে, স্থানের একটি অঙ্কন, যেমন একটি রকেট এবং চাঁদ)। যেহেতু রেফারেন্স চিত্রটি একটি রুক্ষ, হাতে আঁকা স্কেচ বা রূপরেখা , তাই এটি নিয়ন্ত্রণ প্রকার CONTROL_TYPE_SCRIBBLE ব্যবহার করে।
যদি আপনার রেফারেন্স ছবিটি একটি Canny edge ছবি অথবা একটি face mesh হয়, তাহলে আপনি এই উদাহরণটিও ব্যবহার করতে পারেন তবে নিম্নলিখিত পরিবর্তনগুলি সহ:
যদি আপনার রেফারেন্স ছবিটি একটি Canny edge ছবি হয়, তাহলে
CONTROL_TYPE_CANNYনিয়ন্ত্রণ প্রকারটি ব্যবহার করুন।যদি আপনার রেফারেন্স ছবিটি ফেস মেশ হয়, তাহলে
CONTROL_TYPE_FACE_MESHকন্ট্রোল টাইপ ব্যবহার করুন। এই কন্ট্রোলটি শুধুমাত্র লোকেদের সাবজেক্ট কাস্টমাইজেশনের সাথে ব্যবহার করা যেতে পারে।
প্রম্পট লেখা এবং সেগুলির মধ্যে রেফারেন্স ছবি কীভাবে ব্যবহার করবেন তা জানতে এই পৃষ্ঠায় পরে প্রম্পট টেমপ্লেটগুলি পর্যালোচনা করুন।
সুইফট
Swift-এর জন্য Imagen মডেলের মাধ্যমে ছবি সম্পাদনা সমর্থিত নয়। এই বছরের শেষের দিকে আবার দেখুন!
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 controlReference = ImagenControlReference(
image = referenceImage,
referenceID = 1,
controlType = CONTROL_TYPE_SCRIBBLE
)
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
val prompt = "A cat flying through outer space arranged like the space scribble[1]"
// Use the editImage API to perform the controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
val editedImage = model.editImage(
referenceImages = listOf(controlReference),
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.
ImagenControlReference controlReference = new ImagenControlReference.Builder()
.setImage(referenceImage)
.setReferenceID(1)
.setControlType(CONTROL_TYPE_SCRIBBLE)
.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 flying through outer space arranged like the space scribble[1]";
// 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 controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
Futures.addCallback(model.editImage(Collections.singletonList(controlReference), prompt, imagenEditingConfig), new FutureCallback<ImagenGenerationResponse>() {
@Override
public void onSuccess(ImagenGenerationResponse result) {
if (result.getImages().isEmpty()) {
Log.d("TAG", "No images generated");
}
Bitmap bitmap = ((ImagenInlineImage) result.getImages().get(0)).asBitmap();
// Use the bitmap to display the image in your UI
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
Web
ওয়েব অ্যাপের জন্য ইমেজেন মডেলের মাধ্যমে ছবি সম্পাদনা করা সমর্থিত নয়। এই বছরের শেষের দিকে আবার দেখুন!
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 control reference using the reference image.
final controlReference = ImagenControlReference(
image: referenceImage,
referenceId: 1,
controlType: ImagenControlType.scribble,
);
// Provide a prompt that describes the final image.
// The "[1]" links the prompt to the subject reference with ID 1.
final prompt = "A cat flying through outer space arranged like the space scribble[1]";
try {
// Use the editImage API to perform the controlled customization.
// Pass the list of references, the prompt, and an editing configuration.
final response = await model.editImage(
[controlReference],
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');
}
ঐক্য
ইউনিটিতে ইমেজেন মডেলের মাধ্যমে ছবি সম্পাদনা করা যাবে না। এই বছরের শেষের দিকে আবার দেখুন!
প্রম্পট টেমপ্লেট
অনুরোধে, আপনি একটি ImagenControlReference সংজ্ঞায়িত করে রেফারেন্স ছবি (সর্বোচ্চ ৪টি ছবি) প্রদান করেন যেখানে আপনি একটি ছবির জন্য একটি রেফারেন্স আইডি নির্দিষ্ট করেন। মনে রাখবেন যে একাধিক ছবির একই রেফারেন্স আইডি থাকতে পারে (উদাহরণস্বরূপ, একই ধারণার একাধিক স্ক্রিবল)।
তারপর, প্রম্পট লেখার সময়, আপনি এই আইডিগুলি উল্লেখ করেন। উদাহরণস্বরূপ, আপনি প্রম্পটে [1] ব্যবহার করে রেফারেন্স আইডি 1 সহ ছবিগুলি উল্লেখ করেন।
নিম্নলিখিত টেবিলে প্রম্পট টেমপ্লেটগুলি প্রদান করা হয়েছে যা নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য প্রম্পট লেখার জন্য একটি সূচনা বিন্দু হতে পারে।
| ব্যবহারের ধরণ | রেফারেন্স ছবি | প্রম্পট টেমপ্লেট | উদাহরণ |
|---|---|---|---|
| নিয়ন্ত্রিত কাস্টমাইজেশন | স্ক্রিবল ম্যাপ (1) | বর্ণনার সাথে মিলে scribble map [1] এর সাথে সামঞ্জস্যপূর্ণ একটি ছবি তৈরি করুন: ${STYLE_PROMPT} ${PROMPT} । | বর্ণনার সাথে মিলে এমন একটি ছবি তৈরি করুন যা scribble map [1] সাথে সামঞ্জস্যপূর্ণ: ছবিটি একটি ইম্প্রেশনিস্ট তৈলচিত্রের স্টাইলে হওয়া উচিত যেখানে আরামদায়ক ব্রাশস্ট্রোক থাকবে। এতে প্রাকৃতিকভাবে আলোকিত পরিবেশ এবং লক্ষণীয় ব্রাশস্ট্রোক থাকবে। একটি গাড়ির পার্শ্ব-দৃশ্য। গাড়িটি একটি ভেজা, প্রতিফলিত রাস্তার পৃষ্ঠে পার্ক করা আছে, যেখানে শহরের আলোগুলি জলাশয়ে প্রতিফলিত হচ্ছে। |
| নিয়ন্ত্রিত কাস্টমাইজেশন | ক্যানি কন্ট্রোল ইমেজ (1) | বর্ণনার সাথে মিল রেখে edge map [1] এর সাথে সারিবদ্ধ একটি ছবি তৈরি করুন: ${STYLE_PROMPT} ${PROMPT} | বর্ণনার সাথে মিল রেখে edge map [1] এর সাথে সামঞ্জস্যপূর্ণ একটি ছবি তৈরি করুন: ছবিটি একটি ইম্প্রেশনিস্ট তৈলচিত্রের স্টাইলে হওয়া উচিত, আরামদায়ক ব্রাশস্ট্রোক সহ। এতে একটি প্রাকৃতিকভাবে আলোকিত পরিবেশ এবং লক্ষণীয় ব্রাশস্ট্রোক রয়েছে। একটি গাড়ির পার্শ্ব-দৃশ্য। গাড়িটি একটি ভেজা, প্রতিফলিত রাস্তার পৃষ্ঠে পার্ক করা আছে, যেখানে শহরের আলোগুলি জলাশয়ে প্রতিফলিত হচ্ছে। |
| ফেসমেশ ইনপুট ব্যবহার করে ব্যক্তির ছবির স্টাইলাইজেশন | বিষয় চিত্র (১-৩) ফেসমেশ নিয়ন্ত্রণ চিত্র (1) | CONTROL_IMAGE [2] এর ভঙ্গিতে SUBJECT_DESCRIPTION [1] সম্পর্কে একটি ছবি তৈরি করুন যাতে বর্ণনার সাথে মিল থাকে: SUBJECT_DESCRIPTION [1] ${PROMPT} এর একটি প্রতিকৃতি | control image [2] এর ভঙ্গিতে a woman with short hair [1] একটি ছবি তৈরি করুন যা বর্ণনার সাথে মিলে যায়: a woman with short hair [1] একটি প্রতিকৃতি 3D-কার্টুন স্টাইলে এবং একটি ঝাপসা ব্যাকগ্রাউন্ডে। একটি সুন্দর এবং সুন্দর চরিত্র, হাসিমুখে ক্যামেরার দিকে তাকিয়ে, প্যাস্টেল রঙের স্বর ... |
| ফেসমেশ ইনপুট ব্যবহার করে ব্যক্তির ছবির স্টাইলাইজেশন | বিষয় চিত্র (১-৩) ফেসমেশ নিয়ন্ত্রণ চিত্র (1) | CONTROL_IMAGE [2] এর ভঙ্গিতে SUBJECT_DESCRIPTION [1] সম্পর্কে একটি ${STYLE_PROMPT} ছবি তৈরি করুন যাতে বর্ণনার সাথে মিল থাকে: SUBJECT_DESCRIPTION [1] ${PROMPT} এর একটি প্রতিকৃতি | control image [2] ভঙ্গিতে a woman with short hair [1] একটি 3D-কার্টুন স্টাইলের ছবি তৈরি করুন যা বর্ণনার সাথে মিলে যায়: ঝাপসা ব্যাকগ্রাউন্ড সহ 3D-কার্টুন স্টাইলে a woman with short hair [1] একটি প্রতিকৃতি । একটি সুন্দর এবং সুন্দর চরিত্র, হাসিমুখে, ক্যামেরার দিকে তাকিয়ে, প্যাস্টেল রঙের স্বর ... |
সর্বোত্তম অনুশীলন এবং সীমাবদ্ধতা
ব্যবহারের ক্ষেত্রে
কাস্টমাইজেশন ক্ষমতাটি ফ্রি-স্টাইল প্রম্পটিং প্রদান করে, যা এই ধারণা দিতে পারে যে মডেলটি যা করার জন্য প্রশিক্ষিত তার চেয়েও বেশি কিছু করতে পারে। নিম্নলিখিত বিভাগগুলিতে কাস্টমাইজেশনের জন্য উদ্দেশ্যমূলক ব্যবহারের ক্ষেত্রে এবং অনিচ্ছাকৃত ব্যবহারের ক্ষেত্রে অ-সম্পূর্ণ উদাহরণ বর্ণনা করা হয়েছে।
আমরা এই ক্ষমতাটি ব্যবহারের জন্য সুপারিশ করছি, কারণ আমরা মডেলটিকে সেই ব্যবহারের ক্ষেত্রে প্রশিক্ষণ দিয়েছি এবং তাদের জন্য ভালো ফলাফল আশা করি। বিপরীতভাবে, যদি আপনি মডেলটিকে উদ্দেশ্যমূলক ব্যবহারের ক্ষেত্রের বাইরে কিছু করার জন্য চাপ দেন, তাহলে আপনার খারাপ ফলাফল আশা করা উচিত।
উদ্দেশ্যপ্রণোদিত ব্যবহারের ক্ষেত্রে
নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য নিম্নলিখিত ব্যবহারের উদাহরণ দেওয়া হল:
প্রম্পট এবং ক্যানি এজ কন্ট্রোল ইমেজ অনুসরণ করে এমন একটি ছবি তৈরি করুন।
প্রম্পট এবং স্ক্রিবল ইমেজ অনুসরণ করে এমন একটি ছবি তৈরি করুন।
মুখের ভাব সংরক্ষণ করে একজন ব্যক্তির ছবি স্টাইলাইজ করুন।
অনিচ্ছাকৃত ব্যবহারের উদাহরণ
নিচে একটি নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য অনিচ্ছাকৃত ব্যবহারের ক্ষেত্রের একটি সম্পূর্ণ তালিকা দেওয়া হল। মডেলটি এই ব্যবহারের ক্ষেত্রে প্রশিক্ষিত নয়, এবং সম্ভবত খারাপ ফলাফল দেবে।
প্রম্পটে উল্লেখিত একটি স্টাইল ব্যবহার করে একটি ছবি তৈরি করুন।
একটি রেফারেন্স ইমেজ দ্বারা প্রদত্ত একটি নির্দিষ্ট স্টাইল অনুসরণ করে এমন টেক্সট থেকে একটি ছবি তৈরি করুন, যেখানে কন্ট্রোল ইমেজ ব্যবহার করে ছবির গঠনের উপর কিছু নিয়ন্ত্রণ থাকবে।
একটি রেফারেন্স চিত্র দ্বারা প্রদত্ত একটি নির্দিষ্ট শৈলী অনুসরণ করে এমন পাঠ্য থেকে একটি চিত্র তৈরি করুন, একটি নিয়ন্ত্রণ স্ক্রিবল ব্যবহার করে চিত্র রচনার উপর কিছু স্তরের নিয়ন্ত্রণ সহ।
রেফারেন্স ইমেজ দ্বারা প্রদত্ত একটি নির্দিষ্ট স্টাইল অনুসরণ করে এমন টেক্সট থেকে একটি ছবি তৈরি করুন, একটি কন্ট্রোল ইমেজ ব্যবহার করে ছবির গঠনের উপর কিছু মাত্রার নিয়ন্ত্রণ থাকবে। ছবিতে থাকা ব্যক্তির একটি নির্দিষ্ট মুখের অভিব্যক্তি রয়েছে।
দুই বা ততোধিক ব্যক্তির একটি ছবি স্টাইলাইজ করুন এবং তাদের মুখের ভাব সংরক্ষণ করুন।
একটি পোষা প্রাণীর ছবি স্টাইলাইজ করুন এবং এটিকে একটি অঙ্কনে পরিণত করুন। ছবির গঠন সংরক্ষণ করুন বা নির্দিষ্ট করুন (উদাহরণস্বরূপ, জলরঙ)।