Підрахунок об'єктів на зображенні і відео: відеоаналітика за допомогою нейронних мереж
Системи відеоаналітики - це програми, що дозволяють проаналізувати відеопотік або зображення та зробити наступні висновки: підрахунок об'єктів на зображенні, параметри об'єктів, їхня поведінка (траєкторія, характер руху і т. ін.)
#Машинне навчання #Нейронні мережі #Розпізнавання образів
Системи відеоаналітики - це програми, що дозволяють проаналізувати відеопотік або зображення та зробити наступні висновки: підрахунок об'єктів на зображенні, параметри об'єктів, їхня поведінка (траєкторія, характер руху і т. ін.)
https://github.com/ahmetozlu/tensorflow_object_counting_api/blob/master/README.md
Ось деякі вимоги, що найчастіше ставляться до програми відеоаналітики:
- Виявляти тільки цільові об'єкти, ігнорувати ті, аналітика яких вам не потрібна.
- Порахувати кількість цільових об'єктів.
- Визначити колір цільових об'єктів.
- Визначити швидкість цільових об'єктів.
- Експортувати результат відеоаналітики до файлу .csv або в базу даних як звіт про аналіз.
- Зберегти виявлені об'єкти як зображення в файли або на віддалений сервер.
- Мати базу готових моделей та використовувати нові моделі, що будуть донавчатися для виявлення специфічних кейсів, нових об'єктів тощо.
- Показати результати виявлення і підрахунку в режимі реального часу (для демонстрації).
- Обробляти з однаковим успіхом зображення або відео залежно від вимог.
Як працює система відеоаналітики?
У програмі відеоаналітики вихідне відео читається кадр за кадром. Кожен кадр обробляється нейронною мережею. Це цикл, що продовжує працювати до кінця відео. Загальний принцип роботи системи відеоаналітики зображений на ілюстрації нижче:
Для визначення об'єктів використовуються моделі на базі нейронних мереж типу CNN (convolutional neural network, згорткові нейронні мережі, про них читайте тут ) і SSD (Single Shot MultiBox Detector)
Підхід SSD було опубліковано наприкінці листопада 2016 року, і це призвело до нового рекорду з погляду продуктивності і точності для задач виявлення об'єктів.
У назві "Single Shot MultiBox Detector":
У такий спосіб ми можемо класифікувати за 1 прохід декілька різних об'єктів та на одному кадрі виявляти і людей, і тварин, і транспорт тощо. Програма підрахунку об'єктів на відео, наприклад, може рахувати різні типи об'єктів і враховувати їхнє перебування в певній зоні.
Нейронна мережа також здатна "супроводжувати" об'єкти, отже, визначивши на одному з кадрів машину як Car_001, вона буде Car_001 і на інших кадрах; таким чином ви будете розуміти, що це одна і та сама машина, а не щоразу нова.
https://github.com/ahmetozlu/tensorflow_object_counting_api/blob/master/README.md
Крім згаданих нейронних мереж архітектур CNN або SSD для відеоаналітики застосовуються ще інші моделі, залежно від поставленої задачі.
- Single Shot означає, що задачі локалізації та класифікації об'єктів виконуються за один прохід мережі.
- MultiBox - так називається методика пошуку обмежувального прямокутника.
- Detector - нейронна мережа працює як класифікатор (детектор) об'єктів.
Системи відеоаналітики реального часу
Нейронні мережі на основі SSD-підходу цікаві ще й тим, що дозволяють використовувати мініатюрні й мобільні пристрої для відеоаналітики в реальному часі.
У статті про "залізо" для нейронних мереж ми писали про TPU типу Google Coral - отже, за допомогою таких систем підрахунок і класифікація об'єктів в реальному часі можливі й доступні без використання великих стаціонарних робочих станцій чи GPU-серверів. Це особливо цікаво для кейсів інтерактивної і креативної реклами, де на indoor або outdoor конструкції встановлюється пристрій, що обробляє відео та дозволяє рекламі взаємодіяти з користувачем.
Якщо вам цікава розробка ПЗ для відеоаналізу або ви хочете використовувати відеоаналітику як частину іншого програмного продукту, звертайтеся до нас : допоможемо зрозуміти, які саме системи потрібні для вашого бізнесу, підкажемо кращі сучасні можливості, щоб рішення приносили більше прибутку за менших витрат.