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— 相機模組已更名為csi;sensor則保留為向後相容的別名(目前尚不需要修改程式碼)。全新
ml.postprocessing模組 —fomo_postprocess、yolo_v2_postprocess、yolo_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_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_GET_RGB_STATSioctl,回傳一個(R, Gb, Gr, B)通道統計元組。GenX320 偏壓預設集 — 全新的
IOCTL_GENX320_SET_BIASESioctl,提供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.py與README.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.Model的load_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。注意:本版本中 sensor → csi 的模組更名不是破壞性變更 — 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_MODE → IOCTL_LEPTON_SET_MODE、IOCTL_LEPTON_SET_MEASUREMENT_RANGE → IOCTL_LEPTON_SET_RANGE、IOCTL_LEPTON_GET_FPA_TEMPERATURE → IOCTL_LEPTON_GET_FPA_TEMP。隨附的範例已一併更新。
Commit: 12582d54d
ML 後處理 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。
Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST 為預設的角點偵測器 (behavior)¶
find_keypoints() 現在在所有板子上都使用 AGAST 而非 FAST 作為其預設的角點偵測器。關鍵點集合(以及因此產生的描述子比對)與先前的版本不同 — 請重新檢查已調校的關鍵點流程。IDE 影格緩衝區串流現在也已上限為 20 Hz,以減少 USB 負載。
開機載入程式、移除的板子與功能 (tooling)¶
舊版 CDC 開機載入程式已由全新的以 TinyUSB 為基礎的標準 DFU 開機載入程式取代於所有板子上 — 韌體更新機制已變更;請相應地更新你的燒錄工作流程/工具。OpenMV Pro 板、獨立的 Raspberry Pi Pico 組建,以及 WiFi 除錯(wifidbg)遠端 IDE 功能皆已移除。
Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
移植檢查清單¶
若要乾淨地移植到 v4.6.0,典型的工作如下:
將每個繪圖/疊加層的
alpha值從 0–256 範圍重新調整為 0–255(alpha 範圍變更)。將任何 FLIR Lepton ioctl 常數更名為其縮短後的形式(Lepton ioctl 更名)。
如果你使用了新的 ML 後處理器,請將
score_threshold改為threshold、處理()空結果,並更新yolo_v5_224_nano模型名稱(ML 變更)。針對 AGAST 偵測器變更,重新檢查以
find_keypoints()為基礎的流程(角點偵測器變更)。為新的 DFU 開機載入程式更新你的韌體燒錄工作流程(開機載入程式/板子變更)。