Реализация детекции объектов в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация детекции объектов в мобильном приложении
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация детекции объектов в мобильном приложении

Детекция объектов на мобиле — это не только «найти и обвести». Это ещё трекинг между кадрами, корректная проекция bounding box на превью-слой, обработка перекрывающихся детекций и управление производительностью на 30 FPS видеопотоке. Именно последнее чаще всего становится узким местом.

Выбор модели: YOLO vs SSD vs NanoDet

На мобиле работают три основных семейства:

  • MobileNet SSD — классика, отлично поддерживается TFLite Task Library и ML Kit. На Pixel 7 — 18–25 ms на 320×320. Точность на COCO: mAP ~23–27.
  • YOLOv8n/YOLOv5n — лучший баланс точность/скорость в 2024. После конвертации в TFLite или Core ML — 22–40 ms в зависимости от размера входа. mAP на COCO: 37+.
  • NanoDet — для действительно слабых устройств, <10 ms на Snapdragon 665.

Для real-time видео на современных Android-флагманах — YOLOv8n с делегатом GPU. Для офлайн-фото на широком спектре устройств — MobileNet SSD v2.

Bounding box: проекция на камеру

Самая частая визуальная ошибка — bounding box не совпадает с объектом на превью. Причина: модель получает ресайзнутое изображение (например, 320×320), а превью камеры — 1920×1080 с AspectFill или AspectFit. Нужно пересчитать координаты с учётом масштаба и отступов.

На iOS с AVCaptureVideoPreviewLayer:

let converted = previewLayer.layerRectConverted(fromMetadataOutputRect: normalizedRect)

VNDetectedObjectObservation возвращает boundingBox в нормализованных координатах (0..1, y снизу). Перед проекцией на UIKit-координаты нужно инвертировать Y-ось: CGRect(x: box.minX, y: 1 - box.maxY, width: box.width, height: box.height).

На Android с CameraX + ImageAnalysis: результаты детекции в координатах входного изображения, превью — в координатах PreviewView. Используем MappingUtils из ML Kit или считаем трансформацию вручную через матрицу.

Трекинг между кадрами

Детектировать на каждом кадре дорого. Правильный подход: детекция раз в N кадров (обычно каждые 5–10), между кадрами — трекинг через SORT или ByteTrack, либо встроенный VNDetectRectanglesRequest с ObjectTrackerObservation на iOS.

ML Kit Object Detection & Tracking поддерживает трекинг из коробки через .enableMultipleObjects() и .enableClassification(). Каждый трекируемый объект получает стабильный trackingID — это позволяет показывать информацию об объекте без мерцания при потере/появлении в кадре.

NMS (Non-Maximum Suppression) — важный параметр. По умолчанию iouThreshold = 0.5. Если объекты в кадре перекрываются (например, упакованные товары на конвейере), порог нужно снижать до 0.3–0.35. Иначе детектор «склеивает» соседние объекты в один.

Реальный кейс

Приложение для подсчёта количества людей в очереди через статичную камеру (планшет на стойке). YOLOv8n, TFLite, делегат GPU на Android 11+. Проблема: при плотной очереди (>8 человек) детектор пропускал людей в центре — перекрытие выше 60%. Решение: снизили nmsThreshold до 0.3, добавили minDetectionConfidence = 0.4 (вместо 0.5). Количество ложных пропусков упало с 31% до 9%. Дополнительно: дообучили модель на кадрах с перекрытием через Roboflow-датасет.

Сроки

Интеграция готовой детекторной модели с проекцией на превью и NMS-тюнингом — 1–2 недели. Дообучение на кастомных классах + интеграция — 2–3 недели. Стоимость рассчитывается индивидуально.