Ilovalarda Face Detection: bu nima, usullar va kutubxonalar

Muallif: IT Sectr Nashr etilgan: 2026-07-18 O'qish vaqti: 10 daq

Face Detection — raqamli tasvirlar va video oqimida inson yuzlarini topish va joylashuvini aniqlash uchun kompyuter ko‘rish texnologiyasidir. Face Recognition (shaxsni identifikatsiya qilish) dan farqli o‘laroq, Face Detection faqat yuzning mavjudligi va uning chegaralarini — bounding box va keypoints (ko‘zlar, burun, og‘iz) aniqlaydi. Mobil ishlanmada Face Detection ML Kit, ARKit, Vision Framework va OpenCV da qo‘llaniladi. Google ML Kit, 2025 ma’lumotlariga ko‘ra, yuzni aniqlash zamonaviy qurilmalarda 5–15 ms da 98% aniqlik bilan bajariladi.

Asosiy

  • Face Detection — tasvirda yuzlarni topish, shaxsni identifikatsiya qilish emas
  • Bounding box — x, y, w, h koordinatalari bilan yuz atrofidagi to‘rtburchak
  • Keypoints — yuzning asosiy nuqtalari: ko‘zlar, burun, og‘iz, quloqlar (ML Kit da 468 nuqta)
  • On-device — aniqlash serverisiz mahalliy ravishda qurilmada bajariladi
  • Real-time — zamonaviy smartfonlarda HD-video uchun 30+ FPS

Face Detection nima: prinsiplar va algoritmlar

Face Detection — tasvirda inson yuzlarining mavjudligi va joylashishini aniqlash uchun kompyuter ko‘rish vazifasidir. Algoritm bounding box (yuz atrofidagi to‘rtburchak) va confidence score (bu yuz ekanligi ehtimoli) qaytaradi. Zamonaviy algoritmlar shuningdek facial landmarks — asosiy nuqtalar (ko‘zlar, qoshlar, burun, og‘iz, yuz konturi) qaytaradi. Face Detection ko‘plab ML vazifalari uchun birinchi bosqichdir: shaxsni tanib olish, AR filtrlari, diqqat analitikasi.

Algoritmlar tarixi Viola-Jones (2001) — CPU da Haar-o‘xshash xususiyatlar kaskadi bilan boshlandi. 2010-yillarda HOG + SVM (Histogram of Oriented Gradients) ustunlik qilgan. 2016 yildan beri barcha zamonaviy algoritmlar konvolyutsion neyron tarmoqlarga (CNN) asoslangan: MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. GPU da CNN algoritmlari klassik usullarga nisbatan 85–90% o‘rniga 95–99% aniqlik beradi. WiderFace benchmarkiga (2025) ko‘ra, RetinaFace eng qiyin kichik to‘plamda mAP 96.3% ni ko‘rsatadi.

MTCNN (Multi-Task Cascaded CNN) — klassik uch bosqichli detektor: P-Net (Proposal Network) nomzodlarni topadi, R-Net (Refine Network) filtrlaydi, O-Net (Output Network) bounding box ni aniqlashtiradi va landmarks chiqaradi. MTCNN CPU da 640x480 o‘lchamda kadr uchun 30–50 ms tezlikda ishlaydi. Mobil qurilmalar uchun MTCNN GPU siz tezlik va aniqlikning optimal muvozanatidir.

AlgoritmAniqlik (WiderFace)Tezlik (640x480)Platforma
RetinaFace96.3%15 ms (GPU)Android, iOS
MTCNN91.2%30–50 ms (CPU)Ko‘p platformali
ML Kit98.0%5–15 ms (GPU/NPU)Android, iOS
OpenCV Haar82.5%5–10 ms (CPU)Ko‘p platformali

Real-time Face Detection video uchun 30+ FPS talab qiladi. Bu zamonaviy smartfonlarda NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU tufayli erishish mumkin. NPU 50–100 mVt energiya sarfi bilan 2–5 ms da aniqlashni bajaradi, GPU esa 500–2000 mVt sarflaydi. Doimiy aniqlash (kamera doim yoqilgan) uchun NPU qurilmani qizdirishsiz yagona amaliy variantdir.

Android va iOS da ML Kit Face Detection

ML Kit Face Detection — mobil qurilmalarda yuzlarni aniqlash uchun eng mashhur SDK. ML Kit ikki rejimni taklif qiladi: contour mode (maskalarni aniq qo‘llash uchun 468 yuz kontur nuqtasi) va classification mode (hissiyotlarni aniqlash: tabassum, ochiq ko‘zlar, ochiq og‘iz). Rejimlar FaceDetectorOptions da birlashtiriladi. ML Kit NNAPI/GPU Delegate orqali optimallashtirish bilan Google MobileNetV2-SSD neyron tarmog‘idan foydalanadi.

ML Kit Face Detection sozlamalari: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (asosiy nuqtalar), setContourMode (kontur nuqtalari), setClassificationMode (hissiyotlar). Maksimal tezlik uchun FAST + LANDMARKS_ONLY + kontursiz foydalaning. AR filtrlari uchun — ACCURATE + ALL_CONTOURS. Google ga (2025) ko‘ra, FAST rejimi 5 ms da 98% aniqlik beradi, ACCURATE — 15 ms da 99%.

kotlin
// Konturlar bilan ML Kit Face Detection
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 da Face Tracking — video oqimi uchun noyob xususiyat. Aniqlangan har bir yuzga kadrlar orasida saqlanadigan tracking ID (butun son) beriladi. Bu AR ob‘yektlarini qayta aniqlamasdan ma’lum bir yuzga bog‘lash imkonini beradi. Traker Optical Flow dan foydalanadi va yuz qisman yopilganda ham ID ni saqlaydi. Tracking ID yuz kadrdan 1 soniyadan ko‘proq chiqqanda qayta o‘rnatiladi.

Apple Vision Framework: VNDetectFaceRectanglesRequest

Apple Vision Framework — Apple Neural Engine orqali Core ML da ishlaydigan Face Detection uchun mahalliy iOS framework. Vision VNDetectFaceRectanglesRequest (faqat bounding box) va VNDetectFaceLandmarksRequest (kontur nuqtalari bilan) ni taqdim etadi. Vision Framework iOS 11 dan boshlab iOS ga o‘rnatilgan va qo‘shimcha SDK talab qilmaydi — Foundation ning bir qismi.

Vision Framework afzalliklari: uchinchi tomon kutubxonalariga nol bog‘liqlik, A12+ chiplarida Apple Neural Engine (ANE) orqali ishlash, exifOrientation orqali avtomatik tasvir yo‘nalishini qayta ishlash, tezlik/aniqlikni sozlash uchun CIDetectorAccuracy qo‘llab-quvvatlashi. Vision bounding box (normalangan koordinatalar 0..1) va landmarks (VNFaceLandmarkRegion2D) bilan VNFaceObservation qaytaradi.

iOS da Vision vs ML Kit: Vision eski qurilmalarda (A12–A15) tezroq, chunki Apple ning mahalliy neyron dvigatellaridan foydalanadi. ML Kit Google modellaridan foydalanadi va murakkab burchaklarda (profil, kuchli egilish) aniqroq bo‘lishi mumkin. Oddiy aniqlash (kamera, rasm) uchun — Vision. AR filtrlari va kontur maskalari uchun — ML Kit (Vision dagi 76 nuqtaga qarshi 468 nuqta).

swift
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 // normalangan 0..1
        let confidence = face.confidence
    }
}

let handler = VNImageRequestHandler(
    cgImage: cgImage, orientation: .up, options: [:]
)
try handler.perform([request])

VNDetectFaceLandmarksRequest — asosiy nuqtalar uchun kengaytirilgan versiya. Har bir nuqta guruhi uchun VNFaceLandmarkRegion2D qaytaradi: leftEye, rightEye, nose, faceContour, innerLips, outerLips. Har bir guruh CGPoint massivi (normalangan). Vision ML Kit kabi 468 nuqta qaytarmaydi — faqat 76 asosiy nuqta. Aniq yuz maskasi uchun ML Kit afzal, asosiy uchun — Vision.

OpenCV Haar Cascade: klassik yondashuv

OpenCV Haar Cascade — Haar-o‘xshash xususiyatlar kaskadiga asoslangan klassik Face Detection algoritmi (Viola-Jones, 2001). Yoshiya qaramay, Haar Cascade hali ham cheklangan resursli loyihalarda qo‘llaniladi: Raspberry Pi, IoT qurilmalari, o‘rnatilgan tizimlar. Algoritm GPU yoki NPU talab qilmaydi — VGA o‘lchamda kadr uchun 5–15 ms tezlikda istalgan CPU da ishlaydi.

LBP Cascade (Local Binary Patterns) — OpenCV da Haar Cascade ga alternativa. LBP tezroq (2–5 ms) va yorug‘likka kamroq sezgir, lekin ko‘proq noto‘g‘ri musbat natijalar beradi. Haar aniqroq (LBP uchun 80–85% ga qarshi 85–90%), lekin porlash va soyalarga sezgir. Mobil ilovalar uchun OpenCV Face Detection aniqlik bo‘yicha neyron tarmoq usullaridan past, ammo moslik bo‘yicha g‘olib — istalgan qurilmada ishlaydi.

kotlin
// CascadeClassifier orqali OpenCV Face Detection
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 = yuz bounding box
}

OpenCV kamchiliklari: yuqori noto‘g‘ri musbat darajasi (15% gacha), profil burchaklari bilan yomon ishlash (>30° — aniqlikning 50% ga tushishi), qo‘shimcha modelsiz landmarks yo‘qligi, kadrlar orasida tracking yo‘q. Zamonaviy mobil ilovalar uchun OpenCV Face Detection Google Play Services siz qurilmalar (Huawei, Amazon Fire) uchun fallback. Asosiy stsenariylar uchun — ML Kit yoki Vision.

Face Detection vs Face Recognition: farq

Face Detection — tasvirda yuzning mavjudligi va holatini aniqlash. Natija: bounding box va asosiy nuqtalar. Face Recognition — yuz bo‘yicha shaxsni identifikatsiya qilish: bu yuzning ma’lum bir shaxsga tegishli ekanligini aniqlash. Face Recognition embeddinglar (yuzni ifodalovchi raqamlar vektori) dan foydalanadi va ularni ma’lum yuzlar bazasi bilan solishtiradi. Face Detection Face Recognition uchun majburiy birinchi bosqichdir.

Face Recognition texnologiyalari: FaceNet (Google, 2015) — 128–512 float qiymat o‘lchamidagi embeddinglarni o‘rganish uchun triplet loss, ArcFace (2019) — additive angular margin loss, eng yaxshi aniqlik (LFW da 99.83%). Mobil ilovalar uchun Face Recognition maxsus TFLite modelini talab qiladi — ML Kit shaxsni identifikatsiya qilish uchun tayyor API ni taqdim etmaydi (faqat aniqlash).

Mobil qurilmalarda maxfiylik: Face Detection xavfsiz — foydalanuvchi haqida ma’lumot saqlamaydi. Face Recognition solishtirish uchun embeddinglar yoki fotosuratlarni saqlashni talab qiladi. Apple Face Recognition uchun foydalanuvchining aniq roziligini talab qiladi va reklama uchun foydalanishni taqiqlaydi. Google ML Kit maxfiylik xavflaridan qochish uchun ataylab Face Recognition ni kiritmaydi. Identifikatsiyasiz aniqlash uchun — hech qanday cheklovlar yo‘q.

XususiyatFace DetectionFace Recognition
NatijaYuz fotosuratda qayerdaYuz kimga tegishli
AlgoritmlarMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
SaqlashTalab qilinmaydiEmbeddinglar bazasi
MaxfiylikPast xavfGDPR, CCPA cheklovlari

Face Liveness Detection — yuzning haqiqiy ekanligiga qo‘shimcha tekshirish (fotosurat/video emas). Ko‘z harakati tahlili (blink detection), mikro-mimika, chuqurlik xaritasi (3D kamera) dan foydalanadi. Liveness Detection bank va to‘lov ilovalari uchun majburiydir. ML Kit ichki liveness ga ega emas — maxsus model yoki tekshirish uchun Google Play Integrity API dan foydalaning.

Mobil ilovalarda Face Detection qo‘llanilishi

AR filtrlari va maskalar — Face Detection ning eng mashhur qo‘llanilishi. Yuz kontur nuqtalari (468 nuqta) asosida 3D maskalar, shlyapalar, ko‘zoynaklar, mo‘ylovlar qo‘llaniladi. ML Kit Face Detection + SceneKit (iOS) yoki Filament (Android) real-time AR tajribasini yaratadi. Snapchat va Instagram MobileNet + MTCNN asosida o‘z detektorlaridan foydalanadi. Maxsus AR filtrlari uchun ML Kit va 3D dvigatel yetarli.

Foto muharrirlari va retush — Face Detection avtomatik tuzatish uchun yuz maydonini aniqlaydi: teri rangini tekislash, nuqsonlarni olib tashlash, ko‘z va tishlarni yaxshilash. OpenCV + ML Kit Face Detection Selective Gaussian Blur (terini silliqlash) va ko‘z kontrasti uchun koordinatalarni beradi. Haqiqiy qo‘llanilishi — Facetune, BeautyPlus, YouCam Makeup ilovalari.

Diqqat nazorati — qarash yo‘nalishini aniqlash (gaze detection). Face Detection bounding box va ko‘z landmarks larini qaytaradi. Ko‘z qorachig‘ining ko‘zga nisbatan joylashuviga qarab foydalanuvchi qayerga qarayotgani aniqlanadi: ekranga, chapga, o‘ngga, yuqoriga. E-learning da (talabaning ma’ruzaga qarayotganini nazorat qilish), reklamada (diqqat metrikalari), haydovchi yordamchilarida (charchoqni nazorat qilish) qo‘llaniladi.

swift
// AR filtri uchun ARKit + Vision
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
    guard let face = req.results?.first as? VNFaceObservation else { return }
    if let leftEye = face.landmarks?.leftEye {
        // Chap ko‘zda AR ob‘yekt qoplamasi
    }
}

let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
    try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}

Tibbiyot va wellness — Face Detection yuz assimetriyasini tahlil qilish (nevrologik buzilishlarni tashxislash), terining mikro-tebranishlari orqali pulsni baholash (kamera orqali fotopletismografiya), terining namligini aniqlash uchun qo‘llaniladi. ML Kit Face Detection + OpenCV tibbiy sertifikatsiz dastlabki skrining uchun yetarli aniqlikni ta’minlaydi. Ishlab chiqarish tibbiyoti uchun FDA/CE sertifikati talab qilinadi.

Tez-tez so‘raladigan savollar

Face Detection va Face Recognition o‘rtasidagi farq nima?

Face Detection — tasvirda yuzni topadi va uning chegaralarini (to‘rtburchak koordinatalari) qaytaradi. Face Recognition — bu yuzning kimga tegishli ekanligini aniqlaydi, ma’lum yuzlar bazasi bilan solishtiradi. Aniqlash tanib olish uchun birinchi qadamdir. ML Kit va Vision Framework faqat Face Detection ni ta’minlaydi. Tanib olish uchun maxsus TFLite modeli (FaceNet, ArcFace) + qurilmada embeddinglar bazasi kerak.

Mobil qurilmalarda qaysi Face Detection SDK eng tez?

ML Kit Face Detection — NNAPI/GPU Delegate tufayli zamonaviy qurilmalarda eng tez (kadr uchun 5–15 ms). Apple Vision Framework — iOS da tezroq (A12+ ANE orqali) — 3–10 ms. OpenCV Haar Cascade — CPU da 5–10 ms, lekin past aniqlik (ML Kit dagi 98% ga qarshi 82%). NPU li qurilmalarda (Snapdragon 8 Gen 3, Apple A17 Pro) ML Kit va Vision 2–5 ms da aniqlashni bajaradi.

Face Detection qora ko‘zoynak yoki niqob bilan ishlaydimi?

ML Kit va Vision Framework ko‘zoynaklar (shu jumladan qora) va tibbiy niqoblar bilan to‘g‘ri ishlaydi. Niqob bilan aniqlash aniqligi 98% dan 90–92% gacha tushadi, lekin yuz yuqori qismidan (ko‘zlar, qoshlar, peshona) hali ham aniqlanadi. Kontur nuqtalari (yuz konturi) kamroq aniq bo‘ladi — niqoblar uchun faqat kontursiz classification mode (tabassum, ochiq ko‘zlar) dan foydalaning.

Face Detection real vaqtda ishlatilishi mumkinmi?

Ha, real vaqtda Face Detection barcha zamonaviy SDK lar tomonidan qo‘llab-quvvatlanadi. ML Kit — CameraX Analyzer orqali 480p kadrda 60 FPS gacha. Apple Vision — AVFoundation orqali iOS da 30 FPS gacha. Real-time uchun FAST performance rejimidan foydalaning, o‘lchamni 480p ga tushiring va har bir kadrni qayta aniqlashsiz kadrlar orasida ID ni saqlash uchun face tracking (ML Kit) ni yoqing.

Face Detection uchun qurilmada internet kerakmi?

Yo‘q, barcha zamonaviy mobil Face Detection SDK lar to‘liq qurilmada ishlaydi. ML Kit modelni birinchi ishga tushirishda Google Play Services orqali yuklaydi (agar yuklangan rejim tanlangan bo‘lsa), keyin oflayn ishlaydi. Apple Vision Framework — iOS ga o‘rnatilgan, internet talab qilmaydi. OpenCV — to‘liq oflayn. Bulutli API lar (Google Cloud Vision, AWS Rekognition) uchun internet kerak, lekin ular mobil ilovalarda real-time uchun ishlatilmaydi.

Xulosa

  • Face Detection — tasvirda yuzlarni qidirish: bounding box va asosiy nuqtalar
  • ML Kit — 5–15 ms, 98% aniqlik, 468 kontur nuqtasi, tracking ID
  • Apple Vision — mahalliy iOS, ANE orqali, 3–10 ms, 76 landmarks
  • OpenCV Haar — klassik usul, CPU, 82% aniqlik, eski qurilmalar uchun fallback
  • Face Detection ≠ Face Recognition — aniqlash shaxsni identifikatsiya qilmaydi
  • Real-time — NPU orqali zamonaviy qurilmalarda 60 FPS gacha
  • Qo‘llanish — AR filtrlari, retush, diqqat nazorati, tibbiyot

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing