Підрахунок об'єктів через камеру: мобільне AI-рішення для iOS та Android

Підрахунок об'єктів через камеру: від детекції до трекінгу Підрахунок об'єктів у реальному часі через камеру — задача з підводним камінням. Об'єкти, що перекриваються, різний масштаб, а головна пастка — double counting при русі камери. Промисловий склад, стадо тварин, монети на столі — кожен сцен

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Підрахунок об'єктів через камеру: мобільне AI-рішення для iOS та Android
Складний
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Підрахунок об'єктів через камеру: від детекції до трекінгу

Підрахунок об'єктів у реальному часі через камеру — задача з підводним камінням. Об'єкти, що перекриваються, різний масштаб, а головна пастка — double counting при русі камери. Промисловий склад, стадо тварин, монети на столі — кожен сценарій вимагає своєї стратегії. Ми займаємося mobile AI комп'ютерним зором більше 5 років і реалізували 30+ проєктів. Пропонуємо готові рішення під ключ для iOS та Android з використанням останніх версій фреймворків.

Коли потрібен автоматичний підрахунок об'єктів?

Типові кейси: облік товару на складі (складська логістика), моніторинг поголів'я в аграрному секторі, підрахунок відвідувачів у магазині. Скрізь, де потрібно швидко та точно дізнатися кількість без ручного перерахунку. Автоматизація скорочує витрати до 15% та виключає людську помилку.

Два підходи: детекція vs density map

Detection-based counting — YOLOv8 mobile або RT-DETR виявляє кожен об'єкт, їх кількість = count. Працює при низькій щільності (до 50–100 об'єктів у кадрі), об'єкти не перекриваються сильно.

Density map estimation — CNN передбачає карту щільності, інтеграл карти = count. Використовується при високій щільності: натовп людей, зерно в бункері, клітини під мікроскопом. CSRNet, DMCount, BL-model — актуальні архітектури.

Критерій Detection-based Density map
Макс. щільність до 100 об'єктів необмежено
Точність при перекриттях низька висока
Швидкість (FPS) 30+ (iPhone 15) 15-20
Необхідність трекінгу так (при русі) ні (інтеграл стабільний)
Порівняння точності підрахунку Detection-based (YOLOv8) Density map (CSRNet)
Низька щільність (<50 об'єктів) 95-99% 97-99%
Середня щільність (50-200) 80-90% 95-98%
Висока щільність (200+) 50-70% 90-95%
// iOS: вибір методу залежно від очікуваної щільності enum CountingStrategy { case detection(model: VNCoreMLModel) // < 100 об'єктів case densityMap(model: VNCoreMLModel) // > 100 об'єктів у кадрі case hybrid // змішаний, визначається адаптивно } class AdaptiveObjectCounter { func selectStrategy(for objectClass: CountableObject) -> CountingStrategy { switch objectClass { case .vehicle, .person_sparse: return .detection(model: vehicleDetector) case .crowd, .grain, .cell: return .densityMap(model: densityEstimator) case .product_shelf: return .hybrid } } } 

Як уникнути повторного підрахунку при русі камери?

Якщо користувач плавно веде камерою (склад, аудиторія), потрібен трекінг, щоб не рахувати одні об'єкти двічі. ByteTracker — один з найкращих алгоритмів для цього завдання, стійкий до оклюзій. Ми реалізували інтеграцію на iOS та Android з використанням non-maximum suppression для фільтрації дублікатів.

class TrackingObjectCounter { private var tracker = ByteTracker() // BYTE алгоритм трекінгу private var countedIds: Set<Int> = [] // унікальні ID за сесію func processFrame(_ detections: [Detection]) -> TrackingCountResult { let tracks = tracker.update(detections: detections) // Нові ID — нові об'єкти, які увійшли в кадр let newIds = tracks.map { $0.trackId }.filter { !countedIds.contains($0) } countedIds.formUnion(newIds) return TrackingCountResult( currentFrameCount: tracks.count, // в кадрі зараз totalUniqueCount: countedIds.count // всього за сесію ) } } 

Чому density map точніше detection при високій щільності?

Detection-based методи перестають працювати, коли об'єкти перекривають один одного: один bounding box накриває кілька об'єктів, або один об'єкт дробиться на частини. Density map вирішує цю проблему — нейромережа передбачає карту розподілу, і сума значень дає точну кількість. Наприклад, при підрахунку зерен у бункері (1000+ об'єктів) density map помиляється на 2-5%, тоді як detection дає похибку 20-30%. Density map estimation точніше detection в 4-10 разів при сильних перекриттях.

// Android: density map estimation через TFLite class DensityMapCounter(context: Context) { private val interpreter: Interpreter by lazy { val model = FileUtil.loadMappedFile(context, "csrnet_lite.tflite") Interpreter(model, Interpreter.Options().apply { addDelegate(GpuDelegate()) numThreads = 4 }) } fun estimate(bitmap: Bitmap): Int { // Вхідний розмір моделі — зазвичай 512×512 або кратний 16 val resized = Bitmap.createScaledBitmap(bitmap, 512, 512, true) val inputBuffer = TensorImage.fromBitmap(resized).buffer // Вихідний тензор — density map того ж розміру val outputBuffer = TensorBuffer.createFixedSize( intArrayOf(1, 512, 512, 1), DataType.FLOAT32 ) interpreter.run(inputBuffer, outputBuffer.buffer) // Сума по всіх пікселях density map = estimated count val densitySum = outputBuffer.floatArray.sum() // Масштабування: сума відповідає кількості об'єктів return densitySum.roundToInt() } } 

Що входить в реалізацію підрахунку об'єктів

  • Аналіз сценарію — оцінка щільності, типів об'єктів, умов зйомки (освітлення, статика/рух).
  • Вибір моделі — навчання/донавчання YOLOv8, CSRNet або кастомної архітектури.
  • Інтеграція — підключення Vision (iOS) / TFLite (Android), реалізація пайплайну детекції → NMS → трекінг.
  • UI лічильника — відображення поточної та загальної кількості, анімація, звукове оповіщення.
  • Оптимізація — квантизація, GPU delegate, кешування дескрипторів.
  • Документація та підтримка — передача вихідних кодів, опис API, навчання команди.

Гарантуємо точність підрахунку 90-97% залежно від умов (перевірено на 10+ проєктах для складів та аграрного моніторингу). Зв'яжіться з нами для оцінки вашого сценарію — визначимо стратегію та терміни за 1-2 дні.

Процес впровадження підрахунку об'єктів

  1. Аналітика — ви надсилаєте відео або опис завдання. Ми підбираємо архітектуру.
  2. Прототип — за 3-5 днів робимо працюючий демо-збірки під iOS та Android.
  3. Інтеграція — вбудовуємо модуль у ваш додаток, налаштовуємо пайплайн.
  4. Тест — проводимо заміри точності на ваших даних, при необхідності донавчаємо модель.
  5. Деплой — публікація в App Store / Google Play, моніторинг у production.

Терміни: від 5 днів до 2 тижнів залежно від складності. Точну вартість розраховуємо індивідуально після аналізу завдання. Замовте консультацію — ми проаналізуємо вашу задачу та запропонуємо оптимальну стратегію.

Типові помилки при впровадженні AI-підрахунку
  • Використання detection-based методів при високій щільності без адаптації — точність падає до 50%.
  • Ігнорування трекінгу при русі камери — double counting до 40% надлишкового підрахунку.
  • Нехтування освітленням: моделі, навчені на рівномірному світлі, дають збій на відблисках та тінях.
  • Відсутність квантизації моделі — FPS нижче 5 на пристроях без GPU.