Connect with us

Застосування штучного інтелекту до обробки відео в реальному часі: Основи та більше

Лідери думок

Застосування штучного інтелекту до обробки відео в реальному часі: Основи та більше

mm

Від Максима Татар’янця, інженера Data Science у компанії MobiDev.

Нічого нового немає в тому, що штучний інтелект (AI) використовується в обробці відео. Якщо ви подивитесь далі за обробку зображень – це один з найпоширеніших випадків використання AI. І так само, як і обробка зображень, обробка відео використовує встановлені техніки, такі як комп’ютерне бачення, розпізнавання об’єктів, машинне навчання та глибоке навчання, щоб поліпшити цей процес.

Чи використовуєте ви комп’ютерне бачення та NLP у редагуванні відео та генерації, розпізнаванні об’єктів у автоматичному тегуванні відеоконтенту, машинному навчанні для оптимізації аналізу відео з AI, або глибокому навчанні для прискорення обробки відео в реальному часі видалення фону, випадки використання продовжують зростати щоднем.

Продовжуйте читати, щоб дізнатися, який підхід ви можете використовувати при використанні AI в обробці відео.

Основи обробки відео в реальному часі

Розпочнімо з основ. Обробка відео в реальному часі – це важлива технологія в системах відеоспостереження, які використовують розпізнавання об’єктів та облич. Це також процес, який живить програмне забезпечення AI візуальної інспекції в промисловому секторі.

Як працює обробка відео? Обробка відео включає серію кроків, які включають декодування, обчислення та кодування. Ось, що вам потрібно знати:

  • Декодування: Процес, необхідний для перетворення відео з стиснутого файлу назад у його первинний формат.
  • Обчислення: Конкретна операція, виконана над первинним кадром відео.
  • Кодування: Процес перетворення обробленого кадру назад у його первинний стиснутий стан.

Тепер, мета будь-якої задачі обробки відео – завершити ці кроки якомога швидше та точно. Найлегші способи досягнення цього включають: паралельну роботу та оптимізацію алгоритму для швидкості. У простих термінах? Вам потрібно використовувати розділення файлів та архітектуру конвеєра.

Що таке розділення відеофайлів?

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

Ви можете вважати розділення відеофайлів формою віртуальної генерації файлів, а не генерації підфайлів.

Незважаючи на це, розділення відеофайлів не є найкращим варіантом для обробки відео в реальному часі. Чому саме? Цей процес робить важким паузу, відновлення та перемотування файлу під час його обробки.

Що таке архітектура конвеєра?

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

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

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

Декодування та кодування: пояснення

А що щодо декодування та кодування? Є два способи виконання цих процесів: програмне забезпечення та апаратне забезпечення.

Ви, можливо, вже знайомі з концепцією апаратного прискорення. Цей процес можливий завдяки декодерам та кодерам, встановленим у останніх графічних картах NVIDIA, а також ядрам CUDA.

Отже, які варіанти у вас є для апаратного прискорення процесів кодування та декодування? Ось деякі з популярних варіантів:

  • Зберіть OpenCV з підтримкою CUDA: Збірка OpenCV з підтримкою CUDA оптимізує декодування та будь-які розрахунки конвеєра, які використовують OpenCV. Імейте на увазі – вам потрібно буде написати їх на C++, оскільки Python-обгортка не підтримує це. Але в ситуаціях, які вимагають декодування та числових розрахунків з GPU без копіювання з пам’яті CPU, це все ще один з кращих варіантів.
  • Зберіть FFmpeg або GStreamer з підтримкою кодеків NVDEC/NVENC: Інший варіант – використовувати вбудований декодер та кодер NVIDIA, включені до спеціальних установок FFmpeg та Gstreamer. Однак ми рекомендуємо використовувати FFmpeg, якщо це можливо, оскільки це вимагає менше обслуговування. Крім того, більшість бібліотек працюють на основі FFmpeg, що означає, що ви автоматично покращите продуктивність бібліотеки, замінивши її.
  • Використайте фреймворк обробки відео NVIDIA: Останній варіант – використовувати Python-обгортку для декодування кадру безпосередньо у тензор PyTorch на GPU. Цей варіант усуває додаткове копіювання з CPU на GPU.

Виявлення та розмиття облич

Моделі розпізнавання об’єктів (SSD або RetinaFace) – популярний варіант для виконання виявлення облич. Ці рішення працюють над знаходженням людського обличчя у кадрі. І на основі нашого досвіду, ми схильні віддавати перевагу моделям відстежування облич Caffe та моделям розпізнавання об’єктів TensorFlow, оскільки вони давали найкращі результати. Крім того, обидва доступні за допомогою бібліотеки dnn модуля OpenCV.

Отже, що далі після виявлення обличчя? Далі, система на основі Python та OpenCV покаже рамки обмеження та впевненість у виявленні. Нарешті, алгоритм розмиття застосовується до обрізаних областей.

Як можна створити програмне забезпечення для обробки відео в реальному часі з AI?

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

Все ж таки, це не означає, що ви не можете використовувати ці інструменти для створення власного програмного забезпечення для обробки відео в реальному часі.

Ось короткий опис того, що вам потрібно зробити:

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

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

Maksym зацікавлений у здобутті нових знань та досвіду в галузі Data Science і Machine Learning. Він особливо цікавиться технологіями, заснованими на Deep Learning, та їх застосуванням у бізнес-кейсах.