TensorFlow Lite (Android) এর সাথে একটি কাস্টম অবজেক্ট সনাক্তকরণ মডেল তৈরি এবং স্থাপন করুন

1. আপনি শুরু করার আগে

এই কোডল্যাবে, আপনি শিখবেন কিভাবে TFLite Model Maker- এর সাথে প্রশিক্ষণ চিত্রগুলির একটি সেট ব্যবহার করে একটি কাস্টম অবজেক্ট সনাক্তকরণ মডেলকে প্রশিক্ষণ দিতে হয়, তারপর TFLite টাস্ক লাইব্রেরি ব্যবহার করে একটি Android অ্যাপে আপনার মডেল স্থাপন করুন৷ আপনি করবেন:

  • একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করুন যা খাবারের ছবিতে উপাদান শনাক্ত করে।
  • একটি TFLite প্রাক-প্রশিক্ষিত বস্তু সনাক্তকরণ মডেলকে একীভূত করুন এবং মডেলটি কী সনাক্ত করতে পারে তার সীমা দেখুন।
  • সালাদ এবং TFLite মডেল মেকার নামক একটি কাস্টম ডেটাসেট ব্যবহার করে খাবারের উপাদান/উপাদান সনাক্ত করতে একটি কাস্টম অবজেক্ট ডিটেকশন মডেলকে প্রশিক্ষণ দিন।
  • TFLite টাস্ক লাইব্রেরি ব্যবহার করে Android অ্যাপে কাস্টম মডেল স্থাপন করুন।

শেষ পর্যন্ত, আপনি নীচের চিত্রের অনুরূপ কিছু তৈরি করবেন:

b9705235366ae162.png

পূর্বশর্ত

এই কোডল্যাবটি অভিজ্ঞ মোবাইল ডেভেলপারদের জন্য ডিজাইন করা হয়েছে যারা মেশিন লার্নিংয়ের অভিজ্ঞতা অর্জন করতে চান। আপনার সাথে পরিচিত হওয়া উচিত:

  • কোটলিন এবং অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে অ্যান্ড্রয়েড বিকাশ
  • মৌলিক পাইথন সিনট্যাক্স

আপনি কি শিখবেন

  • TFLite Model Maker ব্যবহার করে একটি কাস্টম অবজেক্ট ডিটেকশন মডেলকে কীভাবে প্রশিক্ষণ দেওয়া যায়।
  • কিভাবে TFLite টাস্ক লাইব্রেরি ব্যবহার করে একটি TFLite অবজেক্ট সনাক্তকরণ মডেল স্থাপন করবেন।

আপনি কি প্রয়োজন হবে

  • অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v4.2+)
  • অ্যান্ড্রয়েড স্টুডিও এমুলেটর বা একটি শারীরিক অ্যান্ড্রয়েড ডিভাইস
  • নমুনা কোড
  • কোটলিনে অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান

2. বস্তু সনাক্তকরণ

অবজেক্ট ডিটেকশন হল কম্পিউটার ভিশন টাস্কের একটি সেট যা একটি ডিজিটাল ইমেজে বস্তু সনাক্ত করতে এবং সনাক্ত করতে পারে। একটি ইমেজ বা ভিডিও স্ট্রিম দেওয়া হলে, একটি অবজেক্ট ডিটেকশন মডেল শনাক্ত করতে পারে কোন কোন বস্তুর পরিচিত সেট উপস্থিত থাকতে পারে এবং ইমেজের মধ্যে তাদের অবস্থান সম্পর্কে তথ্য প্রদান করতে পারে।

TensorFlow প্রাক-প্রশিক্ষিত, মোবাইল অপ্টিমাইজ করা মডেলগুলি সরবরাহ করে যা সাধারণ বস্তুগুলি যেমন গাড়ি, কমলা ইত্যাদি সনাক্ত করতে পারে৷ আপনি এই প্রাক-প্রশিক্ষিত মডেলগুলিকে আপনার মোবাইল অ্যাপে মাত্র কয়েকটি লাইনের কোড দিয়ে সংহত করতে পারেন৷ যাইহোক, আপনি আরও স্বতন্ত্র বা অফবিট বিভাগে বস্তু সনাক্ত করতে চান বা প্রয়োজন হতে পারে। এর জন্য আপনার নিজস্ব প্রশিক্ষণের ছবি সংগ্রহ করতে হবে, তারপর প্রশিক্ষণ এবং আপনার নিজস্ব বস্তু সনাক্তকরণ মডেল স্থাপন করতে হবে।

টেনসরফ্লো লাইট

TensorFlow Lite হল একটি ক্রস-প্ল্যাটফর্ম মেশিন লার্নিং লাইব্রেরি যা অ্যান্ড্রয়েড এবং iOS মোবাইল ডিভাইস সহ এজ ডিভাইসে মেশিন লার্নিং মডেল চালানোর জন্য অপ্টিমাইজ করা হয়েছে।

TensorFlow Lite প্রকৃতপক্ষে মেশিন লার্নিং মডেল চালানোর জন্য ML কিটের ভিতরে ব্যবহৃত কোর ইঞ্জিন। TensorFlow Lite ইকোসিস্টেমে দুটি উপাদান রয়েছে যা মোবাইল ডিভাইসে মেশিন লার্নিং মডেলগুলিকে প্রশিক্ষণ এবং স্থাপন করা সহজ করে তোলে:

  • মডেল মেকার হল একটি পাইথন লাইব্রেরি যা শুধুমাত্র কয়েকটি লাইনের কোড সহ আপনার নিজস্ব ডেটা ব্যবহার করে TensorFlow Lite মডেলগুলিকে প্রশিক্ষণ দেওয়া সহজ করে তোলে, কোনো মেশিন লার্নিং দক্ষতার প্রয়োজন নেই৷
  • টাস্ক লাইব্রেরি হল একটি ক্রস-প্ল্যাটফর্ম লাইব্রেরি যা আপনার মোবাইল অ্যাপে মাত্র কয়েকটি লাইনের কোড সহ টেনসরফ্লো লাইট মডেল স্থাপন করা সহজ করে তোলে।

এই কোডল্যাবটি TFLite-এ ফোকাস করে। TFLite এবং অবজেক্ট সনাক্তকরণের সাথে প্রাসঙ্গিক নয় এমন ধারণা এবং কোড ব্লকগুলি ব্যাখ্যা করা হয়নি এবং আপনাকে কেবল অনুলিপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে।

3. সেট আপ করুন

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

এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে নিম্নলিখিত লিঙ্কে ক্লিক করুন:

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি আপনার প্রয়োজনীয় সমস্ত সংস্থান সহ একটি রুট ফোল্ডার ( odml-pathways-main ) আনপ্যাক করবে। এই কোডল্যাবের জন্য, আপনার শুধুমাত্র object-detection/codelab2/android সাবডিরেক্টরির সূত্রের প্রয়োজন হবে।

object-detection/codelab2/android রিপোজিটরিতে থাকা android সাবডিরেক্টরিতে দুটি ডিরেক্টরি রয়েছে:

  • android_studio_folder.png starter — এই কোডল্যাবের জন্য আপনি যে স্টার্টিং কোড তৈরি করেন।
  • android_studio_folder.png চূড়ান্ত — সমাপ্ত নমুনা অ্যাপের জন্য সম্পূর্ণ কোড।

স্টার্টার অ্যাপ আমদানি করুন

স্টার্টার অ্যাপটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করে শুরু করা যাক।

  1. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং আমদানি প্রকল্প নির্বাচন করুন (Gradle, Eclipse ADT, ইত্যাদি)
  2. আপনি আগে ডাউনলোড করা সোর্স কোড থেকে starter ফোল্ডারটি খুলুন।

7c0f27882a2698ac.png

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করার জন্য, আমদানি প্রক্রিয়া শেষ হয়ে গেলে আপনার গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত।

  1. গ্রেডল ফাইলের সাথে সিঙ্ক প্রজেক্ট নির্বাচন করুন ( b451ab2d04d835f9.png অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে। starter/app/build.gradle আমদানি করুন

স্টার্টার অ্যাপটি চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত৷

আপনার কম্পিউটারে USB-এর মাধ্যমে আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন বা অ্যান্ড্রয়েড স্টুডিও এমুলেটর শুরু করুন এবং রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

4. স্টার্টার অ্যাপ বুঝুন

এই কোডল্যাবটিকে সহজ রাখতে এবং মেশিন লার্নিং বিটগুলিতে ফোকাস করার জন্য, স্টার্টার অ্যাপটিতে কিছু বয়লারপ্লেট কোড রয়েছে যা আপনার জন্য কয়েকটি জিনিস করে:

  • এটি ডিভাইসের ক্যামেরা ব্যবহার করে ছবি তুলতে পারে।
  • আপনার Android এমুলেটরে বস্তু সনাক্তকরণ চেষ্টা করার জন্য এটিতে কিছু স্টক চিত্র রয়েছে।
  • ইনপুট বিটম্যাপে অবজেক্ট ডিটেকশন ফলাফল আঁকতে এটির একটি সুবিধাজনক পদ্ধতি রয়েছে।

আপনি বেশিরভাগ অ্যাপ কঙ্কালে এই পদ্ধতিগুলির সাথে ইন্টারঅ্যাক্ট করবেন:

  • fun runObjectDetection(bitmap: Bitmap) এই পদ্ধতিটি বলা হয় যখন আপনি একটি প্রিসেট ইমেজ বেছে নেন বা একটি ছবি তোলেন। bitmap হল অবজেক্ট ডিটেকশনের জন্য ইনপুট ইমেজ। পরে এই কোডল্যাবে, আপনি এই পদ্ধতিতে অবজেক্ট ডিটেকশন কোড যোগ করবেন।
  • data class DetectionResult(val boundingBoxes: Rect, val text: String) এটি একটি ডেটা ক্লাস যা ভিজ্যুয়ালাইজেশনের জন্য একটি বস্তু সনাক্তকরণ ফলাফল উপস্থাপন করে। boundingBoxes হল একটি আয়তক্ষেত্র যেখানে বস্তুটি অবস্থান করে এবং text হল সনাক্তকরণের ফলাফলের স্ট্রিং যা অবজেক্টের বাউন্ডিং বাক্সের সাথে একসাথে প্রদর্শিত হয়।
  • fun drawDetectionResult(bitmap: Bitmap, detectionResults: List<DetectionResult>): Bitmap এই পদ্ধতিটি ইনপুট bitmap detectionResults ফলাফলে অবজেক্ট সনাক্তকরণের ফলাফল আঁকে এবং এর পরিবর্তিত অনুলিপি প্রদান করে।

এখানে drawDetectionResult ইউটিলিটি পদ্ধতির একটি আউটপুটের একটি উদাহরণ।

f6b1e6dad726e129.png

5. ডিভাইসে অবজেক্ট সনাক্তকরণ যোগ করুন

এখন আপনি একটি প্রাক-প্রশিক্ষিত TFLite মডেলকে সংহত করে একটি প্রোটোটাইপ তৈরি করবেন যা স্টার্টার অ্যাপে সাধারণ বস্তু সনাক্ত করতে পারে।

একটি প্রাক-প্রশিক্ষিত TFLite অবজেক্ট ডিটেকশন মডেল ডাউনলোড করুন

টেনসরফ্লো হাবে বেশ কয়েকটি অবজেক্ট ডিটেক্টর মডেল রয়েছে যা আপনি ব্যবহার করতে পারেন। এই কোডল্যাবের জন্য, আপনি EfficientDet-Lite অবজেক্ট ডিটেকশন মডেলটি ডাউনলোড করবেন, COCO 2017 ডেটাসেটে প্রশিক্ষিত, TFLite-এর জন্য অপ্টিমাইজ করা হয়েছে এবং মোবাইল CPU, GPU, এবং EdgeTPU-তে পারফরম্যান্সের জন্য ডিজাইন করা হয়েছে।

এরপর, আপনার স্টার্টার অ্যাপে প্রাক-প্রশিক্ষিত TFLite মডেলকে একীভূত করতে TFLite টাস্ক লাইব্রেরি ব্যবহার করুন। TFLite টাস্ক লাইব্রেরি একটি মোবাইল অ্যাপে মোবাইল-অপ্টিমাইজ করা মেশিন লার্নিং মডেলগুলিকে একীভূত করা সহজ করে তোলে। এটি বস্তু সনাক্তকরণ, চিত্র শ্রেণীবিভাগ এবং পাঠ্য শ্রেণীবিভাগ সহ অনেক জনপ্রিয় মেশিন লার্নিং ব্যবহারের ক্ষেত্রে সমর্থন করে। আপনি TFLite মডেলটি লোড করতে পারেন এবং কোডের কয়েকটি লাইন দিয়ে এটি চালাতে পারেন।

স্টার্টার অ্যাপে মডেল যোগ করুন

  1. স্টার্টার অ্যাপের assets ফোল্ডারে আপনি যে মডেলটি ডাউনলোড করেছেন সেটি কপি করুন। আপনি Android স্টুডিওতে প্রোজেক্ট নেভিগেশন প্যানেলে ফোল্ডারটি খুঁজে পেতে পারেন।

c2609599b7d22641.png

  1. মডেল. model.tflite ফাইলটির নাম দিন।

c83e9397177c4561.png

গ্রেডল ফাইল টাস্ক লাইব্রেরি নির্ভরতা আপডেট করুন

app/build.gradle ফাইলে যান এবং dependencies কনফিগারেশনে এই লাইনটি যোগ করুন:

implementation 'org.tensorflow:tensorflow-lite-task-vision:0.3.1'

গ্রেডল ফাইলের সাথে আপনার প্রকল্প সিঙ্ক করুন

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করতে, আপনাকে এই মুহুর্তে গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত। গ্রেডল ফাইলের সাথে সিঙ্ক প্রজেক্ট নির্বাচন করুন ( b451ab2d04d835f9.png অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে।

(যদি এই বোতামটি অক্ষম করা থাকে, তবে নিশ্চিত করুন যে আপনি শুধুমাত্র starter/app/build.gradle আমদানি করেছেন, সম্পূর্ণ সংগ্রহস্থল নয়।)

একটি ছবিতে ডিভাইসে অবজেক্ট ডিটেকশন সেট আপ করুন এবং চালান

একটি অবজেক্ট সনাক্তকরণ মডেল লোড এবং চালানোর জন্য 3টি API সহ শুধুমাত্র 3টি সহজ পদক্ষেপ রয়েছে:

  • একটি ছবি/একটি স্ট্রিম প্রস্তুত করুন: TensorImage ইমেজ
  • একটি আবিষ্কারক বস্তু তৈরি করুন: ObjectDetector
  • উপরের 2টি বস্তু সংযুক্ত করুন: detect(image)

আপনি MainActivity.kt ফাইলে runObjectDetection(bitmap: Bitmap) ফাংশনের ভিতরে এইগুলি অর্জন করেন।

/**
* TFLite Object Detection Function
*/
private fun runObjectDetection(bitmap: Bitmap) {
    //TODO: Add object detection code here
}

এই মুহূর্তে ফাংশনটি খালি। TFLite অবজেক্ট ডিটেক্টর বাস্তবায়ন করতে নিম্নলিখিত ধাপে যান। পথে, অ্যান্ড্রয়েড স্টুডিও আপনাকে প্রয়োজনীয় আমদানি যোগ করার জন্য অনুরোধ করবে:

  • org.tensorflow.lite.support.image.TensorImage
  • org.tensorflow.lite.task.vision.detector.ObjectDetector

ইমেজ অবজেক্ট তৈরি করুন

এই কোডল্যাবের জন্য আপনি যে ছবিগুলি ব্যবহার করবেন তা হয় ডিভাইসের ক্যামেরা থেকে বা প্রিসেট ছবিগুলি থেকে আসবে যা আপনি অ্যাপের UI এ নির্বাচন করেন৷ ইনপুট চিত্রটি Bitmap বিন্যাসে ডিকোড করা হয় এবং runObjectDetection পদ্ধতিতে প্রেরণ করা হয়।

TFLite Bitmap থেকে একটি TensorImage তৈরি করতে একটি সাধারণ API প্রদান করে। runObjectDetection(bitmap:Bitmap) এর শীর্ষে নীচের কোডটি যোগ করুন :

// Step 1: create TFLite's TensorImage object
val image = TensorImage.fromBitmap(bitmap)

একটি ডিটেক্টর উদাহরণ তৈরি করুন

TFLite টাস্ক লাইব্রেরি বিল্ডার ডিজাইন প্যাটার্ন অনুসরণ করে। আপনি কনফিগারেশনটি একজন নির্মাতার কাছে পাস করুন, তারপর এটি থেকে একটি আবিষ্কারক অর্জন করুন। অবজেক্ট ডিটেক্টরের সংবেদনশীলতা সামঞ্জস্য করা সহ কনফিগার করার জন্য বেশ কয়েকটি বিকল্প রয়েছে:

  • সর্বাধিক ফলাফল (মডেল সনাক্ত করা উচিত যে বস্তুর সর্বাধিক সংখ্যা)
  • স্কোর থ্রেশহোল্ড (অবজেক্ট ডিটেক্টর একটি শনাক্ত করা বস্তু ফেরত দিতে কতটা আত্মবিশ্বাসী হওয়া উচিত)
  • লেবেল মঞ্জুরি তালিকা/অস্বীকৃত তালিকা (একটি পূর্বনির্ধারিত তালিকার বস্তুকে অনুমতি দিন/অস্বীকার করুন)

TFLite মডেল ফাইলের নাম এবং কনফিগারেশন বিকল্পগুলি উল্লেখ করে অবজেক্ট ডিটেক্টর ইনস্ট্যান্স শুরু করুন:

// Step 2: Initialize the detector object
val options = ObjectDetector.ObjectDetectorOptions.builder()
    .setMaxResults(5)
    .setScoreThreshold(0.5f)
    .build()
val detector = ObjectDetector.createFromFileAndOptions(
    this, // the application context
    "model.tflite", // must be same as the filename in assets folder
    options
)

ডিটেক্টরে ছবি(গুলি) ফিড করুন

fun runObjectDetection(bitmap:Bitmap) এ নিম্নলিখিত কোড যোগ করুন। এটি আপনার ছবিগুলিকে ডিটেক্টরে ফিড করবে।

// Step 3: feed given image to the model and print the detection result
val results = detector.detect(image)

সমাপ্তির পরে, ডিটেক্টর Detection একটি তালিকা ফেরত দেয়, প্রতিটিতে একটি বস্তু সম্পর্কে তথ্য রয়েছে যা মডেলটি চিত্রটিতে খুঁজে পেয়েছে। প্রতিটি বস্তুর সাথে বর্ণনা করা হয়েছে:

  • boundingBox : একটি আয়তক্ষেত্র যা একটি বস্তুর উপস্থিতি এবং চিত্রের মধ্যে তার অবস্থান ঘোষণা করে
  • categories : এটি কি ধরনের বস্তু এবং সনাক্তকরণ ফলাফলের সাথে মডেলটি কতটা আত্মবিশ্বাসী। মডেলটি একাধিক বিভাগ প্রদান করে এবং সবচেয়ে আত্মবিশ্বাসী প্রথমটি।
  • label : বস্তু বিভাগের নাম।
  • classificationConfidence : 0.0 থেকে 1.0 এর মধ্যে একটি ফ্লোট, 1.0 100% প্রতিনিধিত্ব করে

fun runObjectDetection(bitmap:Bitmap) এ নিম্নলিখিত কোড যোগ করুন। এটি Logcat এ অবজেক্ট সনাক্তকরণ ফলাফল প্রিন্ট করার জন্য একটি পদ্ধতি কল করে।

// Step 4: Parse the detection result and show it
debugPrint(results)

তারপর এই debugPrint() পদ্ধতিটি MainActivity ক্লাসে যোগ করুন:

private fun debugPrint(results : List<Detection>) {
    for ((i, obj) in results.withIndex()) {
        val box = obj.boundingBox

        Log.d(TAG, "Detected object: ${i} ")
        Log.d(TAG, "  boundingBox: (${box.left}, ${box.top}) - (${box.right},${box.bottom})")

        for ((j, category) in obj.categories.withIndex()) {
            Log.d(TAG, "    Label $j: ${category.label}")
            val confidence: Int = category.score.times(100).toInt()
            Log.d(TAG, "    Confidence: ${confidence}%")
        }
    }
} 

এখন আপনার অবজেক্ট ডিটেক্টর প্রস্তুত! রানে ক্লিক করে অ্যাপটি কম্পাইল করুন এবং রান করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। একবার অ্যাপটি ডিভাইসে প্রদর্শিত হয়ে গেলে, অবজেক্ট ডিটেক্টর শুরু করতে যে কোনো প্রিসেট ইমেজে আলতো চাপুন। তারপর লগক্যাট উইন্ডোটি দেখুন*(* 16bd6ea224cf8cf1.png *)* আপনার IDE এর ভিতরে, এবং আপনি এর মতো কিছু দেখতে পাবেন:

D/TFLite-ODT: Detected object: 0 
D/TFLite-ODT:   boundingBox: (0.0, 15.0) - (2223.0,1645.0)
D/TFLite-ODT:     Label 0: dining table
D/TFLite-ODT:     Confidence: 77%
D/TFLite-ODT: Detected object: 1 
D/TFLite-ODT:   boundingBox: (702.0, 3.0) - (1234.0,797.0)
D/TFLite-ODT:     Label 0: cup
D/TFLite-ODT:     Confidence: 69%

এটি আপনাকে বলে যে ডিটেক্টর 2টি বস্তু দেখেছে। প্রথম এক:

  • একটি বস্তু (0, 15) - (2223, 1645) এর আয়তক্ষেত্রের ভিতরে থাকে
  • লেবেল ডাইনিং টেবিল
  • মডেলটি আত্মবিশ্বাসী যে 1মটি একটি ডাইনিং টেবিল (77%)

TFLite টাস্ক লাইব্রেরি কাজ করার জন্য আপনার যা প্রয়োজন তা প্রযুক্তিগতভাবে : আপনি এই মুহূর্তে এটি সব পেয়েছেন! অভিনন্দন !

যাইহোক, UI এর দিকে, আপনি এখনও শুরুর পয়েন্টে আছেন। এখন আপনাকে সনাক্ত করা ফলাফলগুলি পোস্ট-প্রসেসিং করে UI-তে সনাক্ত করা ফলাফলগুলি ব্যবহার করতে হবে।

6. ইনপুট চিত্রে সনাক্তকরণ ফলাফল আঁকুন

পূর্ববর্তী ধাপে, আপনি logcat এ সনাক্তকরণের ফলাফল প্রিন্ট করেছেন: সহজ এবং দ্রুত। এই ধাপে, আপনি স্টার্টার অ্যাপে আপনার জন্য ইতিমধ্যেই প্রয়োগ করা ইউটিলিটি পদ্ধতি ব্যবহার করবেন, যাতে:

  • একটি চিত্রের উপর একটি আবদ্ধ বাক্স আঁকুন
  • বাউন্ডিং বাক্সের ভিতরে একটি বিভাগের নাম এবং আত্মবিশ্বাসের শতাংশ আঁকুন
  1. নিম্নলিখিত কোড স্নিপেট দিয়ে debugPrint(results) কলটি প্রতিস্থাপন করুন:
val resultToDisplay = results.map {
    // Get the top-1 category and craft the display text
    val category = it.categories.first()
    val text = "${category.label}, ${category.score.times(100).toInt()}%"

    // Create a data object to display the detection result
    DetectionResult(it.boundingBox, text)
}
// Draw the detection result on the bitmap and show it.
val imgWithResult = drawDetectionResult(bitmap, resultToDisplay)
runOnUiThread {
    inputImageView.setImageBitmap(imgWithResult)
}
  1. এখন রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।
  2. একবার অ্যাপ লোড হয়ে গেলে, সনাক্তকরণের ফলাফল দেখতে পূর্বনির্ধারিত চিত্রগুলির একটিতে আলতো চাপুন।

আপনার নিজের ছবি দিয়ে চেষ্টা করতে চান? ফটো তুলুন বোতামে আলতো চাপুন এবং আপনার চারপাশের বস্তুর কিছু ছবি তুলুন।

8b024362b15096a6.png

7. একটি কাস্টম বস্তু সনাক্তকরণ মডেল প্রশিক্ষণ

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

এখানে ছবি এবং লেবেল ধারণকারী একটি ডেটাসেট রয়েছে যা আপনি আপনার নিজস্ব কাস্টম মডেল প্রশিক্ষণের জন্য ব্যবহার করতে পারেন। এটি Open Images Dataset V4 থেকে ছবি ব্যবহার করে তৈরি করা হয়েছে।

সহযোগিতামূলক

এর পরে, কাস্টম মডেল প্রশিক্ষণের জন্য Google Colab-এ যাওয়া যাক।

কাস্টম মডেলটি প্রশিক্ষণ দিতে প্রায় 30 মিনিট সময় লাগবে।

আপনি যদি তাড়াহুড়ো করেন তবে আপনি একটি মডেল ডাউনলোড করতে পারেন যা আমরা প্রদত্ত ডেটাসেটে আপনার জন্য প্রি-প্রশিক্ষিত করেছি এবং পরবর্তী ধাপে এগিয়ে যেতে পারেন।

8. কাস্টম TFLite মডেলটিকে অ্যান্ড্রয়েড অ্যাপে ইন্টিগ্রেট করুন৷

এখন যেহেতু আপনি একটি সালাদ সনাক্তকরণ মডেল প্রশিক্ষিত করেছেন, এটিকে সংহত করুন এবং আপনার অ্যাপটিকে একটি সাধারণ অবজেক্ট ডিটেক্টর থেকে বিশেষভাবে, একটি সালাদ ডিটেক্টরে পরিণত করুন৷

  1. assets ফোল্ডারে সালাদ TFLite মডেল অনুলিপি করুন. নতুন মডেলের নাম দিন salad.tflite

91e8d37c4f78eddb.png

  1. MainActivity.kt ফাইলটি খুলুন এবং ObjectDetector ইনিশিয়ালাইজেশন কোড খুঁজুন।
  2. EfficientDet-Lite মডেল ( model.tflite ) কে সালাদ মডেল ( salad.tflite ) দিয়ে প্রতিস্থাপন করুন
val detector = ObjectDetector.createFromFileAndOptions(
    this, // the application context
    "salad.tflite", // must be same as the filename in assets folder
    options
)
  1. রান ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে নতুন মডেলের সাথে অ্যাপটি পুনরায় চালানোর জন্য। ভয়লা ! অ্যাপটি এখন চিজ, সালাদ, বেকড পণ্য চিনতে পারে।

b9705235366ae162.png

9. অভিনন্দন!

আপনি একটি কাস্টম মডেলকে প্রশিক্ষণ দিতে এবং আপনার অ্যাপে অবজেক্ট সনাক্তকরণ ক্ষমতা যোগ করতে TFLite ব্যবহার করেছেন। যে আপনি এটি পেতে এবং চলমান প্রয়োজন!

আমরা কভার করেছি কি

  • টেনসরফ্লো হাবে প্রাক-প্রশিক্ষিত TFLite অবজেক্ট সনাক্তকরণ মডেলগুলি কীভাবে খুঁজে পাবেন
  • TFLite টাস্ক লাইব্রেরি ব্যবহার করে কীভাবে আপনার অ্যান্ড্রয়েড অ্যাপে আপত্তি সনাক্তকরণ মডেলগুলিকে একীভূত করবেন
  • TFLite Model Maker-এর মাধ্যমে কাস্টম অবজেক্ট ডিটেকশন মডেলকে কীভাবে প্রশিক্ষণ দেওয়া যায়

পরবর্তী পদক্ষেপ

  • আপনার TFLite মডেল স্থাপনা উন্নত করতে Firebase ব্যবহার করুন
  • আপনার নিজস্ব মডেল প্রশিক্ষণের জন্য প্রশিক্ষণ তথ্য সংগ্রহ করুন
  • আপনার নিজের Android অ্যাপে অবজেক্ট ডিটেকশন প্রয়োগ করুন

আরও জানুন