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 瀏覽器 新增了「Filter models by board type」核取方塊,由全新的
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)開啟 Model Zoo 瀏覽器,具備持續保存的選定模型狀態與選取變更預覽,並隨附 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 model zoo 重新整理為以任務分類的資料夾(
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)在隨附的 model zoo 中新增了一個新的 Edge Impulse 模型供應商(FOMO 人臉偵測模型)與新的 Google 模型(
micro_speech、mnist_lstm、person_detection),並在 ROMFS 編輯器的右鍵選單中新增了View/Edit動作。 (80adb2079)整理了 model-zoo 連結:新增 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)若
.tflite模型已經過 Ethos-U 編譯,現在將其加入 ROMFS 時會略過 Vela/Ethos-U 編譯(僅進行複製),且該對話框動作已從Add Model更名為Model Zoo。 (9c0b178fa)對於已經是
NBIN格式的模型,ST Edge AI 編譯會略過轉換。 (3064411ad)Vela 編譯器對話框會解析模型回報的 SRAM 用量,並與各開發板設定的 heap 大小進行比對,顯示百分比,並在模型超過可用 heap 的 90% 或 100% 時顯示警告/錯誤。 (7140fc2aa)
Vela 編譯器現在會回報清楚的「not supported on this platform」錯誤,而非無聲失敗,且將模型放入 model zoo 時不再需要 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)由於 IDE 以 MicroPython 為目標,已停用啟動時自動偵測 C/C++ 編譯器與工具鏈的功能。 (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)
修正了模型編譯器(ST Edge AI 與 Vela)在 Intel Mac 上無法執行的問題,方法是在 Rosetta 下執行時允許使用 ARM64 工具路徑。 (32e309e86)
修正了 Python 工具與語言伺服器的快取問題,方法是將所有隨附 Python 的
__pycache__導向至共用資源目錄,並在受時間限制的 i.MX 開機載入程式連接之前預先暖機blhost的 pycache,使燒錄不再逾時。 (f64f3330f)修正了 Python 語言伺服器(用於自動完成)所使用的 MicroPython 標頭路徑,使其從全使用者資源路徑解析,並使全使用者資源路徑查找在使用者名稱篩選找不到任何結果時更為穩健。 (5f2648565, fc1938818)
透過將本機檔案路徑轉換為正確的
file://URL,修正了編譯器選項對話框中損壞的 ST Edge AI 文件連結。 (3ac136444)修正了 Python 編輯器的自動縮排,使在以冒號結尾(電氣)的行之後(例如
if/for/def標頭之後)的行不再被錯誤地反縮排。 (6555f44ba)修正了 ROMFS 目錄記錄的對齊,使資料夾偏移量將目錄名稱記錄的大小納入考量,並增加了解封裝/建立 ROMFS 與 model-zoo 檔案時的檔案間延遲,以確保建立時間戳記各不相同。 (9bf7e1d9e, d968a6e46)
透過以 64 位元計算輸出乘數,修正了 Vela 圖形最佳化器在 mean 轉 depthwise-conv 轉換中的整數溢位問題,並修正了 Vela 編譯器對話框標題/輸出中使用的基本檔名。 (d217a46e9, 8376490eb)
修正了重新開啟時還原 model zoo 瀏覽器展開資料夾與選定模型的問題,並將對話框切換為 heap 配置以避免 GUI 生命週期問題。 (84a63ef4c)
修正了 Model Zoo 另存新檔的路徑,使記住的目錄以資料夾而非完整檔名的形式儲存。 (be877f7af)
保留了舊版使用者資源路徑而非在啟動時將其刪除,避免在舊資料夾被鎖定時出現「close any programs viewing OpenMV IDE data」錯誤。 (775656775)
修正了 Windows 驅動程式安裝指令碼以及 catalog/inf 檔案,使 OpenMV DFU、dfuse、FTDI、Arduino、pybcdc 與 VCR 驅動程式能可靠安裝並正確回報成功代碼,強化了 dfuse/vcr DFU 驅動程式安裝指令碼,並重新簽署了隨附的 OpenMV DFU 驅動程式目錄。 (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 alt-setting 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)
為 N6 Neural-ART NPU 隨附了 ST Edge AI (stedgeai) 編譯器 2.1.0(Windows)。 (3064411ad)
為 Linux x86-64、macOS(Apple silicon)與 Windows 隨附了 ARM Ethos-U Vela 編譯器 4.2.0(搭配 numpy 2.2.4)。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: 為 Alif Ensemble 系列開發板更新至 v1.104.0(已簽署的 setools 二進位檔與 v1.104.0 使用者指南 PDF)。 (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(0x055F)以及原本的(0x045F)。 (91ce4007c)
更新了 NXP/blhost 安全開機載入程式的燒錄參數,使其使用明確的 FCB 位址/長度與 MBR 磁碟大小,以配合最新的 spsdk 工具包。 (16b66c3e2)
Windows 安裝程式現在會隨附專用的 STM32 DFU 開機載入程式驅動程式與 Microsoft Visual C++ 2015+ 可轉散發套件。 (cdcd4a5a6, 0cdebfc4c, a02b1f21a)
從 IDE 移除了隨附的 DeGirum YOLOv5/YOLOv8 model zoo。 (26710be1c)
破壞性變更¶
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 資源(韌體、model zoo、文件)現在會安裝至共用的全使用者應用程式資料目錄,而非各使用者的資源路徑,版本資訊清單也從 QSettings 移至儲存在全使用者資源資料夾上一層的
OpenMVIDE.json檔案中(具備向後相容的 QSettings 鏡像)。升級後首次執行時會觸發資源的重新下載。 (be308ace2, 7c7dddb87)