অ্যান্ড্রয়েডের জন্য ইমেজ জেনারেশন গাইড

MediaPipe ইমেজ জেনারেটর টাস্ক আপনাকে একটি টেক্সট প্রম্পটের উপর ভিত্তি করে ছবি তৈরি করতে দেয়। এই টাস্কটি ডিফিউশন কৌশল ব্যবহার করে ইমেজ তৈরি করতে টেক্সট-টু-ইমেজ মডেল ব্যবহার করে।

টাস্কটি ইনপুট হিসাবে একটি পাঠ্য প্রম্পট গ্রহণ করে, একটি ঐচ্ছিক অবস্থার চিত্র সহ যা মডেলটি বৃদ্ধি করতে পারে এবং প্রজন্মের জন্য একটি রেফারেন্স হিসাবে ব্যবহার করতে পারে। ইমেজ জেনারেটর প্রশিক্ষণ বা পুনঃপ্রশিক্ষণের সময় মডেলকে দেওয়া নির্দিষ্ট ধারণার উপর ভিত্তি করে ছবি তৈরি করতে পারে। আরও তথ্যের জন্য, LoRA এর সাথে কাস্টমাইজ দেখুন।

এই নির্দেশাবলীতে বর্ণিত কোড নমুনা GitHub এ উপলব্ধ। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।

কোড উদাহরণ

MediaPipe টাস্কের উদাহরণ কোড হল Android এর জন্য একটি ইমেজ জেনারেটর অ্যাপের একটি মৌলিক বাস্তবায়ন। আপনি অ্যাপটিকে আপনার নিজের অ্যান্ড্রয়েড অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, বা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। ইমেজ জেনারেটরের উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।

কোডটি ডাউনলোড করুন

নিম্নলিখিত নির্দেশাবলী আপনাকে দেখায় কিভাবে গিট কমান্ড লাইন টুল ব্যবহার করে উদাহরণ কোডের একটি স্থানীয় অনুলিপি তৈরি করতে হয়।

উদাহরণ কোড ডাউনলোড করতে:

  1. নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করার জন্য আপনার গিট ইনস্ট্যান্স কনফিগার করুন, যাতে আপনার কাছে ইমেজ জেনারেটর উদাহরণ অ্যাপের জন্য শুধুমাত্র ফাইল থাকে:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/image_generation/android
    

উদাহরণ কোডের একটি স্থানীয় সংস্করণ তৈরি করার পরে, আপনি প্রকল্পটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করতে এবং অ্যাপটি চালাতে পারেন। নির্দেশাবলীর জন্য, Android এর জন্য সেটআপ গাইড দেখুন।

মূল উপাদান

নিম্নলিখিত ফাইলগুলিতে এই চিত্র তৈরির উদাহরণ অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ কোড রয়েছে:

  • ImageGenerationHelper.kt : টাস্ক শুরু করে এবং ইমেজ জেনারেশন পরিচালনা করে।
  • DiffusionActivity.kt : প্লাগইন বা LoRA ওজন সক্রিয় না থাকলে ছবি তৈরি করে।
  • PluginActivity.kt : প্লাগইন মডেলগুলি প্রয়োগ করে, যা ব্যবহারকারীদের ইনপুট হিসাবে একটি শর্ত চিত্র প্রদান করতে সক্ষম করে।
  • LoRAWeightActivity.kt : LoRA ওজনগুলি অ্যাক্সেস করে এবং পরিচালনা করে, যা ফাউন্ডেশন মডেলগুলি কাস্টমাইজ করতে এবং নির্দিষ্ট ধারণাগুলির ছবি তৈরি করতে সক্ষম করতে ব্যবহৃত হয়।

সেটআপ

এই বিভাগে আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট এবং কোড প্রোজেক্ট সেট আপ করার জন্য বিশেষভাবে ইমেজ জেনারেটর ব্যবহার করার জন্য মূল ধাপগুলি বর্ণনা করে। প্ল্যাটফর্ম সংস্করণ প্রয়োজনীয়তা সহ MediaPipe কার্যগুলি ব্যবহার করার জন্য আপনার বিকাশের পরিবেশ সেট আপ করার বিষয়ে সাধারণ তথ্যের জন্য, Android এর জন্য সেটআপ নির্দেশিকা দেখুন৷

নির্ভরতা

ইমেজ জেনারেটরের কাজটি com.google.mediapipe:tasks-vision-image-generator লাইব্রেরি ব্যবহার করে। আপনার Android অ্যাপের build.gradle ফাইলে এই নির্ভরতা যোগ করুন:

dependencies {
    implementation 'com.google.mediapipe:tasks-vision-image-generator:latest.release'
}

Android 12 (API 31) বা উচ্চতর ডিভাইসগুলির জন্য, নেটিভ OpenCL লাইব্রেরি নির্ভরতা যোগ করুন। আরও তথ্যের জন্য, 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 ইমেজ জেনারেটর টাস্কের জন্য একটি প্রশিক্ষিত ভিত্তি মডেল প্রয়োজন যা এই কাজের সাথে সামঞ্জস্যপূর্ণ। একটি মডেল ডাউনলোড করার পরে, প্রয়োজনীয় নির্ভরতাগুলি ইনস্টল করুন এবং মডেলটিকে একটি উপযুক্ত একটি উপযুক্ত বিন্যাসে রূপান্তর করুন। তারপরে, রূপান্তরিত মডেলটিকে অ্যান্ড্রয়েড ডিভাইসে পুশ করুন।

ইমেজ জেনারেটরের জন্য উপলব্ধ প্রশিক্ষিত মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

ফাউন্ডেশন মডেল ডাউনলোড করুন

ইমেজ জেনারেটরের জন্য প্রয়োজন যে ফাউন্ডেশন মডেলটি runwayml/stable-diffusion-v1-5 EMA-only মডেল ফরম্যাটের সাথে মেলে, নিম্নলিখিত মডেলের উপর ভিত্তি করে: runwayml/stable-diffusion-v1-5

নির্ভরতা ইনস্টল করুন এবং মডেলটি রূপান্তর করুন

$ 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>

রূপান্তরিত মডেলটিকে ডিভাইসে পুশ করুন

Android ডিভাইসে <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-এ বান্ডিল করা বা চাহিদা অনুযায়ী ডাউনলোড করা আবশ্যক৷ প্লাগইন মডেলগুলি লাইটওয়েট (~23MB) এবং সরাসরি APK এ বান্ডিল করা যেতে পারে৷ যাইহোক, আমরা চাহিদা অনুযায়ী প্লাগইন মডেল ডাউনলোড করার সুপারিশ করেছি।

আপনি যদি LoRA এর সাথে একটি মডেল কাস্টমাইজ করে থাকেন তবে সেগুলিকে চাহিদা অনুযায়ী ডাউনলোড করুন৷ আরও তথ্যের জন্য, LoRA ওজন প্লাগইন মডেল দেখুন।

টাস্ক তৈরি করুন

MediaPipe ইমেজ জেনারেটর টাস্কটি সেট আপ করতে createFromOptions() ফাংশন ব্যবহার করে। createFromOptions() ফাংশন কনফিগারেশন বিকল্পের জন্য মান গ্রহণ করে। কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন বিকল্পগুলি দেখুন।

কনফিগারেশন বিকল্প

এই টাস্কে Android অ্যাপের জন্য নিম্নলিখিত কনফিগারেশন বিকল্প রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা
imageGeneratorModelDirectory ইমেজ জেনারেটর মডেল ডিরেক্টরি মডেলের ওজন সংরক্ষণ করে। PATH
loraWeightsFilePath LoRA ওজন ফাইলের পথ সেট করে। ঐচ্ছিক এবং শুধুমাত্র প্রযোজ্য যদি মডেলটি LoRA দিয়ে কাস্টমাইজ করা হয়। PATH
errorListener একটি ঐচ্ছিক ত্রুটি শ্রোতা সেট করে। N/A

টাস্কটি প্লাগইন মডেলগুলিকেও সমর্থন করে, যা ব্যবহারকারীদের টাস্ক ইনপুটে কন্ডিশন ইমেজ অন্তর্ভুক্ত করতে দেয়, যা ফাউন্ডেশন মডেল বৃদ্ধি করতে পারে এবং প্রজন্মের জন্য একটি রেফারেন্স হিসাবে ব্যবহার করতে পারে। এই অবস্থার চিত্রগুলি মুখের ল্যান্ডমার্ক, প্রান্তের রূপরেখা এবং গভীরতার অনুমান হতে পারে, যা মডেলটি ছবি তৈরি করতে অতিরিক্ত প্রসঙ্গ এবং তথ্য হিসাবে ব্যবহার করে।

ফাউন্ডেশন মডেলে একটি প্লাগইন মডেল যোগ করার সময়, প্লাগইন বিকল্পগুলিও কনফিগার করুন। ফেস ল্যান্ডমার্ক প্লাগইন faceConditionOptions ব্যবহার করে, Canny edge প্লাগইন edgeConditionOptions ব্যবহার করে, এবং Depth প্লাগইন depthConditionOptions ব্যবহার করে।

ক্যানি প্রান্ত বিকল্প

edgeConditionOptions এ নিম্নলিখিত বিকল্পগুলি কনফিগার করুন।

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
threshold1 হিস্টেরেসিস পদ্ধতির জন্য প্রথম থ্রেশহোল্ড। Float 100
threshold2 হিস্টেরেসিস পদ্ধতির জন্য দ্বিতীয় থ্রেশহোল্ড। Float 200
apertureSize সোবেল অপারেটরের জন্য অ্যাপারচারের আকার। সাধারণ পরিসীমা 3-7 এর মধ্যে। 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)

ডেটা প্রস্তুত করুন

ইমেজ জেনারেটর নিম্নলিখিত ইনপুট গ্রহণ করে:

  • প্রম্পট (প্রয়োজনীয়): টেক্সট প্রম্পট যে চিত্রটি তৈরি করা হবে তা বর্ণনা করে।
  • পুনরাবৃত্তি (প্রয়োজনীয়): ইমেজ তৈরি করতে মোট পুনরাবৃত্তি। একটি ভাল সূচনা পয়েন্ট হল 20।
  • বীজ (প্রয়োজনীয়): ইমেজ তৈরির সময় ব্যবহৃত এলোমেলো বীজ।
  • কন্ডিশন ইমেজ (ঐচ্ছিক): মডেলটি প্রজন্মের জন্য রেফারেন্স হিসেবে যে ছবিটি ব্যবহার করে। একটি প্লাগইন মডেল ব্যবহার করার সময় শুধুমাত্র প্রযোজ্য.
  • শর্তের ধরন (ঐচ্ছিক): টাস্কের সাথে ব্যবহৃত প্লাগইন মডেলের ধরন। একটি প্লাগইন মডেল ব্যবহার করার সময় শুধুমাত্র প্রযোজ্য.

শুধুমাত্র ভিত্তি মডেল সহ ইনপুট

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
  • পুনরাবৃত্তি : 20

তৈরি করা ছবি: