Face Detection একটি কম্পিউটার ভিশন প্রযুক্তি যা ডিজিটাল ছবি এবং ভিডিও স্ট্রিমে মানুষের মুখ খুঁজে বের করা এবং অবস্থান চিহ্নিত করার জন্য ব্যবহৃত হয়। Face Recognition (ব্যক্তি শনাক্তকরণ) এর বিপরীতে, Face Detection শুধুমাত্র মুখের উপস্থিতি এবং এর সীমানা — bounding box এবং keypoints (চোখ, নাক, মুখ) নির্ধারণ করে। মোবাইল ডেভেলপমেন্টে, Face Detection ML Kit, ARKit, Vision Framework এবং OpenCV-তে ব্যবহৃত হয়। Google ML Kit, 2025 অনুসারে, আধুনিক ডিভাইসে 5–15 মি.সে.-তে 98% নির্ভুলতায় মুখ শনাক্তকরণ সম্পন্ন হয়।
মূল বিষয়
Face Detection একটি কম্পিউটার ভিশন কাজ যা ছবিতে মানুষের মুখের উপস্থিতি এবং অবস্থান শনাক্ত করে। অ্যালগরিদম একটি bounding box (মুখের চারপাশে আয়তক্ষেত্র) এবং confidence score (মুখ হওয়ার সম্ভাবনা) ফেরত দেয়। আধুনিক অ্যালগরিদম facial landmarks-ও ফেরত দেয় — মূল পয়েন্ট (চোখ, ভ্রু, নাক, মুখ, মুখের কনট্যুর)। Face Detection অনেক ML কাজের জন্য প্রথম ধাপ: ব্যক্তি শনাক্তকরণ, AR ফিল্টার, মনোযোগ বিশ্লেষণ।
অ্যালগরিদমের ইতিহাস Viola-Jones (2001) দিয়ে শুরু হয়েছিল — CPU-তে Haar-সদৃশ বৈশিষ্ট্যের ক্যাসকেড। 2010-এর দশকে HOG + SVM (Histogram of Oriented Gradients) প্রভাবশালী ছিল। 2016 সাল থেকে, সমস্ত আধুনিক অ্যালগরিদম কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) ভিত্তিক: MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face। GPU-তে CNN অ্যালগরিদম 95–99% নির্ভুলতা দেয়, যেখানে ক্লাসিক পদ্ধতি 85–90% দেয়। WiderFace বেঞ্চমার্ক (2025) অনুসারে, RetinaFace সবচেয়ে কঠিন সাবসেটে 96.3% mAP অর্জন করে।
MTCNN (Multi-Task Cascaded CNN) একটি ক্লাসিক তিন-স্তরের ডিটেক্টর: P-Net (প্রস্তাব নেটওয়ার্ক) প্রার্থী খুঁজে পায়, R-Net (রিফাইন নেটওয়ার্ক) তাদের ফিল্টার করে, O-Net (আউটপুট নেটওয়ার্ক) bounding box পরিমার্জিত করে এবং landmarks আউটপুট করে। MTCNN 640x480 রেজোলিউশনে প্রতি ফ্রেমে 30–50 মি.সে. CPU-তে কাজ করে। মোবাইল ডিভাইসের জন্য, MTCNN GPU ছাড়াই গতি এবং নির্ভুলতার সর্বোত্তম ভারসাম্য প্রদান করে।
| অ্যালগরিদম | নির্ভুলতা (WiderFace) | গতি (640x480) | প্ল্যাটফর্ম |
|---|---|---|---|
| RetinaFace | 96.3% | 15 মি.সে. (GPU) | Android, iOS |
| MTCNN | 91.2% | 30–50 মি.সে. (CPU) | ক্রস-প্ল্যাটফর্ম |
| ML Kit | 98.0% | 5–15 মি.সে. (GPU/NPU) | Android, iOS |
| OpenCV Haar | 82.5% | 5–10 মি.সে. (CPU) | ক্রস-প্ল্যাটফর্ম |
রিয়েল-টাইম Face Detection ভিডিওর জন্য 30+ FPS প্রয়োজন। এটি NPU (নিউরাল প্রসেসিং ইউনিট) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU-র কারণে আধুনিক স্মার্টফোনে অর্জনযোগ্য। NPU 50–100 মি.ওয়াট পাওয়ার খরচে 2–5 মি.সে.-তে শনাক্তকরণ করে, যেখানে GPU 500–2000 মি.ওয়াট খরচ করে। সর্বদা-চালু শনাক্তকরণের জন্য (ক্যামেরা সবসময় সক্রিয়), ডিভাইস গরম না হয়ে NPU-ই একমাত্র ব্যবহারিক বিকল্প।
ML Kit Face Detection মোবাইল ডিভাইসে মুখ শনাক্তকরণের জন্য সবচেয়ে জনপ্রিয় SDK। ML Kit দুটি মোড অফার করে: contour mode (সঠিক মাস্ক ওভারলের জন্য 468টি মুখের কনট্যুর পয়েন্ট) এবং classification mode (আবেগ শনাক্তকরণ: হাসি, খোলা চোখ, খোলা মুখ)। মোডগুলি FaceDetectorOptions-এ একত্রিত হয়। ML Kit NNAPI/GPU Delegate-এর মাধ্যমে অপ্টিমাইজেশনসহ Google-এর MobileNetV2-SSD নিউরাল নেটওয়ার্ক ব্যবহার করে।
ML Kit Face Detection কনফিগারেশন: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (মূল পয়েন্ট), setContourMode (কনট্যুর পয়েন্ট), setClassificationMode (আবেগ)। সর্বোচ্চ গতির জন্য FAST + LANDMARKS_ONLY + কনট্যুর ছাড়া ব্যবহার করুন। AR ফিল্টারের জন্য — ACCURATE + ALL_CONTOURS। Google (2025) অনুসারে, FAST মোড 5 মি.সে.-তে 98% নির্ভুলতা দেয়, ACCURATE — 15 মি.সে.-তে 99%।
// ML Kit Face Detection with contours
val options = FaceDetectorOptions.Builder()
.setContourMode(FaceDetectorOptions.ContourMode.ALL)
.setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
.setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
.enableTracking()
.build()
val detector = FaceDetection.getClient(options)
detector.process(inputImage)
.addOnSuccessListener { faces ->
faces.forEach { face ->
val trackingId = face.trackingId
val smile = face.smilingProbability
val leftEyeOpen = face.leftEyeOpenProbability
}
}
ML Kit-এ Face Tracking — ভিডিও স্ট্রিমের জন্য একটি অনন্য বৈশিষ্ট্য। প্রতিটি শনাক্ত মুখকে একটি tracking ID (পূর্ণসংখ্যা) বরাদ্দ করা হয় যা ফ্রেমের মধ্যে টিকে থাকে। এটি পুনরায় শনাক্তকরণ ছাড়াই একটি নির্দিষ্ট মুখের সাথে AR অবজেক্ট সংযুক্ত করতে দেয়। ট্র্যাকার Optical Flow ব্যবহার করে এবং আংশিক মুখ আবরণের পরেও ID ধরে রাখে। যখন মুখ 1 সেকেন্ডের বেশি সময় ধরে ফ্রেমের বাইরে চলে যায়, Tracking ID রিসেট হয়।
Apple Vision Framework iOS-এর জন্য একটি নেটিভ ফ্রেমওয়ার্ক যা Apple Neural Engine-এ Core ML-এর মাধ্যমে Face Detection-এর জন্য কাজ করে। Vision প্রদান করে: VNDetectFaceRectanglesRequest (শুধু bounding box) এবং VNDetectFaceLandmarksRequest (কনট্যুর পয়েন্টসহ)। Vision Framework iOS 11 থেকে iOS-এ নির্মিত এবং অতিরিক্ত SDK প্রয়োজন হয় না — এটি Foundation-এর অংশ।
Vision Framework-এর সুবিধা: তৃতীয়-পক্ষের লাইব্রেরির উপর শূন্য নির্ভরতা, A12+ চিপে Apple Neural Engine (ANE)-এর মাধ্যমে কাজ করে, exifOrientation-এর মাধ্যমে স্বয়ংক্রিয় ছবি ওরিয়েন্টেশন হ্যান্ডলিং, গতি/নির্ভুলতা টিউনিংয়ের জন্য CIDetectorAccuracy সমর্থন। Vision VNFaceObservation bounding box (সাধারণীকৃত স্থানাঙ্ক 0..1) এবং landmarks (VNFaceLandmarkRegion2D) সহ ফেরত দেয়।
iOS-এ Vision বনাম ML Kit: Vision পুরনো ডিভাইসে (A12–A15) দ্রুততর কারণ এটি নেটিভ Apple নিউরাল ইঞ্জিন ব্যবহার করে। ML Kit Google মডেল ব্যবহার করে এবং জটিল কোণে (প্রোফাইল, তীব্র কাত) বেশি নির্ভুল হতে পারে। সাধারণ শনাক্তকরণের জন্য (ক্যামেরা, ছবি) — Vision ব্যবহার করুন। AR ফিল্টার এবং কনট্যুর মাস্কের জন্য — ML Kit ব্যবহার করুন (Vision-এ 76 পয়েন্টের তুলনায় 468 পয়েন্ট)।
import Vision
let request = VNDetectFaceRectanglesRequest { request, error in
guard let observations = request.results as? [VNFaceObservation] else { return }
for face in observations {
let rect = face.boundingBox // normalized 0..1
let confidence = face.confidence
}
}
let handler = VNImageRequestHandler(
cgImage: cgImage, orientation: .up, options: [:]
)
try handler.perform([request])
VNDetectFaceLandmarksRequest মূল পয়েন্টের জন্য বর্ধিত সংস্করণ। প্রতিটি পয়েন্ট গ্রুপের জন্য VNFaceLandmarkRegion2D ফেরত দেয়: leftEye, rightEye, nose, faceContour, innerLips, outerLips। প্রতিটি গ্রুপ CGPoint (সাধারণীকৃত) এর একটি অ্যারে। Vision ML Kit-এর মতো 468 পয়েন্ট ফেরত দেয় না — শুধু 76টি মূল পয়েন্ট। সঠিক মুখোশের জন্য, ML Kit পছন্দনীয়; মৌলিক শনাক্তকরণের জন্য, Vision যথেষ্ট।
OpenCV Haar Cascade Haar-সদৃশ বৈশিষ্ট্যের ক্যাসকেড (Viola-Jones, 2001) ভিত্তিক একটি ক্লাসিক Face Detection অ্যালগরিদম। বয়স সত্ত্বেও, Haar Cascade এখনও সীমিত সম্পদের প্রকল্পে ব্যবহৃত হয়: Raspberry Pi, IoT ডিভাইস, এমবেডেড সিস্টেম। অ্যালগরিদমের GPU বা NPU প্রয়োজন হয় না — এটি VGA-রেজোলিউশন ফ্রেমে প্রতি ফ্রেমে 5–15 মি.সে.-তে যেকোনো CPU-তে কাজ করে।
LBP Cascade (Local Binary Patterns) OpenCV-তে Haar Cascade-এর একটি বিকল্প। LBP দ্রুততর (2–5 মি.সে.) এবং আলোর প্রতি কম সংবেদনশীল, কিন্তু বেশি মিথ্যা পজিটিভ উৎপন্ন করে। Haar বেশি নির্ভুল (85–90% বনাম LBP-এর 80–85%), কিন্তু ঝলক এবং ছায়ার প্রতি সংবেদনশীল। মোবাইল অ্যাপের জন্য, OpenCV Face Detection নির্ভুলতায় নিউরাল নেটওয়ার্ক পদ্ধতির থেকে নিকৃষ্ট, কিন্তু সামঞ্জস্যে জয়ী — এটি যেকোনো ডিভাইসে কাজ করে।
// OpenCV Face Detection via CascadeClassifier
val cascadeFile = File(context.filesDir, "haarcascade_frontalface_default.xml")
val faceDetector = CascadeClassifier(cascadeFile.absolutePath)
val gray = Mat()
Imgproc.cvtColor(colorFrame, gray, Imgproc.COLOR_RGBA2GRAY)
val faces = MatOfRect()
faceDetector.detectMultiScale(gray, faces)
faces.toList().forEach { rect ->
// rect = face bounding box
}
OpenCV-এর সীমাবদ্ধতা: উচ্চ মিথ্যা পজিটিভ হার (15% পর্যন্ত), প্রোফাইল কোণে দুর্বল কর্মক্ষমতা (>30° — নির্ভুলতা 50% এ নেমে যায়), অতিরিক্ত মডেল ছাড়া landmarks নেই, ফ্রেমের মধ্যে কোনো ট্র্যাকিং নেই। আধুনিক মোবাইল অ্যাপের জন্য, OpenCV Face Detection Google Play Services (Huawei, Amazon Fire) ছাড়া ডিভাইসের জন্য ফallback হিসাবে কাজ করে। প্রধান পরিস্থিতিতে — ML Kit বা Vision ব্যবহার করুন।
Face Detection — ছবিতে মুখের উপস্থিতি এবং অবস্থান নির্ধারণ। ফলাফল: bounding box এবং মূল পয়েন্ট। Face Recognition — তার মুখের মাধ্যমে একজন ব্যক্তিকে শনাক্ত করা: এই মুখটি নির্দিষ্ট ব্যক্তির কিনা তা নির্ধারণ করা। Face Recognition embeddings (মুখের প্রতিনিধিত্বকারী সংখ্যার ভেক্টর) ব্যবহার করে এবং পরিচিত মুখের ডাটাবেসের সাথে তুলনা করে। Face Recognition-এর জন্য Face Detection একটি বাধ্যতামূলক প্রথম ধাপ।
Face Recognition প্রযুক্তি: FaceNet (Google, 2015) — 128–512 float-মান embeddings প্রশিক্ষণের জন্য triplet loss, ArcFace (2019) — additive angular margin loss, সেরা নির্ভুলতা (LFW-তে 99.83%)। মোবাইল অ্যাপের জন্য, Face Recognition-এর জন্য একটি কাস্টম TFLite মডেল প্রয়োজন — ML Kit ব্যক্তি শনাক্তকরণের জন্য প্রস্তুত API প্রদান করে না (শুধু শনাক্তকরণ)।
মোবাইল ডিভাইসে গোপনীয়তা: Face Detection নিরাপদ — এটি ব্যবহারকারীর ডেটা সংরক্ষণ করে না। Face Recognition-এর তুলনার জন্য embeddings বা ছবি সংরক্ষণের প্রয়োজন হয়। Apple-এর Face Recognition-এর জন্য স্পষ্ট ব্যবহারকারী সম্মতি প্রয়োজন এবং বিজ্ঞাপনের জন্য এর ব্যবহার নিষিদ্ধ। Google ML Kit ইচ্ছাকৃতভাবে Face Recognition অন্তর্ভুক্ত করে না গোপনীয়তা ঝুঁকি এড়াতে। শনাক্তকরণ ছাড়া ডিটেকশনের জন্য — কোনো বিধিনিষেধ নেই।
| বৈশিষ্ট্য | Face Detection | Face Recognition |
|---|---|---|
| ফলাফল | ছবিতে মুখ কোথায় | মুখটি কার |
| অ্যালগরিদম | MTCNN, RetinaFace, ML Kit | FaceNet, ArcFace, DeepFace |
| সংরক্ষণ | প্রয়োজন নেই | এমবেডিং ডাটাবেস |
| গোপনীয়তা | কম ঝুঁকি | GDPR, CCPA বিধিনিষেধ |
Face Liveness Detection — মুখ বাস্তব কিনা তা নিশ্চিত করার জন্য একটি অতিরিক্ত পরীক্ষা (ছবি/ভিডিও নয়)। চোখের গতি বিশ্লেষণ (blink detection), মাইক্রো-অভিব্যক্তি, ডেপথ ম্যাপ (3D ক্যামেরা) ব্যবহার করে। ব্যাংকিং এবং পেমেন্ট অ্যাপ্লিকেশনের জন্য Liveness Detection বাধ্যতামূলক। ML Kit-এ অন্তর্নির্মিত liveness নেই — যাচাইয়ের জন্য কাস্টম মডেল বা Google Play Integrity API ব্যবহার করুন।
AR ফিল্টার এবং মাস্ক — Face Detection-এর সবচেয়ে জনপ্রিয় ব্যবহার। মুখের কনট্যুর পয়েন্টের (468 পয়েন্ট) উপর ভিত্তি করে, 3D মাস্ক, টুপি, চশমা, গোঁফ ওভারলে করা হয়। ML Kit Face Detection + SceneKit (iOS) বা Filament (Android) রিয়েল-টাইম AR অভিজ্ঞতা তৈরি করে। Snapchat এবং Instagram MobileNet + MTCNN ভিত্তিক তাদের নিজস্ব ডিটেক্টর ব্যবহার করে। কাস্টম AR ফিল্টারের জন্য, ML Kit এবং একটি 3D ইঞ্জিন যথেষ্ট।
ফটো এডিটর এবং রিটাচিং — Face Detection স্বয়ংক্রিয় সংশোধনের জন্য মুখের এলাকা চিহ্নিত করে: ত্বকের রঙের ভারসাম্য, ত্রুটি অপসারণ, চোখ এবং দাঁতের উন্নতি। OpenCV + ML Kit Face Detection Selective Gaussian Blur (ত্বক মসৃণকরণ) এবং চোখের কনট্রাস্টের জন্য স্থানাঙ্ক প্রদান করে। বাস্তব অ্যাপ্লিকেশন — Facetune, BeautyPlus, YouCam Makeup।
মনোযোগ পর্যবেক্ষণ — দৃষ্টির দিক নির্ধারণ (gaze detection)। Face Detection bounding box এবং চোখের landmarks ফেরত দেয়। চোখের সাপেক্ষে পিউপিলের অবস্থান নির্ধারণ করে ব্যবহারকারী কোথায় দেখছে: স্ক্রিনে, বামে, ডানে, উপরে। ই-লার্নিং (শিক্ষার্থী বক্তৃতা দেখছে কিনা পর্যবেক্ষণ), বিজ্ঞাপন (মনোযোগ মেট্রিক্স), ড্রাইভার সহায়তা (ক্লান্তি পর্যবেক্ষণ)-এ ব্যবহৃত হয়।
// ARKit + Vision for AR filter
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
guard let face = req.results?.first as? VNFaceObservation else { return }
if let leftEye = face.landmarks?.leftEye {
// AR object overlay on left eye
}
}
let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}
চিকিৎসা এবং সুস্থতা — Face Detection মুখের অসমতা বিশ্লেষণ (স্নায়বিক ব্যাধি নির্ণয়), ত্বকের মাইক্রো-কম্পন থেকে নাড়ি অনুমান (ক্যামেরার মাধ্যমে ফটোপ্লেথিসমোগ্রাফি), ত্বকের আর্দ্রতা নির্ধারণের জন্য ব্যবহৃত হয়। ML Kit Face Detection + OpenCV চিকিৎসা প্রত্যয়ন ছাড়াই প্রাথমিক স্ক্রিনিংয়ের জন্য যথেষ্ট নির্ভুলতা প্রদান করে। উৎপাদন চিকিৎসার জন্য, FDA/CE প্রত্যয়ন প্রয়োজন।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Face Detection — ছবিতে মুখ খুঁজে পায় এবং এর সীমানা (আয়তক্ষেত্র স্থানাঙ্ক) ফেরত দেয়। Face Recognition — পরিচিত মুখের ডাটাবেসের সাথে তুলনা করে নির্ধারণ করে মুখটি কার। শনাক্তকরণ সনাক্তকরণের প্রথম ধাপ। ML Kit এবং Vision Framework শুধুমাত্র Face Detection প্রদান করে। সনাক্তকরণের জন্য, আপনার ডিভাইসে কাস্টম TFLite মডেল (FaceNet, ArcFace) + এমবেডিং ডাটাবেস প্রয়োজন।
ML Kit Face Detection NNAPI/GPU Delegate-এর কারণে আধুনিক ডিভাইসে সবচেয়ে দ্রুত (প্রতি ফ্রেমে 5–15 মি.সে.)। Apple Vision Framework iOS-এ দ্রুততর (A12+ ANE-এর মাধ্যমে) — 3–10 মি.সে. OpenCV Haar Cascade — CPU-তে 5–10 মি.সে., কিন্তু কম নির্ভুলতা (ML Kit-এর 98% এর তুলনায় 82%)। NPU-যুক্ত ডিভাইসে (Snapdragon 8 Gen 3, Apple A17 Pro) ML Kit এবং Vision 2–5 মি.সে.-তে শনাক্তকরণ করে।
ML Kit এবং Vision Framework চশমা (কালো সহ) এবং মেডিকেল মাস্কের সাথে সঠিকভাবে কাজ করে। মাস্কের সাথে শনাক্তকরণ নির্ভুলতা 98% থেকে 90–92% এ নেমে যায়, কিন্তু উপরের অংশ (চোখ, ভ্রু, কপাল) দিয়ে মুখ still শনাক্ত হয়। কনট্যুর পয়েন্ট (মুখের কনট্যুর) কম নির্ভুল হয় — মাস্কের জন্য কনট্যুর ছাড়া শুধু classification mode (হাসি, খোলা চোখ) ব্যবহার করুন।
হ্যাঁ, রিয়েল-টাইম Face Detection সমস্ত আধুনিক SDK দ্বারা সমর্থিত। ML Kit — CameraX Analyzer-এর মাধ্যমে 480p-তে 60 FPS পর্যন্ত। Apple Vision — AVFoundation-এর মাধ্যমে iOS-এ 30 FPS পর্যন্ত। রিয়েল-টাইমের জন্য FAST পারফরম্যান্স মোড ব্যবহার করুন, রেজোলিউশন 480p-এ কমিয়ে আনুন, এবং প্রতিটি ফ্রেম পুনরায় শনাক্ত না করে ফ্রেমের মধ্যে ID ধরে রাখতে face tracking (ML Kit) সক্ষম করুন।
না, সমস্ত আধুনিক মোবাইল Face Detection SDK সম্পূর্ণরূপে অন-ডিভাইস কাজ করে। ML Kit প্রথম লঞ্চে Google Play Services-এর মাধ্যমে মডেল ডাউনলোড করে (যদি ডাউনলোড করা মোড নির্বাচিত হয়), তারপর অফলাইনে কাজ করে। Apple Vision Framework — iOS-এ নির্মিত, ইন্টারনেটের প্রয়োজন নেই। OpenCV — সম্পূর্ণ অফলাইন। ক্লাউড API (Google Cloud Vision, AWS Rekognition) এর জন্য ইন্টারনেট প্রয়োজন, কিন্তু সেগুলি রিয়েল-টাইম শনাক্তকরণের জন্য মোবাইল অ্যাপে ব্যবহৃত হয় না।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন