Firebase AI Logic SDKs ব্যবহার করে একটি নির্দিষ্ট নিয়ন্ত্রণের উপর ভিত্তি করে চিত্র সম্পাদনা বা তৈরি করতে Imagen থেকে কাস্টমাইজেশন ক্ষমতা কীভাবে ব্যবহার করা যায় তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে।
এটি কীভাবে কাজ করে : আপনি একটি পাঠ্য প্রম্পট এবং কমপক্ষে একটি নিয়ন্ত্রণ রেফারেন্স চিত্র প্রদান করেন (যেমন একটি অঙ্কন বা একটি ক্যানি এজ চিত্র)। মডেলটি কন্ট্রোল ইমেজের উপর ভিত্তি করে একটি নতুন ছবি তৈরি করতে এই ইনপুটগুলি ব্যবহার করে।
উদাহরণস্বরূপ, আপনি অঙ্কনের উপর ভিত্তি করে একটি জলরঙের পেইন্টিং তৈরি করতে টেক্সট প্রম্পটের সাথে একটি রকেট জাহাজ এবং চাঁদের অঙ্কন সহ মডেলটি সরবরাহ করতে পারেন।
নিয়ন্ত্রণ রেফারেন্স ইমেজ প্রকার
নিয়ন্ত্রিত কাস্টমাইজেশনের জন্য রেফারেন্স ইমেজ একটি স্ক্রীবল , একটি ক্যানি এজ ইমেজ , বা একটি ফেস মেশ হতে পারে।
একটি স্ক্রাইবল হল একটি রুক্ষ, হাতে আঁকা স্কেচ বা রূপরেখা যা মডেলটিকে একটি মৌলিক কাঠামো, স্থানিক বিন্যাস এবং অনুসরণ করার জন্য বিন্যাস প্রদান করে। টেক্সট প্রম্পট জেনারেট করা ছবির জন্য বিশদ, রঙ এবং টেক্সচার প্রদান করে।
উদাহরণ: আপনি একটি বাড়ি, একটি গাছ এবং একটি সূর্যের একটি অঙ্কন প্রদান করেন এবং আপনি একটি পাঠ্য প্রম্পটও প্রদান করেন যেমন "সূর্যোদয়ের সময় একটি বড় ওক গাছের পাশে একটি কুটিরের একটি অদ্ভুত জলরঙের চিত্র।" মডেলটি তারপরে আপনার অঙ্কন থেকে সাধারণ বিন্যাস অনুসরণ করার সময় বর্ণিত দৃশ্যের সাথে মেলে এমন একটি চিত্র তৈরি করবে।
একটি ক্যানি এজ ইমেজ হল যেখানে একটি অ্যালগরিদম, বিশেষ করে ক্যানি এজ ডিটেক্টর , একটি সোর্স ইমেজে প্রয়োগ করা হয়েছে ইমেজের মধ্যে থাকা বস্তুর প্রান্ত ম্যাপ করার জন্য। এই প্রান্তগুলি টেক্সট প্রম্পট দ্বারা নির্দিষ্ট করা শৈলী, রঙ বা অন্যান্য বৈশিষ্ট্যগুলি পরিবর্তন করার সময় বস্তুর সুনির্দিষ্ট কাঠামো বজায় রাখতে মডেলটিকে সহায়তা করে।
উদাহরণ: আপনার একটি সোফায় বসে থাকা একটি কুকুরের ছবি রয়েছে৷ শুধু কুকুর এবং পালঙ্কের রূপরেখার একটি চিত্র পেতে আপনি ফটোতে ক্যানি এজ ডিটেক্টর চালান। তারপরে আপনি এই প্রান্ত মানচিত্রটিকে নিয়ন্ত্রণ চিত্র এবং একটি টেক্সট প্রম্পট হিসাবে ব্যবহার করুন যেমন "একটি চামড়ার সোফায় একটি সোনার পুনরুদ্ধার কুকুরছানার ফটো।" মডেলটি একটি নতুন ফটো তৈরি করবে যা আসল কুকুরের সঠিক ভঙ্গি এবং পালঙ্কের সংমিশ্রণের সাথে মেলে, তবে মূল বিষয়গুলির পরিবর্তে একটি সোনার পুনরুদ্ধার কুকুরছানা এবং একটি চামড়ার সোফা সহ।
- একটি ফেস মেশ হল একটি ছবি যা মডেলকে একটি নির্দিষ্ট মুখ বুঝতে এবং প্রতিলিপি করতে সাহায্য করে৷ এটি 3D তে একটি মানুষের মুখের একটি ডিজিটাল উপস্থাপনা, সাধারণত আন্তঃসংযুক্ত বিন্দু (উল্লম্ব) এবং ত্রিভুজগুলির একটি নেটওয়ার্ক যা মুখের আকৃতি এবং রূপকে সংজ্ঞায়িত করে। এটি মডেলটিকে মূল ল্যান্ডমার্ক (যেমন চোখ, নাক এবং মুখ) এবং টেক্সচার প্রদান করে।
আপনি শুরু করার আগে
আপনার API প্রদানকারী হিসাবে Vertex AI Gemini API ব্যবহার করার সময় শুধুমাত্র উপলব্ধ। |
যদি আপনি ইতিমধ্যেই না করে থাকেন, শুরু করার নির্দেশিকাটি সম্পূর্ণ করুন, যা বর্ণনা করে যে কীভাবে আপনার Firebase প্রকল্প সেট আপ করবেন, আপনার অ্যাপকে Firebase-এর সাথে সংযুক্ত করবেন, SDK যোগ করবেন, আপনার নির্বাচিত API প্রদানকারীর জন্য ব্যাকএন্ড পরিষেবা শুরু করবেন এবং একটি ImagenModel
উদাহরণ তৈরি করবেন।
মডেল যে এই ক্ষমতা সমর্থন করে
ইমেজেন তার capability
মডেলের মাধ্যমে চিত্র সম্পাদনা অফার করে:
-
imagen-3.0-capability-001
মনে রাখবেন যে Imagen মডেলের জন্য, global
অবস্থান সমর্থিত নয় ।
একটি নিয়ন্ত্রিত কাস্টমাইজেশন অনুরোধ পাঠান
নিম্নলিখিত নমুনাটি একটি নিয়ন্ত্রিত কাস্টমাইজেশন অনুরোধ দেখায় যা মডেলটিকে প্রদত্ত রেফারেন্স চিত্রের উপর ভিত্তি করে একটি নতুন চিত্র তৈরি করতে বলে (এই উদাহরণে, রকেট এবং চাঁদের মতো স্থানের অঙ্কন)। যেহেতু রেফারেন্স চিত্রটি একটি রুক্ষ, হাতে আঁকা স্কেচ বা রূপরেখা , তাই এটি নিয়ন্ত্রণ প্রকার CONTROL_TYPE_SCRIBBLE
ব্যবহার করে।
যদি আপনার রেফারেন্স ইমেজটি একটি ক্যানি এজ ইমেজ বা একটি ফেস মেশ হয় তবে আপনি এই উদাহরণটি ব্যবহার করতে পারেন তবে নিম্নলিখিত পরিবর্তনগুলি সহ:
যদি আপনার রেফারেন্স ইমেজ একটি ক্যানি এজ ইমেজ হয়, তাহলে কন্ট্রোল টাইপ
CONTROL_TYPE_CANNY
ব্যবহার করুন।যদি আপনার রেফারেন্স ইমেজ একটি ফেস মেশ হয়, তাহলে কন্ট্রোল টাইপ
CONTROL_TYPE_FACE_MESH
ব্যবহার করুন। এই নিয়ন্ত্রণ শুধুমাত্র মানুষের বিষয় কাস্টমাইজেশন সঙ্গে ব্যবহার করা যেতে পারে.
এই পৃষ্ঠায় পরে প্রম্পট টেমপ্লেটগুলি পর্যালোচনা করুন প্রম্পট লেখার বিষয়ে এবং তাদের মধ্যে রেফারেন্স চিত্রগুলি কীভাবে ব্যবহার করবেন তা শিখতে।
সুইফট
ইমেজেন মডেলের সাথে ছবি সম্পাদনা সুইফটের জন্য সমর্থিত নয়। এই বছরের পরে আবার চেক করুন!
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(
references = 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 = 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
সংজ্ঞায়িত করে রেফারেন্স ইমেজ (4টি ছবি পর্যন্ত) প্রদান করেন যেখানে আপনি একটি ছবির জন্য একটি রেফারেন্স আইডি উল্লেখ করেন। মনে রাখবেন যে একাধিক ছবিতে একই রেফারেন্স আইডি থাকতে পারে (উদাহরণস্বরূপ, একই ধারণার একাধিক স্ক্রিবল)।
তারপর, প্রম্পট লেখার সময়, আপনি এই আইডিগুলি উল্লেখ করুন। উদাহরণস্বরূপ, আপনি রেফারেন্স আইডি 1
সহ চিত্রগুলি উল্লেখ করতে প্রম্পটে [1]
ব্যবহার করেন।
নিম্নলিখিত টেবিলটি প্রম্পট টেমপ্লেটগুলি প্রদান করে যা নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য প্রম্পট লেখার জন্য একটি সূচনা বিন্দু হতে পারে।
কেস ব্যবহার করুন | রেফারেন্স ইমেজ | প্রম্পট টেমপ্লেট | উদাহরণ |
---|---|---|---|
নিয়ন্ত্রিত কাস্টমাইজেশন | স্ক্রিবল মানচিত্র (1) | বর্ণনার সাথে মেলে এমন একটি চিত্র তৈরি করুন যা scribble map [1] : ${STYLE_PROMPT} ${PROMPT} । | বর্ণনার সাথে মেলে এমন একটি চিত্র তৈরি করুন যা scribble map [1] : চিত্রটি শিথিল ব্রাশস্ট্রোক সহ একটি ইম্প্রেশনিস্টিক তেল চিত্রের শৈলীতে হওয়া উচিত। এটি একটি প্রাকৃতিকভাবে আলোকিত পরিবেশ এবং লক্ষণীয় ব্রাশস্ট্রোক ধারণ করে। একটি গাড়ির পাশের দৃশ্য। গাড়িটি একটি ভেজা, প্রতিফলিত রাস্তার উপরিভাগে পার্ক করা হয়েছে, যেখানে শহরের আলোগুলো পুডলে প্রতিফলিত হচ্ছে। |
নিয়ন্ত্রিত কাস্টমাইজেশন | ক্যানি কন্ট্রোল ইমেজ (1) | বর্ণনার সাথে মেলে edge map [1] : ${STYLE_PROMPT} ${PROMPT} | বর্ণনার সাথে মেলে edge map [1] : চিত্রটি একটি ইম্প্রেশনিস্টিক তেল পেইন্টিংয়ের স্টাইলে হওয়া উচিত, আরামদায়ক ব্রাশস্ট্রোক সহ। এটি একটি প্রাকৃতিকভাবে আলোকিত পরিবেশ এবং লক্ষণীয় ব্রাশস্ট্রোক ধারণ করে। একটি গাড়ির পাশের দৃশ্য। গাড়িটি একটি ভেজা, প্রতিফলিত রাস্তার উপরিভাগে পার্ক করা হয়েছে, যেখানে শহরের আলোগুলো পুডলে প্রতিফলিত হচ্ছে। |
FaceMesh ইনপুট সহ ব্যক্তির ছবি স্টাইলাইজেশন | বিষয় চিত্র (1-3) ফেসমেশ নিয়ন্ত্রণ চিত্র (1) | বর্ণনার সাথে মেলে CONTROL_IMAGE [2] এর ভঙ্গিতে SUBJECT_DESCRIPTION [1] সম্পর্কে একটি চিত্র তৈরি করুন: SUBJECT_DESCRIPTION [1] ${PROMPT} এর একটি প্রতিকৃতি | কন্ট্রোল ইমেজের ভঙ্গিতে a woman with short hair [1] সম্পর্কে একটি চিত্র তৈরি করুন control image [2] বর্ণনার সাথে মেলে: একটি অস্পষ্ট পটভূমি সহ 3D-কার্টুন শৈলীতে a woman with short hair [1] প্রতিকৃতি৷ একটি চতুর এবং সুন্দর চরিত্র, একটি হাস্যোজ্জ্বল মুখ, ক্যামেরার দিকে তাকিয়ে, প্যাস্টেল রঙের টোন ... |
FaceMesh ইনপুট সহ ব্যক্তির ছবি স্টাইলাইজেশন | বিষয় চিত্র (1-3) ফেসমেশ নিয়ন্ত্রণ চিত্র (1) | বর্ণনার সাথে মেলাতে CONTROL_IMAGE [2] এর ভঙ্গিতে SUBJECT_DESCRIPTION [1] সম্পর্কে একটি ${STYLE_PROMPT} ছবি তৈরি করুন: SUBJECT_DESCRIPTION [1] ${PROMPT}- এর একটি প্রতিকৃতি | কন্ট্রোল ইমেজের ভঙ্গিতে a woman with short hair [1] সম্পর্কে একটি 3D-কার্টুন শৈলীর চিত্র তৈরি করুন control image [2] বর্ণনার সাথে মিলিত হতে: একটি ঝাপসা পটভূমি সহ 3D-কার্টুন শৈলীতে a woman with short hair [1] প্রতিকৃতি৷ একটি চতুর এবং সুন্দর চরিত্র, একটি হাস্যোজ্জ্বল মুখ, ক্যামেরার দিকে তাকিয়ে, প্যাস্টেল রঙের টোন ... |
সর্বোত্তম অনুশীলন এবং সীমাবদ্ধতা
কেস ব্যবহার করুন
কাস্টমাইজেশন ক্ষমতা ফ্রি-স্টাইল প্রম্পটিং অফার করে, যা এই ধারণা দিতে পারে যে মডেলটি প্রশিক্ষিত হওয়ার চেয়ে বেশি কিছু করতে পারে। নিম্নলিখিত বিভাগগুলি কাস্টমাইজেশনের জন্য উদ্দিষ্ট ব্যবহারের ক্ষেত্রে এবং অপ্রত্যাশিত ব্যবহারের ক্ষেত্রেগুলির অ-সম্পূর্ণ উদাহরণ বর্ণনা করে।
আমরা উদ্দেশ্যপ্রণোদিত ব্যবহারের ক্ষেত্রে এই ক্ষমতা ব্যবহার করার পরামর্শ দিই, যেহেতু আমরা সেই ব্যবহারের ক্ষেত্রে মডেলটিকে প্রশিক্ষণ দিয়েছি এবং তাদের জন্য ভাল ফলাফল আশা করি৷ বিপরীতভাবে, আপনি যদি মডেলটিকে উদ্দেশ্যপ্রণোদিত ব্যবহারের ক্ষেত্রের বাইরে কিছু করতে চাপ দেন, তাহলে আপনার খারাপ ফলাফল আশা করা উচিত।
উদ্দেশ্যে ব্যবহার ক্ষেত্রে
একটি নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য নিম্নলিখিতগুলি উদ্দেশ্যমূলক ব্যবহারের ক্ষেত্রে:
একটি ইমেজ তৈরি করুন যা প্রম্পট এবং ক্যানি এজ কন্ট্রোল ইমেজ অনুসরণ করে।
একটি চিত্র তৈরি করুন যা প্রম্পট এবং স্ক্রাইবল চিত্রগুলি অনুসরণ করে।
মুখের অভিব্যক্তি সংরক্ষণ করার সময় একজন ব্যক্তির একটি ছবি স্টাইলাইজ করুন।
অনিচ্ছাকৃত ব্যবহারের ক্ষেত্রে উদাহরণ
নিয়ন্ত্রণের উপর ভিত্তি করে কাস্টমাইজেশনের জন্য অপ্রত্যাশিত ব্যবহারের ক্ষেত্রের একটি অ-সম্পূর্ণ তালিকা নিচে দেওয়া হল। মডেলটি এই ব্যবহারের ক্ষেত্রে প্রশিক্ষিত নয় এবং সম্ভবত খারাপ ফলাফল দেবে।
প্রম্পটে নির্দিষ্ট একটি শৈলী ব্যবহার করে একটি চিত্র তৈরি করুন।
পাঠ্য থেকে একটি চিত্র তৈরি করুন যা একটি রেফারেন্স চিত্র দ্বারা প্রদত্ত একটি নির্দিষ্ট শৈলী অনুসরণ করে, নিয়ন্ত্রণ চিত্র ব্যবহার করে চিত্র রচনার উপর কিছু স্তরের নিয়ন্ত্রণ সহ।
টেক্সট থেকে একটি ইমেজ তৈরি করুন যা একটি রেফারেন্স ইমেজ দ্বারা প্রদত্ত একটি নির্দিষ্ট শৈলী অনুসরণ করে, একটি কন্ট্রোল স্ক্রিবল ব্যবহার করে ইমেজ কম্পোজিশনের উপর কিছু স্তরের নিয়ন্ত্রণ সহ।
পাঠ্য থেকে একটি চিত্র তৈরি করুন যা রেফারেন্স চিত্র দ্বারা প্রদত্ত একটি নির্দিষ্ট শৈলী অনুসরণ করে, একটি নিয়ন্ত্রণ চিত্র ব্যবহার করে চিত্র রচনার উপর কিছু স্তরের নিয়ন্ত্রণ সহ। ছবিতে থাকা ব্যক্তির একটি নির্দিষ্ট মুখের অভিব্যক্তি রয়েছে।
দুই বা ততোধিক ব্যক্তির একটি ফটো স্টাইলাইজ করুন এবং তাদের মুখের অভিব্যক্তি সংরক্ষণ করুন।
একটি পোষা প্রাণীর একটি ছবি স্টাইলাইজ করুন এবং এটিকে একটি অঙ্কনে পরিণত করুন৷ চিত্রের গঠন সংরক্ষণ বা নির্দিষ্ট করুন (উদাহরণস্বরূপ, জলরঙ)।