v4.6.0

v4.6.0 — це великий випуск нових можливостей. Головні нововведення: модуль камери перейменовано з sensor на csi (зі зворотньо сумісним псевдонімом sensor), новий модуль ml.postprocessing, підтримка подієвого датчика Prophesee GenX320, термальних камер PAG7936 та FLIR Boson, новий завантажувач DFU на базі TinyUSB, апаратне прискорення Nema GPU та MicroPython 1.24. Також змінено діапазон alpha для малювання — перегляньте несумісні зміни нижче.

Основні можливості

  • sensor тепер також csi — модуль камери перейменовано на csi; sensor залишається як зворотньо сумісний псевдонім (зміни коду наразі не потрібні).

  • Новий модуль ml.postprocessingfomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • Нові датчики — подієва камера Prophesee GenX320, PAG7936 та термальні камери FLIR Boson 320/640.

  • Новий завантажувач DFU — стандартний завантажувач DFU на базі TinyUSB замінює застарілий завантажувач CDC на всіх платах.

  • Nema GPU — апаратне прискорення 2D/векторної графіки на STM32.

  • MicroPython оновлено до версії 1.24.0.

  • Несумісна зміна: діапазон alpha для малювання змінено з 0–256 на 0–255 (дивіться зміну діапазону alpha).

Нові можливості

  • ml.postprocessing — новий модуль для декодування виходу моделі (МН): декодер FOMO (fomo_postprocess, find_blobs + NMS, настроюваний threshold) та yolo_v2_postprocess / yolo_v5_postprocessthreshold, anchors, nms_threshold, nms_sigma).

  • Візуалізація подієвих даних — нові методи Image.to_evt_dark() / Image.to_evt_light() та кольорові палітри PALETTE_EVT_DARK / PALETTE_EVT_LIGHT.

  • Візуалізація глибини — новий метод Image.to_depth() та кольорова палітра PALETTE_DEPTH (для плат з підтримкою ToF).

  • Інтроспекція датчика — новий ioctl IOCTL_GET_RGB_STATS, що повертає кортеж статистики каналів (R, Gb, Gr, B).

  • Попередні налаштування зміщень GenX320 — новий ioctl IOCTL_GENX320_SET_BIASES з попередніми налаштуваннями GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — нова функція для визначення того, чи активний інтерфейс налагодження USB.

  • Nema GPU — інтеграція драйвера NemaGFX/NemaVG для Cortex-M55 на STM32, з наскрізним апаратним прискоренням GPU для draw_image.

  • PAG7936 — додано кольорову тест-смугу, автоматичне регулювання витримки/підсилення, режим сну та режим MIPI.

Інші зміни та покращення

  • MicroPython оновлено до 1.24.0; ulab оновлено до 6.7.3 (додано keepdims).

  • Спільний завантажувальний скрипт — STM32 / i.MX RT / RP2 тепер використовують спільний _boot.py, який автоматично створює файлову систему на флеш-пам’яті/SD з типовим main.py та README.txt і звільняє тимчасові глобальні змінні при запуску.

  • Підготовка підтримки STM32N6 — базова підтримка STM32N6, драйвер XSPI, спільний драйвер MPU та підписування мікропрограми/завантажувача на STM32.

  • VM з обчислюваним goto — увімкнено на STM32 та nRF для прискорення інтерпретатора.

Виправлення помилок

Камера та датчики:

  • Виправлено розрахунок PCLK/витримки для OV5640 (два канали MIPI, виправлена таблиця дільника).

  • Варіант MT9V0xx з матрицею Байєра тепер приймає RGB565/BAYER/GRAYSCALE та виводить правильні сирі дані Байєра замість виникнення помилки.

  • Увімкнено корекцію виньєтування для PAG7936 та виправлено зміщення зображення в режимі HD; set_framerate() тепер обмежується відповідно до роздільної здатності.

  • Виправлено захоплення тепловізора FLIR Lepton на i.MX RT1060 (виправлено CPOL/CPHA для VoSPI), а знімки Lepton тепер повертають конкретні коди помилок.

  • Виправлено округлення частоти для GenX320.

Обробка зображень:

  • Виправлено пошкодження пам’яті в to_ndarray() для зображень у відтінках сірого.

  • Виправлено передбачення меж під час перетворення Байєр→RGB/відтінки сірого.

  • Виправлено transpose в draw_image() для плат без SDRAM (буферизований режим).

  • Виправлено обробку булевих аргументів у Image.binary() та прапорця load_to_fb класу ml.Model.

Система:

  • Виправлено конфігурацію вивода лише-RX / лише-TX для SPI на STM32 та i.MX RT.

  • Буфери DMA Ethernet для Portenta H7 переміщено до SRAM3, що забезпечує працездатність Ethernet.

  • Виправлено втрату символів при виведенні тексту через канал налагодження USB; розміри динамічного виділення пам’яті для МН округлено вгору, щоб уникнути занадто малих буферів моделі.

Підтримка апаратного забезпечення та плат

  • Подієвий датчик зору Prophesee GenX320 (STM32F7 + i.MX RT1060).

  • Датчик PAG7936 (з режимом MIPI).

  • Термальні камери FLIR Boson 320/640 (драйвер IDD 4).

  • Апаратне прискорення Nema GPU на STM32.

  • Підготовка підтримки STM32N6 — завантажувач/XSPI.

  • VL53L5CX — додано підтримку виводу увімкнення живлення.

Несумісні зміни API

Видимі користувачу зміни API між v4.5.9 та v4.6.0. Охоплення: C-модулі Python в modules/ та бібліотеки Python в scripts/libraries/.

Кожна зміна позначена своїм впливом:

  • major — більшість скриптів, що використовували це, потребують виправлень.

  • minor — вузький API; стосується лише скриптів, що використовували його.

  • behavior — той самий API, інші результати; перевірте налаштовані скрипти.

  • tooling — стосується лише прошивки / інструментів хоста / доступності плат.

Зміни згруповані за впливом у такому порядку. Якщо ви просто хочете перенести свій код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту веде до його diff на GitHub. Примітка: перейменування модуля sensorcsi в цьому випуску не є несумісною зміною — sensor досі працює як псевдонім.

Діапазон alpha для малювання тепер 0–255 (major)

Аргумент alpha функції draw_image() та кожного накладення, що його приймає (FIR, ToF, дисплей, TV, MJPEG, таблиці alpha), тепер використовує діапазон 0–255 замість 0–256. Скрипти, що передавали 256 для повної непрозорості або обчислювали alpha відносно 256, необхідно перерахувати для діапазону 0–255.

Коміт: 1f87b5bb6

Константи ioctl для FLIR Lepton перейменовано (minor)

Три константи ioctl для Lepton скорочено: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. Вбудовані приклади оновлено.

Коміт: 12582d54d

Зміни API постобробки МН (minor)

ml.postprocessing є новим у цьому випуску і його API змінювався протягом нього: аргумент конструктора yolo_v2_postprocess score_threshold перейменовано на threshold, а порожні результати постобробки тепер повертають () замість []. Вбудована модель yolov5_rgb_person перейменована на yolo_v5_224_nano. ml.apps.MicroSpeech тепер передає довільні **kwargs до audio.init() замість фіксованого gain_db=24.

Коміти: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST є стандартним детектором кутових точок (behavior)

find_keypoints() тепер використовує AGAST замість FAST як стандартний детектор кутових точок на всіх платах. Набори ключових точок (і відповідно збіги дескрипторів) відрізняються від попередніх випусків — перевірте налаштовані конвеєри на основі ключових точок. Потокова передача кадрового буфера в IDE тепер обмежена до 20 Гц для зниження навантаження на USB.

Коміти: da6bf6910, bc4e39246

Завантажувач, видалені плати та функції (tooling)

Застарілий завантажувач CDC замінено новим стандартним завантажувачем DFU на базі TinyUSB на всіх платах — механізм оновлення мікропрограми змінився; оновіть відповідно свій робочий процес/інструменти прошивки. Плату OpenMV Pro, окрему збірку Raspberry Pi Pico та функцію віддаленого IDE через WiFi (wifidbg) видалено.

Коміти: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

Контрольний список міграції

Для чистого переходу на v4.6.0 типова робота включає:

  1. Перерахувати всі значення alpha для малювання/накладення з діапазону 0–256 до 0–255 (зміна діапазону alpha).

  2. Перейменувати всі константи ioctl FLIR Lepton до їх скорочених форм (перейменування ioctl для Lepton).

  3. Якщо ви використовували нові постпроцесори МН, замініть score_threshold на threshold, обробляйте порожній результат () та оновіть назву моделі yolo_v5_224_nano (зміни МН).

  4. Перевірити конвеєри на основі find_keypoints() на зміну детектора на AGAST (зміна детектора кутових точок).

  5. Оновити робочий процес прошивки для нового завантажувача DFU (зміни завантажувача/плат).