MediaPipe Image Generator টাস্কটি আপনাকে একটি টেক্সট প্রম্পটের উপর ভিত্তি করে ছবি তৈরি করতে দেয়। এই টাস্কটি ডিফিউশন কৌশল ব্যবহার করে ছবি তৈরি করার জন্য একটি টেক্সট-টু-ইমেজ মডেল ব্যবহার করে।
এই টাস্কটি ইনপুট হিসেবে একটি টেক্সট প্রম্পট গ্রহণ করে, সাথে একটি ঐচ্ছিক কন্ডিশন ইমেজও থাকে যা মডেলটি অগমেন্ট করতে পারে এবং জেনারেশনের জন্য রেফারেন্স হিসেবে ব্যবহার করতে পারে। ইমেজ জেনারেটর ট্রেনিং বা রিট্রেনিংয়ের সময় মডেলকে দেওয়া নির্দিষ্ট কনসেপ্টের উপর ভিত্তি করেও ইমেজ তৈরি করতে পারে। আরও তথ্যের জন্য, LoRA দিয়ে কাস্টমাইজ করুন দেখুন।
এই নির্দেশাবলীতে বর্ণিত কোড নমুনাটি গিটহাবে পাওয়া যায়। এই টাস্কের সক্ষমতা, মডেল এবং কনফিগারেশন বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কোডের উদাহরণ
MediaPipe Tasks উদাহরণ কোডটি অ্যান্ড্রয়েডের জন্য একটি ইমেজ জেনারেটর অ্যাপের প্রাথমিক বাস্তবায়ন। আপনি আপনার নিজের অ্যান্ড্রয়েড অ্যাপের জন্য এটিকে একটি সূচনা বিন্দু হিসাবে ব্যবহার করতে পারেন, অথবা বিদ্যমান কোনো অ্যাপ পরিবর্তন করার সময় এটিকে রেফারেন্স হিসেবে ব্যবহার করতে পারেন। ইমেজ জেনারেটর উদাহরণ কোডটি গিটহাবে হোস্ট করা আছে।
কোডটি ডাউনলোড করুন
নিম্নলিখিত নির্দেশাবলীতে দেখানো হয়েছে কীভাবে গিট কমান্ড লাইন টুল ব্যবহার করে উদাহরণ কোডের একটি স্থানীয় অনুলিপি তৈরি করতে হয়।
উদাহরণ কোড ডাউনলোড করতে:
- নিম্নলিখিত কমান্ডটি ব্যবহার করে গিট রিপোজিটরিটি ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
- ঐচ্ছিকভাবে, আপনার গিট ইনস্ট্যান্সকে স্পার্স চেকআউট ব্যবহার করার জন্য কনফিগার করুন, যাতে আপনার কাছে শুধুমাত্র ইমেজ জেনারেটর উদাহরণ অ্যাপটির ফাইলগুলো থাকে:
cd mediapipe-samples git sparse-checkout init --cone git sparse-checkout set examples/image_generation/android
উদাহরণ কোডটির একটি স্থানীয় সংস্করণ তৈরি করার পর, আপনি প্রজেক্টটি অ্যান্ড্রয়েড স্টুডিওতে ইম্পোর্ট করে অ্যাপটি চালাতে পারেন। নির্দেশাবলীর জন্য, অ্যান্ড্রয়েডের সেটআপ গাইড দেখুন।
মূল উপাদান
নিম্নলিখিত ফাইলগুলিতে এই চিত্র তৈরির উদাহরণ অ্যাপ্লিকেশনটির জন্য গুরুত্বপূর্ণ কোড রয়েছে:
- ImageGenerationHelper.kt : টাস্কটি শুরু করে এবং ইমেজ তৈরির কাজটি পরিচালনা করে।
- DiffusionActivity.kt : প্লাগইন বা LoRA ওয়েট সক্রিয় না থাকলে ছবি তৈরি করে।
- PluginActivity.kt : প্লাগইন মডেলগুলো বাস্তবায়ন করে, যা ব্যবহারকারীদের ইনপুট হিসেবে একটি শর্তাধীন ছবি প্রদান করতে সক্ষম করে।
- LoRAWeightActivity.kt : LoRA ওয়েটগুলো অ্যাক্সেস ও পরিচালনা করে, যা ফাউন্ডেশন মডেলগুলোকে কাস্টমাইজ করতে এবং নির্দিষ্ট কনসেপ্টের ছবি তৈরি করতে সক্ষম করার জন্য ব্যবহৃত হয়।
সেটআপ
এই বিভাগে বিশেষভাবে ইমেজ জেনারেটর ব্যবহার করার জন্য আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট এবং কোড প্রজেক্ট সেট আপ করার মূল ধাপগুলো বর্ণনা করা হয়েছে। মিডিয়াপাইপ টাস্ক ব্যবহারের জন্য আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার সাধারণ তথ্যের জন্য, প্ল্যাটফর্ম ভার্সনের প্রয়োজনীয়তা সহ, অ্যান্ড্রয়েডের জন্য সেটআপ গাইডটি দেখুন।
নির্ভরশীলতা
ইমেজ জেনারেটর টাস্কটি com.google.mediapipe:tasks-vision-image-generator লাইব্রেরি ব্যবহার করে। আপনার অ্যান্ড্রয়েড অ্যাপের build.gradle ফাইলে এই ডিপেন্ডেন্সিটি যোগ করুন:
dependencies {
implementation 'com.google.mediapipe:tasks-vision-image-generator:latest.release'
}
অ্যান্ড্রয়েড ১২ (এপিআই ৩১) বা তার উচ্চতর সংস্করণের ডিভাইসগুলোর জন্য নেটিভ ওপেনসিএল লাইব্রেরি ডিপেন্ডেন্সি যোগ করুন। আরও তথ্যের জন্য, uses-native-library ট্যাগ সম্পর্কিত ডকুমেন্টেশন দেখুন।
AndroidManifest.xml ফাইলে নিম্নলিখিত uses-native-library ট্যাগগুলো যোগ করুন:
<uses-native-library android:name="libOpenCL.so" android:required="false" />
<uses-native-library android:name="libOpenCL-car.so" android:required="false"/>
<uses-native-library android:name="libOpenCL-pixel.so" android:required="false" />
মডেল
MediaPipe ইমেজ জেনারেটর টাস্কটির জন্য একটি প্রশিক্ষিত ও সামঞ্জস্যপূর্ণ ভিত্তি মডেল প্রয়োজন। মডেলটি ডাউনলোড করার পর, প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ইনস্টল করুন এবং মডেলটিকে একটি উপযুক্ত ফরম্যাটে রূপান্তর করুন। তারপর, রূপান্তরিত মডেলটি অ্যান্ড্রয়েড ডিভাইসে পুশ করুন।
ইমেজ জেনারেটরের জন্য উপলব্ধ প্রশিক্ষিত মডেলগুলো সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ-এর মডেল বিভাগটি দেখুন।
ভিত্তি মডেল ডাউনলোড করুন
ইমেজ জেনারেটরের জন্য প্রয়োজন যে ভিত্তি মডেলটি নিম্নলিখিত মডেলের উপর ভিত্তি করে stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only মডেল ফরম্যাটের সাথে মিলবে: stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only ।
নির্ভরতাগুলি ইনস্টল করুন এবং মডেলটি রূপান্তর করুন
$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py
convert.py স্ক্রিপ্টটি চালান:
$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>
রূপান্তরিত মডেলটি ডিভাইসে পুশ করুন
<output_path> ফোল্ডারের বিষয়বস্তু অ্যান্ড্রয়েড ডিভাইসে পাঠান।
$ adb shell rm -r /data/local/tmp/image_generator/ # Remove any previously loaded weights
$ adb shell mkdir -p /data/local/tmp/image_generator/
$ adb push <output_path>/. /data/local/tmp/image_generator/bins
প্লাগইন মডেলগুলি ডাউনলোড করুন এবং LoRA ওয়েট যোগ করুন (ঐচ্ছিক)
আপনি যদি একটি প্লাগইন মডেল ব্যবহার করতে চান, তবে মডেলটি ডাউনলোড করতে হবে কিনা তা পরীক্ষা করে দেখুন। যে প্লাগইনগুলির জন্য অতিরিক্ত মডেলের প্রয়োজন হয়, সেই মডেলগুলি অবশ্যই APK-এর সাথে বান্ডেল করা থাকতে হবে অথবা প্রয়োজন অনুযায়ী ডাউনলোড করতে হবে। প্লাগইন মডেলগুলি হালকা (~২৩ মেগাবাইট) এবং সরাসরি APK-এর সাথে বান্ডেল করা যেতে পারে। তবে, আমরা প্রয়োজন অনুযায়ী প্লাগইন মডেল ডাউনলোড করার পরামর্শ দিই।
আপনি যদি LoRA দিয়ে কোনো মডেল কাস্টমাইজ করে থাকেন, তাহলে সেগুলো প্রয়োজন অনুযায়ী ডাউনলোড করুন। আরও তথ্যের জন্য, LoRA ওয়েটস প্লাগইন মডেল দেখুন।
টাস্কটি তৈরি করুন
MediaPipe Image Generator টাস্কটি সেট আপ করার জন্য createFromOptions() ফাংশনটি ব্যবহার করে। createFromOptions() ফাংশনটি কনফিগারেশন অপশনগুলোর জন্য ভ্যালু গ্রহণ করে। কনফিগারেশন অপশন সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন অপশনস দেখুন।
কনফিগারেশন বিকল্পগুলি
অ্যান্ড্রয়েড অ্যাপের জন্য এই টাস্কটিতে নিম্নলিখিত কনফিগারেশন অপশনগুলো রয়েছে:
| বিকল্পের নাম | বর্ণনা | মান পরিসীমা |
|---|---|---|
imageGeneratorModelDirectory | ইমেজ জেনারেটর মডেল ডিরেক্টরি, যেখানে মডেলের ওয়েটগুলো সংরক্ষিত থাকে। | PATH |
loraWeightsFilePath | LoRA ওয়েটস ফাইলের পাথ নির্ধারণ করে। এটি ঐচ্ছিক এবং শুধুমাত্র তখনই প্রযোজ্য যখন মডেলটি LoRA দিয়ে কাস্টমাইজ করা হয়েছে। | PATH |
errorListener | একটি ঐচ্ছিক ত্রুটি লিসেনার সেট করে। | N/A |
এই টাস্কটি প্লাগইন মডেলও সমর্থন করে, যা ব্যবহারকারীদের টাস্ক ইনপুটে কন্ডিশন ইমেজ অন্তর্ভুক্ত করার সুযোগ দেয়। ফাউন্ডেশন মডেলটি এই ইমেজগুলোকে অগমেন্ট করে এবং জেনারেশনের জন্য রেফারেন্স হিসেবে ব্যবহার করতে পারে। এই কন্ডিশন ইমেজগুলো হতে পারে ফেস ল্যান্ডমার্ক, এজ আউটলাইন এবং ডেপথ এস্টিমেট, যা মডেলটি ইমেজ জেনারেট করার জন্য অতিরিক্ত কনটেক্সট ও তথ্য হিসেবে ব্যবহার করে।
ফাউন্ডেশন মডেলে একটি প্লাগইন মডেল যোগ করার সময়, প্লাগইন অপশনগুলোও কনফিগার করুন। ফেস ল্যান্ডমার্ক প্লাগইন faceConditionOptions , ক্যানি এজ প্লাগইন edgeConditionOptions এবং ডেপথ প্লাগইন depthConditionOptions ব্যবহার করে।
চতুর প্রান্তের বিকল্পগুলি
edgeConditionOptions এ নিম্নলিখিত বিকল্পগুলি কনফিগার করুন।
| বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
|---|---|---|---|
threshold1 | হিস্টেরেসিস পদ্ধতির জন্য প্রথম থ্রেশহোল্ড। | Float | 100 |
threshold2 | হিস্টেরেসিস পদ্ধতির জন্য দ্বিতীয় থ্রেশহোল্ড। | Float | 200 |
apertureSize | সোবেল অপারেটরের জন্য অ্যাপারচারের আকার। সাধারণ পরিসর হলো ৩ থেকে ৭-এর মধ্যে। | Integer | 3 |
l2Gradient | ডিফল্ট L1 নর্মের পরিবর্তে, ছবির গ্রেডিয়েন্ট ম্যাগনিটিউড গণনা করতে L2 নর্ম ব্যবহার করা হবে কি না। | BOOLEAN | False |
EdgePluginModelBaseOptions | BaseOptions অবজেক্টটি প্লাগইন মডেলের পাথ নির্ধারণ করে। | BaseOptions অবজেক্ট | N/A |
এই কনফিগারেশন বিকল্পগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, ক্যানি এজ ডিটেক্টর দেখুন।
মুখের ল্যান্ডমার্ক বিকল্পগুলি
faceConditionOptions এ নিম্নলিখিত বিকল্পগুলি কনফিগার করুন।
| বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
|---|---|---|---|
minFaceDetectionConfidence | মুখ শনাক্তকরণ সফল বলে বিবেচিত হওয়ার জন্য ন্যূনতম কনফিডেন্স স্কোর। | Float [0.0,1.0] | 0.5 |
minFacePresenceConfidence | ফেস ল্যান্ডমার্ক ডিটেকশনে মুখের উপস্থিতি স্কোরের সর্বনিম্ন কনফিডেন্স স্কোর। | Float [0.0,1.0] | 0.5 |
faceModelBaseOptions | BaseOptions অবজেক্টটি সেই মডেলের পাথ নির্ধারণ করে, যা কন্ডিশন ইমেজ তৈরি করে। | BaseOptions অবজেক্ট | N/A |
FacePluginModelBaseOptions | BaseOptions অবজেক্টটি প্লাগইন মডেলের পাথ নির্ধারণ করে। | BaseOptions অবজেক্ট | N/A |
এই কনফিগারেশন অপশনগুলো কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, ফেস ল্যান্ডমার্কার টাস্কটি দেখুন।
গভীরতার বিকল্পগুলি
depthConditionOptions এ নিম্নলিখিত বিকল্পগুলি কনফিগার করুন।
| বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
|---|---|---|---|
depthModelBaseOptions | BaseOptions অবজেক্টটি সেই মডেলের পাথ নির্ধারণ করে, যা কন্ডিশন ইমেজ তৈরি করে। | BaseOptions অবজেক্ট | N/A |
depthPluginModelBaseOptions | BaseOptions অবজেক্টটি প্লাগইন মডেলের পাথ নির্ধারণ করে। | BaseOptions অবজেক্ট | N/A |
শুধুমাত্র ভিত্তি মডেল দিয়ে তৈরি করুন
val options = ImageGeneratorOptions.builder()
.setImageGeneratorModelDirectory(modelPath)
.build()
imageGenerator = ImageGenerator.createFromOptions(context, options)
প্লাগইন দিয়ে তৈরি করুন
আপনি যদি একটি ঐচ্ছিক প্লাগইন মডেল প্রয়োগ করেন, তাহলে setPluginModelBaseOptions ব্যবহার করে প্লাগইন মডেলটির জন্য বেস অপশনগুলো সেট করুন। কন্ডিশন ইমেজ তৈরি করার জন্য যদি প্লাগইন মডেলটির একটি অতিরিক্ত ডাউনলোড করা মডেলের প্রয়োজন হয়, তাহলে BaseOptions এ পাথটি উল্লেখ করুন।
মুখের ল্যান্ডমার্ক
val options = ImageGeneratorOptions.builder()
.setImageGeneratorModelDirectory(modelPath)
.build()
val faceModelBaseOptions = BaseOptions.builder()
.setModelAssetPath("face_landmarker.task")
.build()
val facePluginModelBaseOptions = BaseOptions.builder()
.setModelAssetPath("face_landmark_plugin.tflite")
.build()
val faceConditionOptions = FaceConditionOptions.builder()
.setFaceModelBaseOptions(faceModelBaseOptions)
.setPluginModelBaseOptions(facePluginModelBaseOptions)
.setMinFaceDetectionConfidence(0.3f)
.setMinFacePresenceConfidence(0.3f)
.build()
val conditionOptions = ConditionOptions.builder()
.setFaceConditionOptions(faceConditionOptions)
.build()
imageGenerator =
ImageGenerator.createFromOptions(context, options, conditionOptions)
ক্যানি এজ
val options = ImageGeneratorOptions.builder()
.setImageGeneratorModelDirectory(modelPath)
.build()
val edgePluginModelBaseOptions = BaseOptions.builder()
.setModelAssetPath("canny_edge_plugin.tflite")
.build()
val edgeConditionOptions = EdgeConditionOptions.builder()
.setThreshold1(100.0f)
.setThreshold2(100.0f)
.setApertureSize(3)
.setL2Gradient(false)
.setPluginModelBaseOptions(edgePluginModelBaseOptions)
.build()
val conditionOptions = ConditionOptions.builder()
.setEdgeConditionOptions(edgeConditionOptions)
.build()
imageGenerator =
ImageGenerator.createFromOptions(context, options, conditionOptions)
গভীরতা
val options = ImageGeneratorOptions.builder()
.setImageGeneratorModelDirectory(modelPath)
.build()
val depthModelBaseOptions = BaseOptions.builder()
.setModelAssetPath("depth_model.tflite")
.build()
val depthPluginModelBaseOptions = BaseOptions.builder()
.setModelAssetPath("depth_plugin.tflite")
.build()
val depthConditionOptions =
ConditionOptions.DepthConditionOptions.builder()
.setDepthModelBaseOptions(depthModelBaseOptions)
.setPluginModelBaseOptions(depthPluginModelBaseOptions)
.build()
val conditionOptions = ConditionOptions.builder()
.setDepthConditionOptions(depthConditionOptions)
.build()
imageGenerator =
ImageGenerator.createFromOptions(context, options, conditionOptions)
LoRA ওজন দিয়ে তৈরি করুন
আপনি যদি LoRA ওয়েট অন্তর্ভুক্ত করেন, তাহলে পাথের অবস্থান নির্দেশ করতে loraWeightsFilePath প্যারামিটারটি ব্যবহার করুন।
val options = ImageGeneratorOptions.builder()
.setLoraWeightsFilePath(weightsPath)
.setImageGeneratorModelDirectory(modelPath)
.build()
imageGenerator = ImageGenerator.createFromOptions(context, options)
ডেটা প্রস্তুত করুন
ইমেজ জেনারেটরটি নিম্নলিখিত ইনপুটগুলো গ্রহণ করে:
- প্রম্পট (আবশ্যক): যে ছবিটি তৈরি করা হবে তার বর্ণনা সম্বলিত টেক্সট প্রম্পট।
- পুনরাবৃত্তি (প্রয়োজনীয়): ছবিটি তৈরি করার জন্য মোট পুনরাবৃত্তির সংখ্যা। ২০ একটি ভালো সূচনা হতে পারে।
- সিড (আবশ্যক): ছবি তৈরির সময় ব্যবহৃত র্যান্ডম সিড।
- কন্ডিশন ইমেজ (ঐচ্ছিক): মডেলটি তৈরির জন্য যে ছবিটি রেফারেন্স হিসেবে ব্যবহার করে। শুধুমাত্র প্লাগইন মডেল ব্যবহারের ক্ষেত্রে প্রযোজ্য।
- শর্তের ধরণ (ঐচ্ছিক): টাস্কের সাথে ব্যবহৃত প্লাগইন মডেলের ধরণ। শুধুমাত্র প্লাগইন মডেল ব্যবহার করার ক্ষেত্রেই প্রযোজ্য।
শুধুমাত্র ভিত্তি মডেল সহ ইনপুট
fun setInput(prompt: String, iteration: Int, seed: Int) {
imageGenerator.setInputs(prompt, iteration, seed)
}
প্লাগইন সহ ইনপুট
আপনি যদি একটি ঐচ্ছিক প্লাগইন মডেল প্রয়োগ করেন, তাহলে প্লাগইন মডেলটি বেছে নিতে conditionType প্যারামিটার এবং কন্ডিশন ইমেজ তৈরি করতে sourceConditionImage প্যারামিটারটিও ব্যবহার করুন।
| বিকল্পের নাম | বর্ণনা | মূল্য |
|---|---|---|
conditionType | ফাউন্ডেশন মডেলে প্লাগইন মডেলটি প্রয়োগ করা হয়েছে। | {"FACE", "EDGE", "DEPTH"} |
sourceConditionImage | কন্ডিশন ইমেজটি তৈরি করতে ব্যবহৃত উৎস চিত্র। | MPImage অবজেক্ট |
আপনি যদি প্লাগইন মডেল ব্যবহার করেন, তাহলে কন্ডিশন ইমেজ তৈরি করতে createConditionImage ব্যবহার করুন:
fun createConditionImage(
inputImage: MPImage,
conditionType: ConditionType
): Bitmap {
val result =
imageGenerator.createConditionImage(inputImage, conditionType)
return BitmapExtractor.extract(result)
}
কন্ডিশন ইমেজটি তৈরি করার পর, প্রম্পট, সিড এবং পুনরাবৃত্তির সংখ্যার সাথে এটিকে একটি ইনপুট হিসেবে অন্তর্ভুক্ত করুন।
imageGenerator.setInputs(
prompt,
conditionalImage,
conditionType,
iteration,
seed
)
LoRA ওজন সহ ইনপুট
আপনি যদি LoRA ওয়েট ব্যবহার করেন এবং ওয়েট দ্বারা উপস্থাপিত নির্দিষ্ট ধারণা অনুযায়ী একটি ছবি তৈরি করতে চান, তাহলে নিশ্চিত করুন যে টোকেনটি টেক্সট প্রম্পটে রয়েছে।
fun setInput(prompt: String, iteration: Int, seed: Int) {
imageGenerator.setInputs(prompt, iteration, seed)
}
টাস্কটি চালান
পূর্ববর্তী বিভাগে প্রদত্ত ইনপুটগুলি ব্যবহার করে একটি ছবি তৈরি করতে generate() পদ্ধতিটি ব্যবহার করুন। এটি একটিমাত্র তৈরি করা ছবি তৈরি করে।
শুধুমাত্র ভিত্তি মডেল দিয়ে তৈরি করুন
fun generate(prompt: String, iteration: Int, seed: Int): Bitmap {
val result = imageGenerator.generate(prompt, iteration, seed)
val bitmap = BitmapExtractor.extract(result?.generatedImage())
return bitmap
}
প্লাগইন দিয়ে তৈরি করুন
fun generate(
prompt: String,
inputImage: MPImage,
conditionType: ConditionType,
iteration: Int,
seed: Int
): Bitmap {
val result = imageGenerator.generate(
prompt,
inputImage,
conditionType,
iteration,
seed
)
val bitmap = BitmapExtractor.extract(result?.generatedImage())
return bitmap
}
LoRA ওয়েট দিয়ে তৈরি করুন
LoRA ওয়েট দিয়ে কাস্টমাইজ করা মডেল ব্যবহার করে ইমেজ তৈরি করার প্রক্রিয়াটি একটি স্ট্যান্ডার্ড ফাউন্ডেশন মডেলের প্রক্রিয়ার মতোই। নিশ্চিত করুন যে টোকেনটি প্রম্পটে অন্তর্ভুক্ত আছে এবং একই কোডটি চালান।
fun generate(prompt: String, iteration: Int, seed: Int): Bitmap {
val result = imageGenerator.generate(prompt, iteration, seed)
val bitmap = BitmapExtractor.extract(result?.generatedImage())
return bitmap
}
পুনরাবৃত্তিমূলক প্রজন্ম
ইমেজ জেনারেটরটি প্রতিটি ইটারেশনের সময় তৈরি হওয়া অন্তর্বর্তী ছবিগুলোও আউটপুট করতে পারে, যা iterations ইনপুট প্যারামিটারে সংজ্ঞায়িত করা থাকে। এই অন্তর্বর্তী ফলাফলগুলো দেখতে, setInputs মেথডটি কল করুন, তারপর প্রতিটি ধাপ চালানোর জন্য execute() কল করুন। অন্তর্বর্তী ফলাফলগুলো প্রদর্শন করতে showResult প্যারামিটারটি true তে সেট করুন।
fun execute(showResult: Boolean): Bitmap {
val result = imageGenerator.execute(showResult)
val bitmap =
BitmapExtractor.extract(result.generatedImage())
return bitmap
}
ফলাফল পরিচালনা এবং প্রদর্শন করুন
ইমেজ জেনারেটর একটি ImageGeneratorResult রিটার্ন করে, যার মধ্যে তৈরি হওয়া ছবিটি, কাজ শেষ হওয়ার সময়ের টাইমস্ট্যাম্প এবং শর্তাধীন ছবিটি (যদি ইনপুট হিসেবে দেওয়া হয়ে থাকে) অন্তর্ভুক্ত থাকে।
val bitmap = BitmapExtractor.extract(result.generatedImage())
নিম্নলিখিত চিত্রটি শুধুমাত্র একটি ভিত্তি মডেল ব্যবহার করে, প্রদত্ত ইনপুটগুলো থেকে তৈরি করা হয়েছে।
ইনপুট:
- নির্দেশনা : "ঢিলেঢালা চওড়া কিনারাযুক্ত টুপি পরা এবং হাতে লাঠি নিয়ে একটি রঙিন কার্টুন র্যাকুন বনের মধ্যে দিয়ে হেঁটে যাচ্ছে, অ্যানিমেটেড, তিন-চতুর্থাংশ দৃশ্য, চিত্রকর্ম"
- বীজ : 312687592
- পুনরাবৃত্তি : ২০
উৎপন্ন ছবি:
