টেক্সট এবং মুখের বৈশিষ্ট্য চিনুন ML কিট: iOS

1. ভূমিকা

ML Kit হল একটি মোবাইল SDK যা Android এবং iOS অ্যাপগুলিতে Google-এর মেশিন লার্নিং দক্ষতাকে একটি শক্তিশালী কিন্তু সহজেই ব্যবহারযোগ্য প্যাকেজে নিয়ে আসে। আপনি নতুন বা মেশিন লার্নিংয়ে অভিজ্ঞ যাই হোন না কেন, আপনি কেবল কয়েকটি লাইন কোডের মাধ্যমে আপনার প্রয়োজনীয় কার্যকারিতা সহজেই বাস্তবায়ন করতে পারেন। শুরু করার জন্য নিউরাল নেটওয়ার্ক বা মডেল অপ্টিমাইজেশন সম্পর্কে গভীর জ্ঞান থাকার প্রয়োজন নেই।

এটা কিভাবে কাজ করে?

ML Kit আপনার অ্যাপগুলিতে ML কৌশল প্রয়োগ করা সহজ করে তোলে, Google এর ML প্রযুক্তি, যেমন Mobile Vision এবং TensorFlow Lite , কে একটি একক SDK-তে একত্রিত করে। আপনার Mobile Vision-এর অন-ডিভাইস মডেলগুলির রিয়েল-টাইম ক্ষমতার শক্তির প্রয়োজন হোক বা কাস্টম TensorFlow Lite চিত্র শ্রেণিবদ্ধকরণ মডেলগুলির নমনীয়তার প্রয়োজন হোক, ML Kit মাত্র কয়েকটি লাইন কোড দিয়ে এটি সম্ভব করে তোলে।

এই কোডল্যাবটি আপনাকে আপনার নিজস্ব iOS অ্যাপ তৈরির পথ দেখাবে যা স্বয়ংক্রিয়ভাবে একটি ছবিতে টেক্সট এবং মুখের বৈশিষ্ট্য সনাক্ত করতে পারে।

তুমি কী তৈরি করবে

এই কোডল্যাবে, আপনি ML Kit ব্যবহার করে একটি iOS অ্যাপ তৈরি করতে যাচ্ছেন। আপনার অ্যাপটি হবে:

  • ছবিতে টেক্সট শনাক্ত করতে ML Kit Text Recognition API ব্যবহার করুন
  • ছবিতে মুখের বৈশিষ্ট্য শনাক্ত করতে ML Kit Face Detection API ব্যবহার করুন

Image of Grace Hopper demonstrating ML KIt Face Recognition APIImage of sign on grass demonstrating text recognition API

তুমি কি শিখবে

  • যেকোনো iOS অ্যাপে টেক্সট রিকগনিশন, ফেস ফিচার ডিটেকশনের মতো উন্নত মেশিন লার্নিং ক্ষমতা সহজেই যোগ করার জন্য ML Kit SDK কীভাবে ব্যবহার করবেন

তোমার যা লাগবে

  • Xcode এর একটি সাম্প্রতিক সংস্করণ (v12.4+)
  • iOS সিমুলেটর অথবা iOS 10.0+ চালিত একটি ভৌত ​​iOS ডিভাইস
  • ML Kit শুধুমাত্র এই দুটি 64-বিট আর্কিটেকচার সমর্থন করে: x86_64 এবং arm64
  • নমুনা কোড
  • সুইফটে iOS ডেভেলপমেন্টের প্রাথমিক জ্ঞান
  • মেশিন লার্নিং মডেলগুলির প্রাথমিক ধারণা

এই কোডল্যাবটি এমএল কিটের উপর দৃষ্টি নিবদ্ধ করে। অপ্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলিকে গ্লস করা হয়েছে এবং আপনার জন্য কেবল কপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে।

2. সেট আপ করা

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

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

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি আপনার প্রয়োজনীয় সমস্ত রিসোর্স সহ একটি রুট ফোল্ডার ( mlkit-ios-codelab ) তৈরি করবে। এই কোডল্যাবের জন্য, আপনার কেবল vision সাবডিরেক্টরিতে থাকা রিসোর্সগুলির প্রয়োজন হবে।

mlkit-ios-codelab সংগ্রহস্থলের vision সাবডিরেক্টরিতে দুটি ডিরেক্টরি রয়েছে:

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

CocoaPods এর সাথে ML Kit এর জন্য নির্ভরতা যোগ করুন

আপনার অ্যাপে ML Kit নির্ভরতা যোগ করতে CocoaPods ব্যবহার করা হয়। যদি আপনার মেশিনে CocoaPods ইনস্টল না করে থাকেন, তাহলে তাদের ইনস্টলেশন নির্দেশাবলী এখানে দেখুন। ইনস্টল হয়ে গেলে, আপনার প্রিয় এডিটরে Podfile খুলুন এবং নির্ভরতা হিসেবে ML Kit যোগ করুন:

পডফাইল

platform :ios, '10.0'
use_frameworks!

pod 'GoogleMLKit/FaceDetection'
pod 'GoogleMLKit/TextRecognition'

target 'MLKit-codelab' do
end

এমএল কিট কোকো পড ইনস্টল করুন

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ আছে কিনা তা নিশ্চিত করতে, আপনার ML Kit Cocoa Pods ইনস্টল করার জন্য কমান্ড লাইন ব্যবহার করা উচিত।

কমান্ড লাইন

# Make sure you are in the root of your app
pod install
xed .

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

এখন আপনি প্রথমবারের মতো অ্যাপটি চালানোর জন্য প্রস্তুত। ক্লিক করুন 98205811bbed9d74.png সম্পর্কে অ্যাপটি কম্পাইল করতে Xcode এ রান করুন এবং iOS সিমুলেটরে চালান।

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

৪. ডিভাইসে টেক্সট রিকগনিশন যোগ করুন

এই ধাপে, আমরা আপনার অ্যাপে ছবিতে লেখা শনাক্ত করার কার্যকারিতা যোগ করব।

MLVision মডিউলটি আমদানি করুন

আপনার ViewController ক্লাসে নিম্নলিখিত আমদানিগুলি বিদ্যমান কিনা তা নিশ্চিত করুন।

ভিউকন্ট্রোলার.সুইফট

import MLKit

একটি VisionTextRecognizer তৈরি করুন

আপনার ViewController ক্লাসে নিম্নলিখিত lazy বৈশিষ্ট্যগুলি যোগ করুন।

ভিউকন্ট্রোলার.সুইফট

private lazy var textRecognizer = TextRecognizer.textRecognizer()

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

ViewController ক্লাসের runTextRecognition পদ্ধতিতে নিম্নলিখিতটি যোগ করুন:

ভিউকন্ট্রোলার.সুইফট

func runTextRecognition(with image: UIImage) {
  let visionImage = VisionImage(image: image)
  textRecognizer.process(visionImage) { features, error in
    self.processResult(from: features, error: error)
  }
}

উপরের কোডটি টেক্সট রিকগনিশন ডিটেক্টর কনফিগার করে এবং প্রতিক্রিয়া সহ ফাংশন processResult(from:, error:) কল করে।

টেক্সট শনাক্তকরণ প্রতিক্রিয়া প্রক্রিয়া করুন

ফলাফলগুলি বিশ্লেষণ করতে এবং আপনার অ্যাপে প্রদর্শন করতে ViewController ক্লাসে processResult এ নিম্নলিখিত কোডটি যোগ করুন।

ভিউকন্ট্রোলার.সুইফট

 func processResult(from text: Text?, error: Error?) {
    removeDetectionAnnotations()
    guard error == nil, let text = text else {
      let errorString = error?.localizedDescription ?? Constants.detectionNoResultsMessage
      print("Text recognizer failed with error: \(errorString)")
      return
    }

    let transform = self.transformMatrix()

    // Blocks.
    for block in text.blocks {
      drawFrame(block.frame, in: .purple, transform: transform)

      // Lines.
      for line in block.lines {
        drawFrame(line.frame, in: .orange, transform: transform)

        // Elements.
        for element in line.elements {
          drawFrame(element.frame, in: .green, transform: transform)

          let transformedRect = element.frame.applying(transform)
          let label = UILabel(frame: transformedRect)
          label.text = element.text
          label.adjustsFontSizeToFitWidth = true
          self.annotationOverlayView.addSubview(label)
        }
      }
    }
  }

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

এখন ক্লিক করুন 98205811bbed9d74.png সম্পর্কে Xcode এ চালান । অ্যাপটি লোড হয়ে গেলে, নিশ্চিত করুন যে পিকারে Image 1 নির্বাচন করা আছে এবং Find Text বোতামে ক্লিক করুন।

আপনার অ্যাপটি এখন নীচের ছবির মতো দেখাবে, যেখানে টেক্সট রিকগনিশন ফলাফল এবং মূল ছবির উপরে ওভারলে করা বাউন্ডিং বাক্সগুলি দেখানো হবে।

7269fd8fcb4dc793.png সম্পর্কে

ছবি: কাই শ্রেইবার/উইকিমিডিয়া কমন্স/সিসি বাই-এসএ 2.0

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

৫. ডিভাইসে ফেস কনট্যুর সনাক্তকরণ যোগ করুন

এই ধাপে, আমরা আপনার অ্যাপে ছবিতে মুখের রূপরেখা সনাক্ত করার কার্যকারিতা যুক্ত করব।

একটি ফেসডিটেক্টর তৈরি করুন

আপনার ViewController ক্লাসে নিম্নলিখিত lazy বৈশিষ্ট্যগুলি যোগ করুন।

ভিউকন্ট্রোলার.সুইফট

private lazy var faceDetectorOption: FaceDetectorOptions = {
  let option = FaceDetectorOptions()
  option.contourMode = .all
  option.performanceMode = .fast
  return option
}()
private lazy var faceDetector = FaceDetector.faceDetector(options: faceDetectorOption)

একটি ছবিতে ডিভাইসে ফেস কনট্যুর সনাক্তকরণ সেট আপ করুন এবং চালান

ViewController ক্লাসের runFaceContourDetection পদ্ধতিতে নিম্নলিখিতটি যোগ করুন:

ভিউকন্ট্রোলার.সুইফট

  func runFaceContourDetection(with image: UIImage) {
    let visionImage = VisionImage(image: image)
    faceDetector.process(visionImage) { features, error in
      self.processResult(from: features, error: error)
    }
  }

উপরের কোডটি টেক্সট রিকগনিশন ডিটেক্টর কনফিগার করে এবং প্রতিক্রিয়া সহ ফাংশন processResult(from:, error:) কল করে।

ফেস ডিটেক্টর রেসপন্স প্রক্রিয়া করুন

ফলাফলগুলি বিশ্লেষণ করতে এবং আপনার অ্যাপে প্রদর্শন করতে ViewController ক্লাসে processResult এ নিম্নলিখিত কোডটি যোগ করুন।

ভিউকন্ট্রোলার.সুইফট

  func processResult(from faces: [Face]?, error: Error?) {
    removeDetectionAnnotations()
    guard let faces = faces else {
      return
    }

    for feature in faces {
      let transform = self.transformMatrix()
      let transformedRect = feature.frame.applying(transform)
      UIUtilities.addRectangle(
        transformedRect,
        to: self.annotationOverlayView,
        color: UIColor.green
      )
      self.addContours(forFace: feature, transform: transform)
    }
  }

অবশেষে কনট্যুর পয়েন্ট আঁকতে ViewController ক্লাসে addContours সাহায্যকারী পদ্ধতি যোগ করুন।

ভিউকন্ট্রোলার.সুইফট

 private func addContours(forFace face: Face, transform: CGAffineTransform) {
    // Face
    if let faceContour = face.contour(ofType: .face) {
      for point in faceContour.points {
        drawPoint(point, in: .blue, transform: transform)
      }
    }

    // Eyebrows
    if let topLeftEyebrowContour = face.contour(ofType: .leftEyebrowTop) {
      for point in topLeftEyebrowContour.points {
        drawPoint(point, in: .orange, transform: transform)
      }
    }
    if let bottomLeftEyebrowContour = face.contour(ofType: .leftEyebrowBottom) {
      for point in bottomLeftEyebrowContour.points {
        drawPoint(point, in: .orange, transform: transform)
      }
    }
    if let topRightEyebrowContour = face.contour(ofType: .rightEyebrowTop) {
      for point in topRightEyebrowContour.points {
        drawPoint(point, in: .orange, transform: transform)
      }
    }
    if let bottomRightEyebrowContour = face.contour(ofType: .rightEyebrowBottom) {
      for point in bottomRightEyebrowContour.points {
        drawPoint(point, in: .orange, transform: transform)
      }
    }

    // Eyes
    if let leftEyeContour = face.contour(ofType: .leftEye) {
      for point in leftEyeContour.points {
        drawPoint(point, in: .cyan, transform: transform)
      }
    }
    if let rightEyeContour = face.contour(ofType: .rightEye) {
      for point in rightEyeContour.points {
        drawPoint(point, in: .cyan, transform: transform)
      }
    }

    // Lips
    if let topUpperLipContour = face.contour(ofType: .upperLipTop) {
      for point in topUpperLipContour.points {
        drawPoint(point, in: .red, transform: transform)
      }
    }
    if let bottomUpperLipContour = face.contour(ofType: .upperLipBottom) {
      for point in bottomUpperLipContour.points {
        drawPoint(point, in: .red, transform: transform)
      }
    }
    if let topLowerLipContour = face.contour(ofType: .lowerLipTop) {
      for point in topLowerLipContour.points {
        drawPoint(point, in: .red, transform: transform)
      }
    }
    if let bottomLowerLipContour = face.contour(ofType: .lowerLipBottom) {
      for point in bottomLowerLipContour.points {
        drawPoint(point, in: .red, transform: transform)
      }
    }

    // Nose
    if let noseBridgeContour = face.contour(ofType: .noseBridge) {
      for point in noseBridgeContour.points {
        drawPoint(point, in: .yellow, transform: transform)
      }
    }
    if let noseBottomContour = face.contour(ofType: .noseBottom) {
      for point in noseBottomContour.points {
        drawPoint(point, in: .yellow, transform: transform)
      }
    }
  }

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

এখন ক্লিক করুন 98205811bbed9d74.png সম্পর্কে Xcode এ চালান । অ্যাপটি লোড হয়ে গেলে, নিশ্চিত করুন যে পিকারে Image 2 নির্বাচন করা আছে এবং Find Face Contour বোতামে ক্লিক করুন। আপনার অ্যাপটি এখন নীচের ছবির মতো দেখতে হবে, যেখানে মূল ছবির উপরে বিন্দু হিসেবে গ্রেস হপারের মুখের রূপরেখা দেখানো হবে।

a5169b50dafbcb2f.png সম্পর্কে

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

৬. অভিনন্দন!

আপনার অ্যাপে সহজেই উন্নত মেশিন লার্নিং ক্ষমতা যোগ করার জন্য আপনি ML Kit ব্যবহার করেছেন।

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

  • আপনার iOS অ্যাপে ML Kit কীভাবে যোগ করবেন
  • ছবিতে টেক্সট খুঁজে পেতে ML Kit-এ ডিভাইসে টেক্সট রিকগনিশন কীভাবে ব্যবহার করবেন
  • ছবিতে মুখের বৈশিষ্ট্য শনাক্ত করার জন্য ML Kit-এ ডিভাইসে মুখ শনাক্তকরণ কীভাবে ব্যবহার করবেন

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

  • আপনার নিজস্ব iOS অ্যাপে ML Kit ব্যবহার করুন।

আরও জানুন

  • https://g.co/mlkit