Техно

ESP32-S3 обробляє відео в реальному часі за допомогою SIMD

Розробник shraiwi реалізував алгоритм машинного зору FAST на мікроконтролері ESP32-S3, використавши його набір SIMD-інструкцій. Для цього він написав код на асемблері й дослідив можливості цієї частини двоядерного мікроконтролера на архітектурі Xtensa LX7.

FAST (Features from Accelerated Segment Test) — алгоритм пошуку кутів на зображенні. Він дає змогу з достатньою точністю визначати в реальному часі, чи є такі точки у кадрі. Вони можуть вказувати на об’єкти та інші важливі для аналізу ознаки. Виявлення кутів є одним із завдань машинного зору, а машинне навчання може додатково підвищити точність розпізнавання. Пояснення алгоритму FAST доступне у Вікіпедії.

Пікселі, що використовуються алгоритмом FAST для виявлення кутів. Джерело: Wikipedia

Оптимізувати FAST для ESP32-S3 було непросто через обмеження його SIMD-набору інструкцій. Зокрема, в ньому немає інструкцій для порівняння беззнакових байтів, а також підтримки безпосереднього читання даних із невирівняних адрес. Щоб обійти ці обмеження, довелося застосувати нестандартні рішення в коді.

У підсумку ESP32-S3, що працює на частоті 240 МГц, обробляє відеопотік VGA у реальному часі зі швидкістю 30 кадрів за секунду. Це приблизно вдвічі швидше, ніж проста реалізація, яка використовує лише інструкції без SIMD.

Проєкт для PlatformIO опубліковано на GitHub.

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