গ্রেডল আমদানি আপডেট করুন
নতুন SDK-এর প্রতিটি ML Kit API-এর জন্য শুধুমাত্র একটি নির্ভরতা প্রয়োজন। firebase-ml-vision
বা firebase-ml-natural-language
মতো সাধারণ লাইব্রেরিগুলি নির্দিষ্ট করার প্রয়োজন নেই। ML কিট Google Play পরিষেবার উপর নির্ভরশীল লাইব্রেরির জন্য com.google.android.gms
নামস্থান ব্যবহার করে৷
ভিশন API
বান্ডেল করা মডেলগুলি আপনার আবেদনের অংশ হিসাবে বিতরণ করা হয়। পাতলা মডেল ডাউনলোড করা আবশ্যক. কিছু এপিআই বান্ডিল এবং পাতলা উভয় আকারে পাওয়া যায়, অন্যগুলি শুধুমাত্র একটি বা অন্য আকারে:
API | বান্ডিল | পাতলা |
---|---|---|
পাঠ্য স্বীকৃতি | x (বিটা) | x |
মুখ সনাক্তকরণ | x | x |
বারকোড স্ক্যানিং | x | x |
ইমেজ লেবেলিং | x | x |
বস্তু সনাক্তকরণ এবং ট্র্যাকিং | x | - |
নিম্নলিখিত সারণী অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle
) এমএল কিট অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা আপডেট করুন:
বান্ডিল মডেল
API | পুরাতন শিল্পকর্ম | নতুন আর্টিফ্যাক্ট |
---|---|---|
বারকোড স্ক্যানিং | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-barcode-model:16.0.1 | com.google.mlkit:বারকোড-স্ক্যানিং:17.3.0 |
মুখের কনট্যুর | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-face-model:19.0.0 | com.google.mlkit:ফেস-ডিটেকশন:16.1.7 |
ইমেজ লেবেলিং | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-image-label-model:19.0.0 | com.google.mlkit:image-labeling:17.0.9 |
বস্তু সনাক্তকরণ | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3 | com.google.mlkit:object-detection:17.0.2 |
পাতলা মডেল
API | পুরাতন শিল্পকর্ম | নতুন আর্টিফ্যাক্ট |
---|---|---|
বারকোড স্ক্যানিং | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
মুখ সনাক্তকরণ | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
পাঠ্য স্বীকৃতি | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
অটোএমএলভিশন এজ
API | পুরাতন শিল্পকর্ম | নতুন আর্টিফ্যাক্ট |
---|---|---|
ডাউনলোড ছাড়া অটোএমএল | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 | com.google.mlkit:image-labeling-custom:17.0.3 |
ডাউনলোড সহ AutoML | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 | com.google.mlkit:image-labeling-custom:17.0.3 com.google.mlkit:linkfirebase:17.0.0 |
প্রাকৃতিক ভাষা API
বান্ডেল করা মডেলগুলি আপনার আবেদনের অংশ হিসাবে বিতরণ করা হয়। পাতলা মডেল ডাউনলোড করা আবশ্যক:
API | বান্ডিল | পাতলা |
---|---|---|
ভাষা আইডি | x | x |
স্মার্ট উত্তর | x | x (বিটা) |
নিম্নলিখিত সারণী অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle
) এমএল কিট অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা আপডেট করুন:
বান্ডিল মডেল
API | পুরাতন শিল্পকর্ম | নতুন আর্টিফ্যাক্ট |
---|---|---|
ভাষা আইডি | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 | com.google.mlkit:language-id:17.0.6 |
স্মার্ট উত্তর | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 | com.google.mlkit:smart-reply:17.0.4 |
পাতলা মডেল
API | পুরাতন শিল্পকর্ম | নতুন আর্টিফ্যাক্ট |
---|---|---|
ভাষা আইডি | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 | com.google.android.gms:play-services-mlkit-language-id:17.0.0 |
স্মার্ট উত্তর | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 | com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1 |
ক্লাসের নাম আপডেট করুন
যদি আপনার ক্লাস এই টেবিলে উপস্থিত হয়, তাহলে নির্দেশিত পরিবর্তন করুন:
পুরাতন ক্লাস | নতুন ক্লাস |
---|---|
com.google.firebase.ml.common.FirebaseMLException | com.google.mlkit.common.MlKitException |
com.google.firebase.ml.vision.common.FirebaseVisionImage | com.google.mlkit.vision.common.InputImage |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabeler |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel | com.google.mlkit.common.model.LocalModel |
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel | com.google.mlkit.common.model.CustomRemoteModel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions | com.google.mlkit.vision.label.defaults.ImageLabelerOptions |
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions | com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions |
অন্যান্য ক্লাসের জন্য, এই নিয়মগুলি অনুসরণ করুন:
- ক্লাসের নাম থেকে
FirebaseVision
উপসর্গটি সরান। - ক্লাসের নাম থেকে
Firebase
প্রিফিক্স দিয়ে শুরু হওয়া অন্যান্য উপসর্গগুলি সরান।
এছাড়াও, প্যাকেজের নামে com.google.firebase.ml
উপসর্গ com.google.mlkit
দিয়ে প্রতিস্থাপন করুন।
পদ্ধতির নাম আপডেট করুন
ন্যূনতম কোড পরিবর্তন আছে:
- ডিটেক্টর/স্ক্যানার/লেবেলার/অনুবাদক... ইনস্ট্যান্টিয়েশন পরিবর্তন করা হয়েছে। প্রতিটি বৈশিষ্ট্যের এখন নিজস্ব এন্ট্রি পয়েন্ট রয়েছে। যেমন: বারকোড স্ক্যানিং, টেক্সট রিকগনিশন, ইমেজ লেবেলিং, অনুবাদ…. ফায়ারবেস পরিষেবা
getInstance()
এ কলগুলি বৈশিষ্ট্য এন্ট্রি পয়েন্টেরgetClient()
পদ্ধতিতে কল দ্বারা প্রতিস্থাপিত হয়। - TextRecognizer-এর জন্য ডিফল্ট ইনস্ট্যান্টিয়েশন সরানো হয়েছে, যেহেতু আমরা চাইনিজ এবং কোরিয়ানের মতো অন্যান্য স্ক্রিপ্টগুলিকে স্বীকৃতি দেওয়ার জন্য অতিরিক্ত লাইব্রেরি চালু করেছি। ল্যাটিন স্ক্রিপ্ট পাঠ্য শনাক্তকরণ মডেলের সাথে ডিফল্ট বিকল্পগুলি ব্যবহার করতে, অনুগ্রহ করে
com.google.android.gms:play-services-mlkit-text-recognition
এর উপর নির্ভরতা ঘোষণা করুন এবংTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
ব্যবহার করুন। - ImageLabeler এবং ObjectDetector-এর জন্য ডিফল্ট ইনস্ট্যান্টিয়েশন মুছে ফেলা হয়েছে, যেহেতু আমরা এই দুটি বৈশিষ্ট্যের জন্য কাস্টম মডেল সমর্থন চালু করেছি। উদাহরণস্বরূপ, ImageLabeling-এ বেস মডেলের সাথে ডিফল্ট বিকল্পগুলি ব্যবহার করতে, অনুগ্রহ করে
com.google.mlkit:image-labeling
উপর নির্ভরতা ঘোষণা করুন এবং Java-এImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
ব্যবহার করুন৷ - সমস্ত হ্যান্ডেল (ডিটেক্টর/স্ক্যানার/লেবেলার/অনুবাদক...) বন্ধযোগ্য। নিশ্চিত করুন যে
close()
পদ্ধতিটি কল করা হয়েছে যখন সেই বস্তুগুলি আর ব্যবহার করা হবে না। আপনি যদি এগুলিকে একটি ফ্র্যাগমেন্ট বা AppCompatActivity-তে ব্যবহার করেন, তাহলে সেটি করার একটি সহজ উপায় হল ফ্র্যাগমেন্ট বা AppCompatActivity-এ LifecycleOwner.getLifecycle() কল করুন এবং তারপর Lifecycle.addObserver- এ কল করুন। - ভিশন এপিআই-তে
processImage()
এবংdetectInImage()
নাম পরিবর্তন করেprocess()
করা হয়েছে ধারাবাহিকতার জন্য। - ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই এখন "ভাষা কোড" এর পরিবর্তে "ভাষা ট্যাগ" ( BCP 47 স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) শব্দটি ব্যবহার করে।
- xxxOptions ক্লাসে গেটার পদ্ধতি মুছে ফেলা হয়েছে।
- InputImage ক্লাসে getBitmap() পদ্ধতি (
FirebaseVisionImage
প্রতিস্থাপন) পাবলিক ইন্টারফেসের অংশ হিসেবে আর সমর্থিত নয়। বিভিন্ন ইনপুট থেকে বিটম্যাপ রূপান্তরিত করার জন্য অনুগ্রহ করে ML কিট কুইকস্টার্ট নমুনায়BitmapUtils.java
পড়ুন। - FirebaseVisionImageMetadata সরানো হয়েছে, আপনি ইনপুট ইমেজেসের নির্মাণ পদ্ধতিতে শুধু ছবির মেটাডেটা যেমন প্রস্থ, উচ্চতা, ঘূর্ণন ডিগ্রী, বিন্যাস পাস করতে পারেন।
এখানে পুরানো এবং নতুন কোটলিন পদ্ধতির কিছু উদাহরণ রয়েছে:
পুরাতন
// Construct image labeler with base model and default options. val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler // Construct object detector with base model and default options. val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector // Construct face detector with given options val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options) // Construct image labeler with local AutoML model val localModel = FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build() val autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build() )
নতুন
// Construct image labeler with base model and default options. val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) // Optional: add life cycle observer lifecycle.addObserver(imageLabeler) // Construct object detector with base model and default options. val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS) // Construct face detector with given options val faceDetector = FaceDetection.getClient(options) // Construct image labeler with local AutoML model val localModel = LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build() val autoMLImageLabeler = ImageLabeling.getClient( CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build())
এখানে পুরানো এবং নতুন জাভা পদ্ধতির কিছু উদাহরণ রয়েছে:
পুরাতন
// Construct image labeler with base model and default options. FirebaseVisionImageLabeler imagelLabeler = FirebaseVision.getInstance().getOnDeviceImageLabeler(); // Construct object detector with base model and default options. FirebaseVisionObjectDetector objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(); // Construct face detector with given options FirebaseVisionFaceDetector faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options); // Construct image labeler with local AutoML model FirebaseAutoMLLocalModel localModel = new FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build(); FirebaseVisionImageLabeler autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build());
নতুন
// Construct image labeler with base model and default options. ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS); // Optional: add life cycle observer getLifecycle().addObserver(imageLabeler); // Construct object detector with base model and default options. ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS); // Construct face detector with given options FaceDetector faceDetector = FaceDetection.getClient(options); // Construct image labeler with local AutoML model LocalModel localModel = new LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build(); ImageLabeler autoMLImageLabeler = ImageLabeling.getClient( new CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build());
API-নির্দিষ্ট পরিবর্তন
বারকোড স্ক্যানিং
বারকোড স্ক্যানিং API-এর জন্য, এখন দুটি উপায়ে মডেলগুলি সরবরাহ করা যেতে পারে:
- Google Play পরিষেবার মাধ্যমে ওরফে "পাতলা" (প্রস্তাবিত) - এটি অ্যাপের আকার হ্রাস করে এবং মডেলটি অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা হয়৷ যাইহোক, ডেভেলপারদের নিশ্চিত করতে হবে যে মডেলটি প্রথমবার ব্যবহার করার আগে ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ওরফে "বান্ডেলড" - এটি অ্যাপের আকার বাড়ায় কিন্তু এর মানে মডেলটি অবিলম্বে ব্যবহারযোগ্য।
দুটি বাস্তবায়ন কিছুটা আলাদা, "বান্ডিল" সংস্করণে "পাতলা" সংস্করণের তুলনায় অনেক উন্নতি হয়েছে। এই পার্থক্যগুলির বিশদ বিবরণ বারকোড স্ক্যানিং API নির্দেশিকাগুলিতে পাওয়া যাবে৷
ফেস ডিটেকশন
ফেস ডিটেকশন API-এর জন্য, দুটি উপায়ে মডেলগুলি সরবরাহ করা যেতে পারে:
- Google Play পরিষেবার মাধ্যমে ওরফে "পাতলা" (প্রস্তাবিত) - এটি অ্যাপের আকার হ্রাস করে এবং মডেলটি অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা হয়৷ যাইহোক, ডেভেলপারদের নিশ্চিত করতে হবে যে মডেলটি প্রথমবার ব্যবহার করার আগে ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ওরফে "বান্ডলড" - এটি অ্যাপ ডাউনলোডের আকার বাড়ায় কিন্তু এর মানে মডেলটি অবিলম্বে ব্যবহারযোগ্য।
বাস্তবায়নের আচরণ একই।
অনুবাদ
TranslateLanguage
এখন ভাষা ট্যাগ (EN
) এর পরিবর্তে তার ধ্রুবকগুলির জন্য পাঠযোগ্য নাম ব্যবহার করে (যেমনENGLISH
)। তারা এখন @IntDef এর পরিবর্তে @StringDef, এবং ধ্রুবকের মান হল ম্যাচিং BCP 47 ভাষা ট্যাগ ।যদি আপনার অ্যাপটি "ডিভাইস নিষ্ক্রিয়" ডাউনলোড কন্ডিশন বিকল্প ব্যবহার করে, তাহলে সচেতন থাকুন যে এই বিকল্পটি সরানো হয়েছে এবং আর ব্যবহার করা যাবে না। আপনি এখনও "ডিভাইস চার্জিং" বিকল্পটি ব্যবহার করতে পারেন। আপনি যদি আরও জটিল আচরণ চান, আপনি আপনার নিজস্ব যুক্তির পিছনে
RemoteModelManager.download
কল করতে বিলম্ব করতে পারেন।
অটোএমএল ইমেজ লেবেলিং
যদি আপনার অ্যাপটি "ডিভাইস নিষ্ক্রিয়" ডাউনলোড কন্ডিশন বিকল্প ব্যবহার করে, তাহলে সচেতন থাকুন যে এই বিকল্পটি সরানো হয়েছে এবং আর ব্যবহার করা যাবে না। আপনি এখনও "ডিভাইস চার্জিং" বিকল্পটি ব্যবহার করতে পারেন।
আপনি যদি আরও জটিল আচরণ চান, আপনি আপনার নিজস্ব যুক্তির পিছনে RemoteModelManager.download
কল করতে বিলম্ব করতে পারেন।
অবজেক্ট ডিটেকশন এবং ট্র্যাকিং
যদি আপনার অ্যাপ মোটা শ্রেণীবিভাগের সাথে অবজেক্ট ডিটেকশন ব্যবহার করে, তাহলে জেনে রাখুন যে নতুন SDK শনাক্ত করা বস্তুর জন্য শ্রেণীবিভাগের শ্রেণী ফেরানোর উপায় পরিবর্তন করেছে।
শ্রেণীবিভাগের বিভাগটি একটি পূর্ণসংখ্যার পরিবর্তে DetectedObject.Label
এর একটি উদাহরণ হিসাবে ফেরত দেওয়া হয়। মোটা শ্রেণীবিন্যাসকারীর জন্য সমস্ত সম্ভাব্য বিভাগ PredefinedCategory
শ্রেণী শ্রেণীতে অন্তর্ভুক্ত করা হয়েছে।
এখানে পুরানো এবং নতুন কোটলিন কোডের একটি উদাহরণ রয়েছে:
পুরাতন
if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) { ... }
নতুন
if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) { ... } // or if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) { ... }
এখানে পুরানো এবং নতুন জাভা কোডের একটি উদাহরণ:
পুরাতন
if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) { ... }
নতুন
if (!object.getLabels().isEmpty() && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) { ... } // or if (!object.getLabels().isEmpty() && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) { ... }
"অজানা" বিভাগটি সরানো হয়েছে। যখন একটি বস্তুর শ্রেণীবিভাগের আস্থা কম হয়, তখন আমরা কোনো লেবেল ফেরত দেই না।
ফায়ারবেস নির্ভরতা সরান (ঐচ্ছিক)
এই পদক্ষেপটি শুধুমাত্র তখনই প্রযোজ্য যখন এই শর্তগুলি পূরণ হয়:
- Firebase ML Kit হল একমাত্র Firebase উপাদান যা আপনি ব্যবহার করেন।
- আপনি শুধুমাত্র অন-ডিভাইস API ব্যবহার করেন।
- আপনি মডেল পরিবেশন ব্যবহার করবেন না.
যদি এটি হয়, আপনি স্থানান্তর করার পরে Firebase নির্ভরতাগুলি সরাতে পারেন৷ এই পদক্ষেপগুলি অনুসরণ করুন:
- আপনার অ্যাপের মডিউল (অ্যাপ-লেভেল) ডিরেক্টরিতে থাকা google-services.json কনফিগারেশন ফাইলটি মুছে ফায়ারবেস কনফিগারেশন ফাইলটি সরান।
- আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle) Google পরিষেবা গ্র্যাডল প্লাগইনটিকে স্ট্রিক্ট ভার্সন ম্যাচার প্লাগইন দিয়ে প্রতিস্থাপন করুন:
আগে
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // … }
পরে
apply plugin: 'com.android.application' apply plugin: 'com.google.android.gms.strict-version-matcher-plugin' android { // … }
- আপনার প্রোজেক্টে (রুট-লেভেল) গ্রেডল ফাইল (build.gradle) এর Google Services Gradle প্লাগইন ক্লাসপাথটি স্ট্রিক্ট ভার্সন ম্যাচার প্লাগইনের সাথে প্রতিস্থাপন করুন:
আগে
buildscript { dependencies { // ... classpath 'com.google.gms:google-services:4.3.3' // Google Services plugin } }
পরে
buildscript { dependencies { // ... classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1' } }
Firebase সমর্থন সাইটের নির্দেশাবলী অনুযায়ী Firebase কনসোলে আপনার Firebase অ্যাপটি মুছুন।
সাহায্য পাচ্ছি
আপনি যদি কোনো সমস্যায় পড়েন, অনুগ্রহ করে আমাদের কমিউনিটি পৃষ্ঠা দেখুন যেখানে আমরা আমাদের সাথে যোগাযোগ করার জন্য উপলব্ধ চ্যানেলগুলির রূপরেখা দিই।