Face Detection — технологија компјутерског вида за проналажење и лоцирање људских лица на дигиталним сликама и видео стриму. За разлику од Face Recognition (идентификација особе), Face Detection само одређује присуство лица и његове границе — bounding box и keypoints (очи, нос, уста). У мобилном развоју Face Detection се користи у ML Kit, ARKit, Vision Framework и OpenCV. Према подацима Google ML Kit, 2025, детекција лица се изводи за 5–15 ms на модерним уређајима са прецизношћу од 98%.
Главно
Face Detection — задатак компјутерског вида за одређивање присуства и локације људских лица на слици. Алгоритам враћа bounding box (правоугаоник око лица) и confidence score (вероватноћа да је то лице). Модерни алгоритми такође враћају facial landmarks — кључне тачке (очи, обрве, нос, уста, контура лица). Face Detection је прва фаза за многе ML задатке: препознавање особе, AR филтери, аналитика пажње.
Историја алгоритама почела је са Viola-Jones (2001) — каскада Haar-сличних карактеристика на CPU-у. У 2010-им доминирали су HOG + SVM (Histogram of Oriented Gradients). Од 2016. сви модерни алгоритми су засновани на конволуционим неуронским мрежама (CNN): MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. CNN алгоритми на GPU-у дају 95–99% прецизности наспрам 85–90% код класичних метода. Према WiderFace бенчмарку (2025), RetinaFace показује mAP 96.3% на најтежем подскупу.
MTCNN (Multi-Task Cascaded CNN) — класични тростепени детектор: P-Net (Proposal Network) проналази кандидате, R-Net (Refine Network) филтрира, O-Net (Output Network) прецизира bounding box и избацује landmarks. MTCNN ради на CPU-у брзином 30–50 ms по кадру при резолуцији 640x480. За мобилне уређаје, MTCNN представља оптимални баланс брзине и прецизности без GPU-а.
| Алгоритам | Прецизност (WiderFace) | Брзина (640x480) | Платформа |
|---|---|---|---|
| RetinaFace | 96.3% | 15 ms (GPU) | Android, iOS |
| MTCNN | 91.2% | 30–50 ms (CPU) | Вишеплатформска |
| ML Kit | 98.0% | 5–15 ms (GPU/NPU) | Android, iOS |
| OpenCV Haar | 82.5% | 5–10 ms (CPU) | Вишеплатформска |
Real-time Face Detection захтева 30+ FPS за видео. Ово је достижно на модерним паметним телефонима захваљујући NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU. NPU обавља детекцију за 2–5 ms са потрошњом енергије 50–100 mW, док GPU троши 500–2000 mW. За континуирану детекцију (камера увек укључена) NPU је једина практична опција без прегревања уређаја.
ML Kit Face Detection — најпопуларнији SDK за детекцију лица на мобилним уређајима. ML Kit нуди два режима: contour mode (468 тачака контуре лица за прецизно наношење маски) и classification mode (одређивање емоција: осмех, отворене очи, отворена уста). Режими се комбинују у FaceDetectorOptions. ML Kit користи Google неуронску мрежу MobileNetV2-SSD са оптимизацијом преко NNAPI/GPU Delegate.
Подешавање ML Kit Face Detection: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (кључне тачке), setContourMode (контурне тачке), setClassificationMode (емоције). За максималну брзину користите FAST + LANDMARKS_ONLY + без контуре. За AR филтере — ACCURATE + ALL_CONTOURS. Према Google-у (2025), FAST режим даје 98% прецизности при 5 ms, ACCURATE — 99% при 15 ms.
// 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
}
}
Face Tracking у ML Kit — јединствена функција за видео стрим. Сваком детектованом лицу додељује се tracking ID (цео број) који остаје између кадрова. Ово омогућава везивање AR објеката за одређено лице без поновне детекције. Тракер користи Optical Flow и задржава ID чак и при делимичном покривању лица. Tracking ID се ресетује када лице напусти кадар на више од 1 секунде.
Apple Vision Framework — изворни iOS оквир за Face Detection, који ради преко Core ML на Apple Neural Engine. Vision пружа VNDetectFaceRectanglesRequest (само bounding box) и VNDetectFaceLandmarksRequest (са контурним тачкама). Vision Framework је уграђен у iOS од iOS 11 и не захтева додатне SDK-ове — део је Foundation-а.
Предности Vision Framework: нулта зависност од библиотека трећих страна, рад преко Apple Neural Engine (ANE) на чиповима A12+, аутоматска обрада оријентације слике преко exifOrientation, подршка за CIDetectorAccuracy за подешавање брзине/прецизности. Vision враћа VNFaceObservation са bounding box (нормализоване координате 0..1) и landmarks (VNFaceLandmarkRegion2D).
Vision vs ML Kit на iOS: Vision је бржи на старијим уређајима (A12–A15) јер користи изворне неуронске моторе Apple-а. ML Kit користи Google моделе и може бити прецизнији при тешким угловима (профил, јак нагиб). За једноставну детекцију (камера, фотографија) — Vision. За AR филтере и контурне маске — ML Kit (468 тачака наспрам 76 тачака код Vision-а).
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 // нормализовано 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 не враћа 468 тачака као ML Kit — само 76 кључних. За прецизну маску лица ML Kit је пожељнији, за основну — Vision.
OpenCV Haar Cascade — класични алгоритам Face Detection заснован на каскади Haar-сличних карактеристика (Viola-Jones, 2001). Упркос старости, Haar Cascade се још увек користи у пројектима са ограниченим ресурсима: Raspberry Pi, IoT уређаји, уграђени системи. Алгоритам не захтева GPU или NPU — ради на било ком CPU-у брзином 5–15 ms по кадру VGA резолуције.
LBP Cascade (Local Binary Patterns) — алтернатива Haar Cascade у OpenCV. LBP је бржи (2–5 ms) и мање осетљив на осветљење, али даје више лажно позитивних резултата. Haar је прецизнији (85–90% наспрам 80–85% за LBP), али је осетљив на одсјаје и сенке. За мобилне апликације, OpenCV Face Detection је инфериорнији у односу на методе неуронских мрежа по прецизности, али побеђује у компатибилности — ради на сваком уређају.
// OpenCV Face Detection преко 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 = bounding box лица
}
Недостаци OpenCV: висока стопа лажно позитивних резултата (до 15%), лош рад са профилним угловима (>30° — пад прецизности на 50%), недостатак landmarks без додатног модела, недостатак тракинга између кадрова. За модерне мобилне апликације, OpenCV Face Detection је fallback за уређаје без Google Play Services (Huawei, Amazon Fire). За главне сценарије — ML Kit или Vision.
Face Detection — одређивање присуства и положаја лица на слици. Резултат: bounding box и кључне тачке. Face Recognition — идентификација особе по лицу: одређивање да лице припада одређеној особи. Face Recognition користи ембединге (вектор бројева који представља лице) и упоређује их са базом познатих лица. Face Detection је обавезна прва фаза за Face Recognition.
Технологије Face Recognition: FaceNet (Google, 2015) — triplet loss за учење ембединга величине 128–512 float вредности, ArcFace (2019) — additive angular margin loss, најбоља прецизност (99.83% на LFW). За мобилне апликације, Face Recognition захтева прилагођени TFLite модел — ML Kit не пружа готов API за идентификацију особе (само детекцију).
Приватност на мобилним уређајима: Face Detection је безбедан — не чува податке о кориснику. Face Recognition захтева чување ембединга или фотографија за поређење. 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) ствара real-time 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 очију. На основу положаја зенице у односу на око одређује се куда корисник гледа: у екран, лево, десно, горе. Примењује се у e-learning-у (контрола да студент гледа у предавање), рекламама (метрике пажње), возачким асистентима (контрола умора).
// ARKit + Vision за AR филтер
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
guard let face = req.results?.first as? VNFaceObservation else { return }
if let leftEye = face.landmarks?.leftEye {
// AR објекат прекривен на левом оку
}
}
let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}
Медицина и wellness — 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 — најбржи на модерним уређајима (5–15 ms по кадру) захваљујући NNAPI/GPU Delegate. Apple Vision Framework — бржи на iOS (A12+ преко ANE) — 3–10 ms. OpenCV Haar Cascade — 5–10 ms на CPU, али мања прецизност (82% наспрам 98% код ML Kit). На уређајима са NPU (Snapdragon 8 Gen 3, Apple A17 Pro) ML Kit и Vision обављају детекцију за 2–5 ms.
ML Kit и Vision Framework правилно раде са наочарима (укључујући затамњене) и медицинским маскама. Прецизност детекције са маском опада са 98% на 90–92%, али се лице и даље открива по горњем делу (очи, обрве, чело). Контурне тачке (контура лица) постају мање прецизне — за маске користите само classification mode (осмех, отворене очи) без контуре.
Да, Face Detection у реалном времену подржавају сви модерни SDK-ови. ML Kit — до 60 FPS на кадру 480p преко CameraX Analyzer. Apple Vision — до 30 FPS на iOS преко AVFoundation. За рад у реалном времену користите FAST performance режим, смањите резолуцију на 480p и укључите face tracking (ML Kit) за задржавање ID-а између кадрова без поновне детекције сваког кадра.
Не, сви модерни мобилни Face Detection SDK-ови раде потпуно на уређају. ML Kit преузима модел преко Google Play Services при првом покретању (ако је изабран преузети режим), након чега ради офлајн. Apple Vision Framework — уграђен у iOS, не захтева интернет. OpenCV — потпуно офлајн. За облачне API-је (Google Cloud Vision, AWS Rekognition) интернет је потребан, али се они не користе у мобилним апликацијама за рад у реалном времену.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође