v4.6.0

v4.6.0 是一個重大功能版本。重點包括:相機模組從 sensor 更名為 csi(並保留向後相容的 sensor 別名)、全新的 ml.postprocessing 模組、支援 Prophesee GenX320 事件感測器、PAG7936 與 FLIR Boson 熱像儀、全新的以 TinyUSB 為基礎的 DFU 開機載入程式、Nema GPU 加速,以及 MicroPython 1.24。此版本也變更了繪圖的 alpha 範圍,因此請閱讀下方的破壞性變更。

重點摘要

  • sensor 現在也是 csi — 相機模組已更名為 csisensor 則保留為向後相容的別名(目前尚不需要修改程式碼)。

  • 全新 ml.postprocessing 模組fomo_postprocessyolo_v2_postprocessyolo_v5_postprocess

  • 新感測器 — Prophesee GenX320 事件相機、PAG7936 與 FLIR Boson 320/640 熱像儀。

  • 全新 DFU 開機載入程式 — 以 TinyUSB 為基礎的標準 DFU 開機載入程式取代了所有板子上的舊版 CDC 開機載入程式。

  • Nema GPU — STM32 上的 2D/向量圖形加速。

  • MicroPython 更新至 1.24.0。

  • 破壞性變更: 繪圖的 alpha 範圍已從 0–256 變更為 0–255(請見 alpha 範圍變更)。

新功能

  • ml.postprocessing — 一個用於解碼模型輸出的全新模組:FOMO 解碼器(fomo_postprocessfind_blobs + NMS、可設定的 threshold),以及 yolo_v2_postprocess / yolo_v5_postprocess(具備 thresholdanchorsnms_thresholdnms_sigma)。

  • 事件相機視覺化 — 全新的 Image.to_evt_dark() / Image.to_evt_light() 方法,以及 PALETTE_EVT_DARK / PALETTE_EVT_LIGHT 色彩調色盤。

  • 深度視覺化 — 全新的 Image.to_depth() 方法,以及 PALETTE_DEPTH 色彩調色盤(支援 ToF 的板子)。

  • 感測器資訊查詢 — 全新的 IOCTL_GET_RGB_STATS ioctl,回傳一個 (R, Gb, Gr, B) 通道統計元組。

  • GenX320 偏壓預設集 — 全新的 IOCTL_GENX320_SET_BIASES ioctl,提供 GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED 預設集。

  • omv.debug_mode() — 一個用於查詢 USB 除錯介面是否啟用的全新函式。

  • Nema GPU — STM32 上的 Cortex-M55 NemaGFX/NemaVG 驅動程式整合,並針對 draw_image 提供就地 GPU 直通處理。

  • PAG7936 — 新增色條輸出、自動曝光/自動增益、睡眠與 MIPI 模式。

其他變更與改進

  • MicroPython 更新至 1.24.0;ulab 更新至 6.7.3(新增 keepdims)。

  • 共用開機指令碼 — STM32 / i.MX RT / RP2 現在共用一個 _boot.py,會自動建立快閃記憶體/SD 檔案系統,內含預設的 main.pyREADME.txt,並釋放暫時性的啟動全域變數。

  • STM32N6 基礎建設 — 基本的 STM32N6 支援、一個 XSPI 驅動程式、一個共用的 MPU 驅動程式,以及 STM32 上的韌體/開機載入程式簽章。

  • Computed-goto 虛擬機 — 在 STM32 與 nRF 上啟用以加速直譯器。

錯誤修正

相機與感測器:

  • 修正了 OV5640 的 PCLK/曝光計算(兩條 MIPI 通道,更正了分頻器表)。

  • MT9V0xx Bayer-CFA 變體現在可接受 RGB565/BAYER/GRAYSCALE,並輸出正確的原始 Bayer 資料,而不再產生錯誤。

  • 啟用了 PAG7936 鏡頭陰影校正並修正了 HD 影像偏移;set_framerate() 現在會依解析度設定上限。

  • 修正了 i.MX RT1060 上的 FLIR Lepton 熱影像擷取(更正了 VoSPI CPOL/CPHA),且 Lepton 快照現在會回傳特定的錯誤碼。

  • 修正了 GenX320 的頻率捨入問題。

影像處理:

  • 修正了灰階影像上 to_ndarray() 的記憶體損毀問題。

  • 修正了 Bayer→RGB/灰階轉換中的去馬賽克(debayer)邊界預測。

  • 修正了在無 SDRAM 的板子上 draw_image()transpose(分塊緩衝區)。

  • 修正了 Image.binary() 中布林引數的處理,以及 ml.Modelload_to_fb 旗標。

系統:

  • 修正了 STM32 與 i.MX RT 上的 SPI 僅接收/僅傳送接腳設定。

  • 將 Portenta H7 的乙太網路 DMA 緩衝區移至 SRAM3,使乙太網路得以運作。

  • 修正了 USB 上除錯通道文字輸出中遺漏字元的問題;將 ML 動態配置大小向上捨入,以避免模型緩衝區過小。

硬體與板子支援

  • Prophesee GenX320 事件型視覺感測器(STM32F7 + i.MX RT1060)。

  • PAG7936 感測器(具備 MIPI 模式)。

  • FLIR Boson 320/640 熱像儀(IDD 4 驅動程式)。

  • Nema GPU STM32 上的加速。

  • STM32N6 開機載入程式/XSPI 基礎建設。

  • VL53L5CX — 新增了電源致能接腳支援。

破壞性 API 變更

v4.5.9 與 v4.6.0 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 程式庫。

每項變更都標註了其影響程度:

  • major — 大多數使用到它的指令碼都需要修改。

  • minor — 範圍狹窄的 API;只影響使用到它的指令碼。

  • behavior — 相同的 API,但結果不同;請重新檢查已調校的指令碼。

  • tooling — 只影響燒錄/主機端工具/板子可用性。

變更會依該順序按影響程度分組。如果你只想移植你的程式碼,請直接跳至最後的 移植檢查清單。每個 commit 雜湊值都連結至其在 GitHub 上的 diff。注意:本版本中 sensorcsi 的模組更名不是破壞性變更 — sensor 仍可作為別名使用。

繪圖的 alpha 範圍現在為 0–255 (major)

draw_image()alpha 引數,以及所有接受該引數的疊加層(FIR、ToF、顯示器、TV、MJPEG、alpha 表)現在使用 0–255 範圍,而非 0–256。原本傳入 256 代表完全不透明,或以 256 為基準計算 alpha 的指令碼,必須重新調整為 0–255。

Commit: 1f87b5bb6

FLIR Lepton ioctl 常數已更名 (minor)

三個 Lepton ioctl 常數已縮短:IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODEIOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGEIOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP。隨附的範例已一併更新。

Commit: 12582d54d

ML 後處理 API 變動 (minor)

ml.postprocessing 是本版本中新增的,且其 API 在本版本期間有所調整:yolo_v2_postprocess 建構子的關鍵字 score_threshold 已更名為 threshold,且空的後處理結果現在會回傳 () 而非 []。隨附的模型 yolov5_rgb_person 已更名為 yolo_v5_224_nanoml.apps.MicroSpeech 現在會將任意的 **kwargs 轉發給 audio.init(),而非固定的 gain_db=24

Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST 為預設的角點偵測器 (behavior)

find_keypoints() 現在在所有板子上都使用 AGAST 而非 FAST 作為其預設的角點偵測器。關鍵點集合(以及因此產生的描述子比對)與先前的版本不同 — 請重新檢查已調校的關鍵點流程。IDE 影格緩衝區串流現在也已上限為 20 Hz,以減少 USB 負載。

Commits: da6bf6910, bc4e39246

開機載入程式、移除的板子與功能 (tooling)

舊版 CDC 開機載入程式已由全新的以 TinyUSB 為基礎的標準 DFU 開機載入程式取代於所有板子上 — 韌體更新機制已變更;請相應地更新你的燒錄工作流程/工具。OpenMV Pro 板、獨立的 Raspberry Pi Pico 組建,以及 WiFi 除錯(wifidbg)遠端 IDE 功能皆已移除。

Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

移植檢查清單

若要乾淨地移植到 v4.6.0,典型的工作如下:

  1. 將每個繪圖/疊加層的 alpha 值從 0–256 範圍重新調整為 0–255(alpha 範圍變更)。

  2. 將任何 FLIR Lepton ioctl 常數更名為其縮短後的形式(Lepton ioctl 更名)。

  3. 如果你使用了新的 ML 後處理器,請將 score_threshold 改為 threshold、處理 () 空結果,並更新 yolo_v5_224_nano 模型名稱(ML 變更)。

  4. 針對 AGAST 偵測器變更,重新檢查以 find_keypoints() 為基礎的流程(角點偵測器變更)。

  5. 為新的 DFU 開機載入程式更新你的韌體燒錄工作流程(開機載入程式/板子變更)。