v4.7.0¶
v4.7.0 是一次以 NPU 和 ROMFS 为重点的大型版本,基于 Qt Creator 14.0.2 构建。它引入了设备端 ROM 文件系统工作流,集成了 ARM Ethos-U (Vela) 和 ST Edge AI 模型编译器,为 OpenMV N6 增加了基于 STM32CubeProgrammer 的工厂烧录功能,并在所有开发板上捆绑了 OpenMV 固件 4.7.0。请注意,现在将任何摄像头从 4.7.0 之前的固件升级,都会强制擦除 FAT 文件系统并重置 ROMFS,这会清除存储在设备内部闪存上的文件;详见下文 Breaking changes。
亮点¶
ROM 文件系统工作流 让你能够创建、编辑、烧录并重置设备端只读文件系统,从而可以将 ML 模型存储在摄像头上,并集成到 DFU、IMX、Bossac、Picotool 和 Arduino-DFU 引导加载程序中。(efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)
现已集成 ARM Ethos-U Vela 和 ST Edge AI 模型编译器,因此当
.tflite/.onnx模型被加载到 Ethos-U55 (OpenMV AE3) 或 Neural-ART (OpenMV N6) 开发板上时,会自动编译到 NPU。(411f708ea, 3064411ad)现已捆绑 STM32CubeProgrammer,可通过
FlashLayout.tsv对 OpenMV N6 (STM32N657) 引导加载程序进行工厂烧录。(334b04dbd, 54fea4d57, 28cc94a6e)模型库(Model Zoo)浏览器 新增了一个“按开发板类型筛选模型”复选框,它由新的
models/index.csv表驱动,可隐藏与所连接开发板不兼容的模型。(80adb2079)按扩展名进行 ROMFS 对齐:ROMFS 镜像编辑器现在会按字母顺序对文件排序,并使用来自
settings.json的字节对齐规则进行打包(例如.tflite模型对齐到 16 字节)。(e87b2bf06)捆绑固件更新至 4.7.0,覆盖所有 OpenMV 和 Arduino 开发板。(6d04b1b50, d0bbb1fe7, d7d3120b3)
新功能¶
ROM 文件系统子菜单(
New/Open/Edit ROMFS on OpenMV Cam/Reset ROMFS on OpenMV Cam)取代了旧的单一Edit ROM File System操作。(0bc275a0a, 958f732b5)打开模型库浏览器,具有持久化的已选模型状态和选择变更预览,并捆绑了 STMicroelectronics、Qualcomm、DeGirum、Edge Impulse 和 Google 的模型库。(58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)
Machine Vision Tools下的 Convert Model for NPU 菜单项可为开发板的 NPU 加速器编译 TensorFlow Lite (.tflite) 或 ONNX (.onnx) 模型(Ethos-U 的.tflite使用 Vela,N6 Neural-ART 的.tflite/.onnx使用 ST Edge AI),并将转换后的模型保存到磁盘或摄像头。(3913f5b8b)Copy/Convert Python File 工具可将 Python 脚本复制到摄像头或磁盘,并可选地通过
mpy-cross将其交叉编译为 MicroPython.mpy字节码;它位于Tools下新增的MicroPython Tools子菜单中。(e9d7fa143, 47188c0e3)为 OpenMV 串口终端和
General Messages输出窗格添加了 Wrap Text 切换按钮;两者都会对输出进行自动换行,并在会话之间持久保存该设置。(8c052845a, 51d3e1ad6)mpy-cross ROMFS 交叉编译 带有按开发板配置的架构标志(
armv7emsp/armv7emdp),可将 MicroPython 脚本冻结进 ROMFS 镜像。(8c71548df)固件引导加载程序对话框现在除了接受
*.bin和*.dfu外,还接受*.imgROMFS 文件,会按引导加载程序验证扩展名,并在加载*.img文件时禁用现有的Reset ROMFS file system复选框。(79f348b36)4.7.0 之前版本的升级现在会强制开启 FAT 擦除和 ROMFS 重置/更新复选框,并警告升级需要擦除 FAT 文件系统。(f6f3355b0)
其他更改和改进¶
将捆绑的 Qualcomm 模型库重新整理为基于任务的文件夹(
image_classification、object_detection、pose_estimation、semantic_segmentation、depth_estimation),移除了不受支持的大型模型(YOLOv7、YOLOv8、deeplabv3、mobilenet_v2),并添加了resnet18和densenet_121(具有更广泛的开发板兼容性),以及facemap_3dmm和FFNet_40S(仅限 AE3/N6)。(300ce2fc2)向捆绑的模型库添加了新的 Edge Impulse 模型供应商(FOMO 人脸检测模型)和新的 Google 模型(
micro_speech、mnist_lstm、person_detection),并为 ROMFS 编辑器右键菜单添加了View/Edit操作。(80adb2079)清理了模型库链接:添加了 Qualcomm
face_attrib_net模型(AE3/N6),移除了失效的 YOLO-NAS 条目,并修正了若干 STMicroelectronics 目标检测模型的开发板兼容性筛选。(fd639bda0)添加了更多模型标签,将某个模型的 NPU 加速器配置从
stai切换为stedgeai,并扩大了st_yolo_x的开发板兼容性筛选(现在除 AE3/N6 外,还包括 OPENMV_RT1060、OPENMV4P、ARDUINO_GIGA、PORTENTA_H7 和 NICLA_VISION)。(1515631ce)现在向 ROMFS 添加
.tflite模型时,如果该模型已经过 Ethos-U 编译,则会跳过 Vela/Ethos-U 编译(直接复制),并且该对话框的操作已从Add Model重命名为Model Zoo。(9c0b178fa)对于已为
NBIN格式的模型,ST Edge AI 编译会跳过转换。(3064411ad)Vela 编译器对话框现在会将模型报告的 SRAM 用量与每块开发板配置的堆大小进行对比,并显示百分比,当模型超过可用堆的 90% 或 100% 时给出警告/错误。(7140fc2aa)
Vela 编译器现在会报告清晰的“not supported on this platform”错误,而不是静默失败,并且将模型拖入模型库不再需要存在 Vela。(c736dd54d, 0ad7fd705)
Vela Ethos-U 编译器现在通过捆绑的嵌入式 Python 运行时(
python -m ethosu.vela)运行,而不是独立的二进制文件。(52f9b8820)长时间运行的 ST Edge AI 和 Vela 模型编译对话框现在会显示“This command takes a while to execute. Please be patient.”提示。(fc9ac2ab5)
现在在 PAG7936 (N6/AE3) 和 PS5520 传感器上打开示例或新建脚本时,会自动将
sensor.set_framesize(QVGA)提升为VGA,以适配这些更高分辨率的传感器。(dfc27dd25)为 FLIR Boson 320/640 热成像摄像头、PixArt PAG7920/PAJ6100、FROGEYE2020 以及 Prophesee GENX320 事件摄像头添加了示例脚本的自动修正。(1f54ad01b)
可下载的 IDE 资源(固件/模型/文档)现在通过新的
ICore::allUsersResourcePath()API 安装到所有用户共享的应用数据目录,资源版本清单存储在所有用户资源文件夹上一级目录的OpenMVIDE.json文件中。(be308ace2, 7c7dddb87)在 Alif 系统包固件更新期间,IDE 现在会提示用户在继续之前对摄像头进行电源重启(断开并重新连接)。(162d128f9, 756611696)
重新设计了 Alif (Ensemble) 引导加载程序/固件下载流程,使其兼容 ROMFS:它会在写入引导加载程序后生成 App TOC,将 bin/sign 镜像复制到
images/子文件夹中,并烧录firmware_pad.toc。(f623c9231)简化了固件选择器中的开发板显示名称,去掉了冗余的括号内芯片型号后缀和“Legacy”标签(例如“OpenMV Cam H7 (STM32H743)”变为“OpenMV Cam H7”)。(334b04dbd)
为清晰起见,重命名了两个 Tools 菜单操作:
Run Bootloader (Load Firmware)现在改为Load Custom Firmware,Erase Onboard Data Flash现在改为Erase Internal FAT File System(确认对话框现在指代摄像头的内部 FAT 文件系统)。(0bc275a0a)恢复了
Ctrl+Shift+L(Load Custom Firmware)和Ctrl+Shift+E(Erase Internal FAT File System)键盘快捷键,并将Preferences项移回了Edit菜单。(dabb6f7d9, b5daf59a6)在启动时禁用了自动 C/C++ 编译器和工具链自动检测,因为该 IDE 面向 MicroPython。(f42fcc8f2)
在
About对话框的合作伙伴部分添加了 Alif Semiconductor 合作伙伴徽标(浅色/深色)。(4878781bb)读取所连接开发板的固件时,现在可以在发出命令之前刷新陈旧的串口数据,从而提高固件/版本查询的可靠性。(c15a46f5b)
通过在 ROMFS 读取、写入和重置操作时强制重新连接/刷新,改进了 ROMFS 连接的可靠性。(f9bc83007)
错误修复¶
修复了模型/脚本保存对话框以及 ROMFS 添加文件/添加模型功能,使其使用简单文件后缀而不是完整后缀,从而避免在重命名名称中带点的文件时扩展名被破坏。(52c6820d2)
通过使用 64 位算术计算百分比,修复了大文件传输时 DFU 上传进度条溢出的问题。(4b91ff2ba)
通过对无效(非正数)闪存扇区范围进行闪存擦除和编程步骤的防护,并显示明确的错误而不是崩溃,修复了旧版 OpenMV 固件/引导加载程序的烧录问题,并修复了旧固件升级期间的 ROMFS 访问防护。(ae2cc15b4, 235dbdb10)
修复了串口开发板检测,使序列号反向筛选仅在端口验证期间应用(而非在连接期间),并为 i.MX 开发板添加了反向筛选,以排除引导加载模式的序列号。(ae2cc15b4)
修复了开发板类型持久化问题,使得手动选择开发板类型时不再覆盖先前保存的开发板映射。(c42d36001)
引导加载程序修复现在会将隐藏开发板的显示名称解析为其架构字符串,从而使重新连接/固件修复映射到正确的开发板。(a1de7a09c)
开发板检测现在以不区分大小写的方式匹配开发板架构字符串。(7a2e0e93f)
通过持久保留驱动器扫描线程并将驱动器扫描重试最多三次,修复了快速断开/重新连接时设备磁盘无法挂载的问题,并使驱动器扫描可靠地在扫描线程上运行。(455dbe967, 58c0e5456)
通过在 Rosetta 下运行时允许使用 ARM64 工具路径,修复了模型编译器(ST Edge AI 和 Vela)在 Intel Mac 上无法运行的问题。(32e309e86)
通过将所有捆绑的 Python
__pycache__路由到共享资源目录,并在受时间限制的 i.MX 引导加载程序连接之前预热 i.MXblhostpycache,修复了 Python 工具和语言服务器缓存问题,从而使烧录不再超时。(f64f3330f)修复了 Python 语言服务器(用于自动补全)使用的 MicroPython 头文件路径,使其从所有用户资源路径解析,并使所有用户资源路径查找在用户名筛选未找到任何结果时更加健壮。(5f2648565, fc1938818)
通过将本地文件路径转换为正确的
file://URL,修复了编译器选项对话框中失效的 ST Edge AI 文档链接。(3ac136444)修复了 Python 编辑器的自动缩进,使得在以冒号结尾的(电子)行之后,例如在
if/for/def头部之后,各行不再被错误地反缩进。(6555f44ba)修复了 ROMFS 目录记录对齐,使文件夹偏移量将目录名记录大小计入其中,并在解包/创建 ROMFS 和模型库文件时增加了文件间延迟,以确保创建时间戳各不相同。(9bf7e1d9e, d968a6e46)
通过以 64 位计算输出乘数,修复了 Vela 图优化器的 mean 转 depthwise-conv 转换中的整数溢出,并修复了 Vela 编译器对话框标题/输出中使用的 basename。(d217a46e9, 8376490eb)
修复了重新打开时模型库浏览器展开的文件夹和已选模型的恢复问题,并将该对话框切换为堆分配以避免 GUI 生命周期问题。(84a63ef4c)
修复了模型库另存为路径,使记住的目录存储为文件夹而不是完整文件名。(be877f7af)
保留了旧版用户资源路径而不是在启动时将其删除,从而避免当旧文件夹被锁定时出现“close any programs viewing OpenMV IDE data”错误。(775656775)
修复了 Windows 驱动安装脚本和 catalog/inf 文件,使 OpenMV DFU、dfuse、FTDI、Arduino、pybcdc 和 VCR 驱动能够可靠安装并正确报告成功码,强化了 dfuse/vcr DFU 驱动安装脚本,并重新签名了捆绑的 OpenMV DFU 驱动 catalog。(48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)
修复了 Linux 安装程序,使其通过发行版的
python3-usb包安装pyusb并添加build-essential,而不是运行pip install pyusb,并通过/etc/os-release检测操作系统。(c471ddc42, 4014a0ba5)Windows 安装程序现在启用了长路径支持,因此深度嵌套的 ST Edge AI 文件能够正确安装。(0b3ca6945)
平台和工具支持¶
Qt Creator 基础版本: 14.0.2。
捆绑的 OpenMV 固件: 在所有 OpenMV 和 Arduino 开发板(OPENMV2/3/4/4P/PT、RT1060、GIGA、Portenta H7、Nicla Vision、Nano 33 BLE/RP2040、AE3、N6)上更新至 4.7.0;固件已重新构建以支持 ROMFS(
romfs0.img)。(6d04b1b50, c44e33d70, a1de7a09c)OpenMV N6 ROMFS: 从 16MB 增加到 24MB,romfs 镜像移至 DFU 备用设置 3。(d0bbb1fe7, d7d3120b3)
OpenMV AE3 ROMFS: 从 16MB 增加到 24MB,并为所有开发板上捆绑的
.bin模型文件添加了 16/32 字节对齐规则。(746da8914)STM32CubeProgrammer (STM32_Programmer_CLI) 为 macOS、Linux 和 Windows 捆绑,包含完整的 STM32 设备数据库和用于 N6 工厂烧录的外部加载器;安装包已剔除未使用的外部加载器和按 MCU 划分的数据库文件以缩减体积。(334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)
ST Edge AI (stedgeai) 编译器 2.1.0 捆绑(Windows),用于 N6 Neural-ART NPU。(3064411ad)
ARM Ethos-U Vela 编译器 4.2.0(配 numpy 2.2.4)为 Linux x86-64、macOS(Apple 芯片)和 Windows 捆绑。Windows 捆绑包最初在 Vela 4.1.0 / numpy 2.2.3 时添加,后来升级到最终的 4.2.0 / numpy 2.2.4。(f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)
mpy-cross 1.25.0.post2 捆绑(macOS/Windows)。(8c71548df, 3ab42d58a)
Alif Security Toolkit: 更新至 v1.104.0(已签名的 setools 二进制文件和 v1.104.0 用户指南 PDF),用于基于 Alif Ensemble 的开发板。(43260719c, 75a58e61b)
添加了 OPENMV_AE3 (Alif Ensemble) NPU 配置,面向 ethos-u55-256 和 ethos-u55-128 加速器,采用 RTSS HP/HE SRAM/MRAM/OSPI 系统配置。(1f5fc546d, 411f708ea)
在引脚图选择器中为 OpenMV N6 和 AE3 摄像头(PAG7936 传感器)添加了引脚图,并新增了一个演示防闪烁滤波器配置的 Genx320 灰度事件摄像头示例。(60184bbc5, 6d04b1b50)
更新了 Arduino Nicla Vision USB PID 匹配,以在原有 PID (0x045F) 之外识别新的应用程序 PID (0x055F)。(91ce4007c)
更新了 NXP/blhost 安全引导加载程序的烧录参数,改用显式的 FCB 地址/长度和 MBR 磁盘大小,与最新的 spsdk 工具包保持一致。(16b66c3e2)
Windows 安装程序现在捆绑了专用的 STM32 DFU 引导加载程序驱动以及 Microsoft Visual C++ 2015+ 可再发行组件。(cdcd4a5a6, 0cdebfc4c, a02b1f21a)
从 IDE 中移除了捆绑的 DeGirum YOLOv5/YOLOv8 模型库。(26710be1c)
Breaking changes¶
v4.7.0 中面向用户可见的工作流和行为变更。脚本 API 没有破坏性变更,但请注意以下几点:
4.7.0 之前版本升级时擦除 FAT 文件系统。 现在将任何 OpenMV Cam 从 4.7.0 之前的固件升级时,会在固件更新期间强制擦除 FAT 文件系统并重置/更新 ROMFS(对话框复选框被强制开启且无法禁用),因此存储在设备内部闪存上的用户文件会在升级时被清除。(f6f3355b0)
移除了 UVC 固件和 Portenta H7 引导加载程序二进制文件。 移除了所有开发板的预构建 UVC 网络摄像头固件镜像(
uvc.bin/dfu/elf),并从捆绑包中移除了 Arduino Portenta H7 引导加载程序二进制文件;这些预构建镜像不再能从 IDE 烧录。(c44e33d70)资源目录重新定位。 可下载的 IDE 资源(固件、模型库、文档)现在安装到所有用户共享的应用数据目录,而不是按用户划分的资源路径,版本清单从 QSettings 移至存储在所有用户资源文件夹上一级目录的
OpenMVIDE.json文件中(带有向后兼容的 QSettings 镜像)。升级后首次运行时会触发资源重新下载。(be308ace2, 7c7dddb87)