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 対応ボード)。センサーのイントロスペクション —
(R, Gb, Gr, B)チャンネル統計タプルを返す新しいIOCTL_GET_RGB_STATSioctl。GenX320 バイアスプリセット —
GENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEEDプリセットを備えた新しいIOCTL_GENX320_SET_BIASESioctl。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 は、デフォルトの
main.pyとREADME.txtを持つフラッシュ/SD ファイルシステムを自動作成し、起動時の一時グローバル変数を解放する_boot.pyを共有するようになりました。STM32N6 の基盤整備 — 基本的な STM32N6 サポート、XSPI ドライバー、共通 MPU ドライバー、および STM32 でのファームウェア/ブートローダー署名。
Computed-goto VM — インタープリタの高速化のため、STM32 と nRF で有効化されました。
バグ修正¶
カメラとセンサー:
OV5640 の PCLK/露出の計算を修正しました(2 つの 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 の RX 専用 / TX 専用のピン設定を修正しました。
Portenta H7 の Ethernet DMA バッファを 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 変更¶
v4.5.9 と v4.6.0 の間でユーザーから見える API の破壊的変更。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。
各変更には影響度のタグが付いています:
major — それを使用していたほとんどのスクリプトで編集が必要です。
minor — 限定的な API。それを使用していたスクリプトにのみ影響します。
behavior — 同じ API ですが結果が異なります。調整済みのスクリプトを再確認してください。
tooling — フラッシュ / ホストツール / ボードの可用性にのみ影響します。
変更はその順序で影響度ごとにグループ化されています。コードを移植したいだけの場合は、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の diff にリンクしています。注: このリリースでの sensor → csi モジュール名称変更は破壊的変更では ありません — sensor は引き続きエイリアスとして機能します。
描画の alpha の範囲が 0〜255 になりました (major)¶
draw_image() およびそれを受け取るすべてのオーバーレイ(FIR、ToF、ディスプレイ、TV、MJPEG、alpha テーブル)の alpha 引数は、0〜256 ではなく 0〜255 の範囲を使用するようになりました。完全に不透明にするために 256 を渡していたスクリプトや、256 を基準に alpha を計算していたスクリプトは、0〜255 に再スケーリングする必要があります。
Commit: 1f87b5bb6
FLIR Lepton の ioctl 定数の名称変更 (minor)¶
3 つの 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 は、固定の gain_db=24 の代わりに任意の **kwargs を audio.init() に転送するようになりました。
Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST がデフォルトのコーナー検出器になりました (behavior)¶
find_keypoints() は、すべてのボードでデフォルトのコーナー検出器として FAST の代わりに AGAST を使用するようになりました。キーポイントのセット(したがってディスクリプタのマッチング)は以前のリリースとは異なります — 調整済みのキーポイントパイプラインを再確認してください。IDE のフレームバッファストリーミングも、USB 負荷を軽減するために 20 Hz に上限が設定されるようになりました。
ブートローダー、削除されたボードと機能 (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 ブートローダーに合わせてファームウェアフラッシュのワークフローを更新します(ブートローダー/ボードの変更)。