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.postprocessing—fomo_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_postprocess(сthreshold,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.
ВМ с computed-goto — включена на STM32 и nRF для ускорения интерпретатора.
Исправления ошибок¶
Камера и датчики:
Исправлен расчёт PCLK/экспозиции для OV5640 (две полосы MIPI, исправленная таблица делителей).
Вариант MT9V0xx с Bayer-CFA теперь принимает RGB565/BAYER/GRAYSCALE и выводит корректные необработанные данные Bayer вместо ошибки.
Включена коррекция виньетирования объектива для PAG7936 и исправлен сдвиг HD-изображения;
set_framerate()теперь ограничивается для каждого разрешения.Исправлен тепловизионный захват FLIR Lepton на i.MX RT1060 (исправлены VoSPI CPOL/CPHA), и снимки Lepton теперь возвращают конкретные коды ошибок.
Исправлено округление частоты GenX320.
Обработка изображений:
Исправлено повреждение памяти в
to_ndarray()для изображений в оттенках серого.Исправлено предсказание границ дебайеризации при преобразовании Bayer→RGB/оттенки серого.
Исправлен
transposeвdraw_image()на платах без SDRAM (буфер с разбиением на части).Исправлена обработка булевых аргументов в
Image.binary()и флагаload_to_fbклассаml.Model.
Система:
Исправлена конфигурация выводов SPI только для приёма / только для передачи на STM32 и i.MX RT.
Буферы DMA Ethernet на Portenta H7 перемещены в SRAM3, чтобы Ethernet работал.
Исправлена потеря символа в текстовом выводе отладочного канала через USB; размеры динамического выделения памяти для ML округляются вверх во избежание недостаточного размера буферов модели.
Поддержка оборудования и плат¶
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. Примечание: переименование модуля sensor → csi в этом выпуске не является обратно несовместимым — 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_MODE → IOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGE → IOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATURE → IOCTL_LEPTON_GET_FPA_TEMP. Прилагаемые примеры были обновлены.
Коммит: 12582d54d
Изменения в API постобработки ML (minor)¶
ml.postprocessing появился в этом выпуске, и его API менялся в процессе: ключевое слово конструктора score_threshold для yolo_v2_postprocess переименовано в 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.
Загрузчик, удалённые платы и функции (tooling)¶
Устаревший CDC-загрузчик заменён новым стандартным DFU-загрузчиком на базе TinyUSB на всех платах — механизм обновления прошивки изменился; соответствующим образом обновите свой рабочий процесс/инструменты прошивки. Плата OpenMV Pro, автономная сборка Raspberry Pi Pico и функция удалённой IDE через WiFi-отладку (wifidbg) были удалены.
Коммиты: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
Контрольный список миграции¶
Для чистого переноса на v4.6.0 обычно требуется:
Масштабировать каждое значение
alphaдля рисования/наложения из диапазона 0–256 в 0–255 (изменение диапазона alpha).Переименовать любые константы ioctl для FLIR Lepton в их укороченные формы (переименование ioctl Lepton).
Если вы использовали новые постобработчики ML, замените
score_thresholdнаthreshold, обработайте пустой результат()и обновите имя моделиyolo_v5_224_nano(изменения ML).Перепроверить конвейеры на основе
find_keypoints()с учётом смены детектора на AGAST (изменение детектора углов).Обновить рабочий процесс прошивки для нового загрузчика DFU (изменения загрузчика/плат).