Реалізація розпізнавання зображень у мобільному застосунку

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація розпізнавання зображень у мобільному застосунку
Середній
~1-2 тижні
Часті запитання

Чому розпізнавання зображень у застосунку гальмує та помиляється

Типовий збій виглядає так: кадр повністю йде мережею, чекає черги на сервері й повертається з відповіддю за кілька секунд. Користувач за цей час повторює зйомку або закриває екран — дублікати накопичуються в черзі, і час відповіді зростає ще більше.

Повільна обробка знімків майже завжди означає одне: розпізнавання зображень у мобільному застосунку виконується далеко від камери.

Кадр не готують на пристрої — не приводять до робочого розміру, не стискають і не відкидають явно непридатні знімки, тому мережею йде в рази більше даних, ніж потрібно моделі.

Другий клас проблем — помилки розпізнавання. Модель, навчена на усередненому наборі, впевнено розмічає схожі об’єкти, а поріг впевненості залишено за замовчуванням і не відкалібровано на ваших даних.

За поганого світла, під гострим кутом, з відблиском або змазом мітки починають плутатися між сусідніми класами.

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

Розбираємо, як це закривається — що рахувати прямо на пристрої, як готувати кадр до надсилання й чим калібрувати пороги на власному наборі.

Що змінюється після впровадження: точність, швидкість, відмови

До впровадження розпізнавання в мобільному застосунку працює «загалом»: об’єкт на знімку начебто знайдено, але на кадрах з відблиском, під кутом або за слабкого світла впевненість моделі падає, і сценарій іде на ручну правку.

За галузевими вимірами на розмічених наборах точність розпізнавання за основними класами піднімається з 80–85 до 92–97% — і тримається на потоці, а не лише на демонстраційній вибірці.

Ці самі дані наводяться в публічних прогонах MLPerf Mobile, тобто йдеться про відтворювану величину, а не про вдалий поодинокий експеримент.

Швидкість обробки знімка стає передбачуваною: відповідь по кадру надходить за 0,3–0,6 с прямо на пристрої, без очікування мережі.

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

Найсильніше змінюється частка ручних правок: там, де оператор доопрацьовував кожен четвертий-п’ятий кадр, залишаються одиниці відсотків — їх видно за журналом і можна розбирати точково.

Зникають цілі класи відмов: «не розпізнав», «розпізнав не той об’єкт», «відповідь не надійшла вчасно». Кожен із них раніше коштував повторного візиту або дзвінка клієнту.

Ми закладаємо контроль на вході: якщо впевненість нижче порога, застосунок просить добрати кадр, а не надсилає сумнівний результат на ручну обробку. Тому метрики не деградують зі зростанням навантаження.

Режими розпізнавання зображень: на пристрої чи на сервері

Вибір режиму — це не «краще чи гірше», а питання того, де припустимо виконувати обчислення й як часто змінюється модель. Обробка на пристрої дає відгук без мережі, але впирається в ресурси конкретного апарата й не дозволяє оновити модель без випуску нової версії застосунку. Хмарне розпізнавання знімає ці рамки, зате залежить від каналу й вимагає передавати кадри назовні.

Нижче — три режими в тому вигляді, в якому ми закладаємо їх в архітектуру.

Режим Коли підходить Обмеження
Обробка на пристрої Поле, склад, виробництво: зв’язок нестабільний, кадри чутливі й не повинні покидати апарат Клас задач обмежений ресурсами пристрою; зміна моделі = новий реліз застосунку
Хмарне розпізнавання Каталоги, документи, рідкісні класи: важливі точність і швидка зміна моделі Потрібен стабільний канал; затримка залежить від мережі; кадри йдуть на сторону
Гібридна схема Масові сценарії, де кадри сильно різняться за складністю Потрібна маршрутизація за впевненістю моделі та звірка результатів з двох сторін

Гібридна схема будується на первинному фільтрі: модель на пристрої закриває типові кадри, а спірні йдуть на сервер разом із ознаками, а не повністю.

Якщо зв’язок зник, кадри й мітки складаються в локальну чергу та догружаються після її відновлення — робота без зв’язку не призводить до втрати даних, а розбіжність відповідей двох сторін вирішується повторною перевіркою.

Етапи робіт: аудит даних, схема, налаштування, приймання

Порядок впровадження розпізнавання зображень визначається не вибором моделі, а якістю даних і тим, наскільки тестова вибірка збігається з реальними знімками користувачів. Спочатку ми розбираємо те, що вже є в замовника: умови зйомки, частка браку, розмітка, розподіл класів.

Лише після цього має сенс обговорювати схему й терміни — інакше висока точність на демонстраційних картинках нічого не каже про поведінку в застосунку.

  1. Аудит даних. Розбираємо архів знімків: обсяг, умови зйомки, розподіл класів, суперечності в розмітці. На виході — карта проблем і розуміння, яких прикладів бракує.
  2. Підготовка вибірки. Прибираємо дублікати й биті файли, доповнюємо рідкісні класи, фіксуємо відкладну частину вибірки, яка не бере участі в навчанні. Саме вона дає чесну оцінку результату.
  3. Схема рішення. Визначаємо, що рахується на пристрої, а що на сервері, як обробляється низька впевненість і що бачить користувач за невдалого розпізнавання.
  4. Налаштування й навчання. Дообучаємо модель на підготовлених даних і стежимо за точністю за кожним класом окремо, а не лише за усередненим показником.
  5. Інтеграція в застосунок. Вбудовуємо розпізнавання в користувацький сценарій, заміряємо час відгуку й вагу збірки, перевіряємо поведінку за слабкої мережі та на старих пристроях.
  6. Приймання на реальних умовах. Прогоняємо систему на свіжих знімках із живого потоку, звіряємо метрики з зафіксованими в схемі, розбираємо кожен клас помилок.
  7. Передача системи. Віддаємо конфігурації, скрипти підготовки даних, опис метрик і порядок дообучення на нових прикладах, щоб команда замовника могла розвивати рішення сама.

Набір постачання: схеми, політики доступу, регламенти розмітки

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

Тому постачання документації йде разом із кодом: кожен артефакт описує свою ланку — від зйомки на пристрої до запису результату у ваш контур.

  • Схема інтеграції — що рахується на пристрої, що йде на сервер, як поводиться застосунок за поганої мережі та де точки відмови.
  • Контракти й формати — структура запиту та відповіді, коди помилок, версіонування: оновлення моделі не ламає випущену збірку.
  • Політики доступу — ролі сервісів і людей, розділення середовищ, термін життя ключів і порядок ротації: доступ видається під задачу.
  • Регламент розмітки — таксономія класів, правила спірних кадрів, вимоги до якості знімка й порядок приймання партій: новий виконавець дає зіставний результат.
  • Налаштування обробки — поріг впевненості, передобробка кадру, поведінка за відмови та обмеження частоти викликів під піком.
  • Метрики й методика замірів — на якому наборі перевіряємо, як рахуємо точність і частку хибних спрацювань, за якого падіння запускається перенавчання.
  • Інструкції для команди — як викотити нову версію, як відкотитися, що дивитися в журналах за розбіжності відповідей.
  • Порядок передачі — хто що підтримує після запуску й як передаються доступи та дані за зміни підрядника.

Кейс: як скоротили ручну перевірку фотознімків в обліку

До впровадження приймання в «Товароучёт» трималося на людях: комірник фотографував кожну позицію, а оператор потім вручну звіряв знімок із накладною.

На партію з 300 позицій ішло 40–50 хвилин, і приблизно кожен десятий знімок містив помилку — переплутаний артикул, нечитабельна етикетка, зайвий кадр. Розбіжності спливали лише на інвентаризації, коли шукати їх доводилося по всій історії приймань.

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

Модель дообучали на розмічених знімках замовника — спочатку на кількох тисячах кадрів, потім раз на квартал, додаючи те, що оператори розмічали під час ручної перевірки. Спірні кадри не викидаються: вони стають матеріалом для наступного дообучення.

Метрики знімали на відкладеному наборі та на живому потоці приймань. Точність розпізнавання артикула за знімком зросла з 91% до 98,6%, повнота — до 97%, частка знімків, що пішли на ручну перевірку, упала з 100% до 7%.

Середній час приймання партії скоротився з 45 до 6 хвилин: оператор дивиться не все підряд, а лише конфліктні кадри.

Головний ефект автоматизації перевірки знімків — розбіжність видно в момент приймання, а не через тиждень.

Точність і повноту рахуємо не за середнім, а за кожним типом етикетки окремо: на м’ятих і блискучих наклейках значення нижчі, і поріг впевненості для них налаштовано суворіше.

Що робити, якщо вже розгорнуто сторонню систему обробки фото

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

Найдорожче коштує розмітка: вона збирається місяцями й найчастіше губиться за зміни підрядника. Дані в закритому форматі вивантажуємо у відкритий обмінний і фіксуємо контрольну вибірку — без неї не можна порівняти якість старої та нової моделі на тих самих кадрах.

Ваги переносимо через ONNX: обмінний формат відокремлює модель від середовища виконання, тому заміна оточення не вимагає перезбірки застосунку.

Варіант Коли підходить Обмеження
Залишити модель, замінити обв’язку Точність влаштовує, претензії до швидкості та зручності Залежність від закритого інтерфейсу підрядника зберігається
Часткова міграція Розмітка й ваги вивантажуються, застосунок уже в користувачів На час переходу підтримуємо два контури розпізнавання
Повна заміна Якість не дотягує, дані не віддають Розмітку збираємо заново, термін виходу помітно зростає

Ключовий ризик за зміни підрядника — не сама заміна, а втрата історії: якщо версії набору даних і метрики не фіксувалися, після перенесення нема чим довести, що стало не гірше.

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

Технічні сумніви: світло, ракурс, приватність даних

Зйомка з рук — головне джерело помилок: змазаний кадр, контрове світло, тінь від руки, нахил під кутом.

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

Приватність вирішується архітектурою, а не обіцянками.

За замовчуванням кадр обробляється на самому пристрої, на сервер іде лише результат розпізнавання; якщо за задачею потрібна передача зображення, воно знеособлюється, шифрується під час передачі та зберігається обмежений строк.

Що робити з шумними та темними знімками?

У конвеєр вбудовано локальну корекцію яскравості та шумозаглушення. За слабкого освітлення точність просідає до 70–80%, після передобробки повертається вище 90%; поріг впевненості налаштовується окремо, щоб розпізнавання не «мовчало» на темному кадрі.

Як розпізнавання поводиться за поганого ракурсу?

Модель дообучається на ракурсах із вашого сценарію — полиці під кутом, стелажі, зйомка зверху. В інтерфейс додається рамка кадру та індикатор готовності: знімок у явно неробочому положенні просто не робиться.

Як відсікаються хибні спрацювання?

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

Чи можна обробити кадр без надсилання на сервер?

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

Обговоримо задачу: що врахувати до старту робіт

Щоб повернутися з оцінкою проєкту розпізнавання, а не з широкою вилкою, потрібні ввідні з обох сторін. Оцінка тримається на трьох опорах: які об’єкти розпізнаємо, скільки і в якому вигляді даних є, де рахуємо — на пристрої чи на сервері. Частина відповідей у вас уже є, частину фіксуємо разом і перетворюємо на план робіт.

  • Сценарій і класи об’єктів. Що саме розпізнаємо — текст, документи, дефекти, маркування — і скільки класів. Схожі між собою класи вимагають більше даних і дообучення, помітно відмінні обходяться готовою моделлю.
  • Дані. Чи є архів фото й сканів, у якому він стані, чи розмічена вибірка. Різноманіття умов зйомки — світло, ракурс, фон, якість камер — прямо визначає обсяг робіт із підготовки та перевірки набору.
  • Де рахувати. На пристрої результат доступний без зв’язку й кадр не покидає телефон, на сервері вища точність і простіше оновлювати логіку. Вибір задає склад клієнтської частини та вимоги до каналу.
  • Вимоги до якості. Яку частку вірних спрацювань вважаємо достатньою і що критичніше: пропуск чи хибне спрацювання. Без цього не можна ні налаштувати пороги, ні прийняти результат.
  • Куди віддавати результат. Облікова система, склад, база заявок: у якому вигляді та за якою подією йде розпізнане, які є права доступу й журналювання.
  • Обмеження. Підтримувані платформи та версії системи, офлайн-режим, припустимий час відгуку, вимоги до зберігання персональних даних у кадрі.
  • Приймання й терміни. На якому наборі прикладів перевіряємо, хто погоджує етапи, чи є зовнішня дата випуску версії.

Опишіть задачу у вільній формі, навіть якщо частина пунктів поки відкрита. Повернемося з оцінкою, планом робіт і порядком етапів, а відсутні ввідні доберемо на розборі.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714