v4.7.0¶
v4.7.0 は Qt Creator 14.0.2 をベースに構築された、NPU と ROMFS に重点を置いた大規模リリースです。統合された ARM Ethos-U (Vela) および ST Edge AI モデルコンパイラを備えたオンデバイスの ROM ファイルシステムワークフローを導入し、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 モデルコンパイラが統合され、Ethos-U55 (OpenMV AE3) または Neural-ART (OpenMV N6) ボードに
.tflite/.onnxモデルを読み込む際に、自動的に 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)Open Model Zoo ブラウザ: 選択したモデルの状態が永続化され、選択変更時のプレビューが表示されます。STMicroelectronics、Qualcomm、DeGirum、Edge Impulse、Google のモデルライブラリがバンドルされています。(58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)
Machine Vision Tools配下の Convert Model for NPU メニュー項目は、TensorFlow Lite (.tflite) または ONNX (.onnx) モデルをボードの NPU アクセラレータ向けにコンパイルし (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)Wrap Text 切り替えボタンが OpenMV シリアルターミナルと
General Messages出力ペインに追加されました。どちらも出力をワードラップし、セッションをまたいで設定を保持します。(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 モデル 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)新しい Edge Impulse モデルベンダー (FOMO 顔検出モデル) と新しい Google モデル (
micro_speech、mnist_lstm、person_detection) をバンドルのモデル zoo に追加し、ROMFS エディタのコンテキストメニューにView/Editアクションを追加しました。(80adb2079)モデル 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モデルを ROMFS に追加する際、モデルが既に Ethos-U 向けにコンパイル済みの場合は Vela/Ethos-U コンパイルをスキップ (単にコピー) するようになり、ダイアログのアクション名がAdd ModelからModel Zooに変更されました。(9c0b178fa)ST Edge AI コンパイルは、既に
NBINフォーマットになっているモデルの変換をスキップします。(3064411ad)Vela コンパイラダイアログは、モデルが報告する SRAM 使用量を各ボードに設定されたヒープサイズと照合して解析し、パーセンテージを表示します。モデルが利用可能なヒープの 90% または 100% を超えると警告/エラーを表示します。(7140fc2aa)
Vela コンパイラは、無音で失敗する代わりに明確な「not supported on this platform」エラーを報告するようになり、モデル 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 を介して全ユーザー共有のアプリケーションデータディレクトリにインストールされるようになり、リソースバージョンのマニフェストは全ユーザーリソースフォルダの 1 階層上の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 メニューの 2 つのアクション名を変更しました。
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)
Alif Semiconductor のパートナーロゴ (ライト/ダーク) を
Aboutダイアログのパートナーセクションに追加しました。(4878781bb)接続中のボードのファームウェアを読み取る際に、コマンド発行前に古いシリアルポートデータをフラッシュできるようになり、ファームウェア/バージョンクエリの信頼性が向上しました。(c15a46f5b)
ROMFS の読み取り、書き込み、リセット操作で再接続/更新を強制することで、ROMFS 接続の信頼性を向上させました。(f9bc83007)
バグ修正¶
モデル/スクリプトの保存ダイアログと ROMFS のファイル追加/モデル追加で、完全なサフィックスではなく単純なファイルサフィックスを使用するよう修正し、名前にドットを含むファイルの名前変更時に拡張子が壊れるのを防ぎました。(52c6820d2)
大きな転送時に DFU アップロードの進捗バーがオーバーフローする問題を、パーセンテージを 64 ビット演算で計算することで修正しました。(4b91ff2ba)
古い OpenMV ファームウェア/ブートローダーのフラッシュ処理を修正しました。フラッシュ消去とプログラムの各ステップを無効な (正でない) フラッシュセクタ範囲に対してガードし、クラッシュする代わりに明示的なエラーを表示するようにし、古いファームウェアのアップグレード中の ROMFS アクセスガードを修正しました。(ae2cc15b4, 235dbdb10)
シリアルポートのボード検出を修正し、シリアル番号の逆フィルタがポート検証中のみ (接続中ではなく) 適用されるようにし、i.MX ボード向けの逆フィルタを追加してブートローダーモードのシリアル番号を除外しました。(ae2cc15b4)
ボードタイプの永続化を修正し、手動でボードタイプを選択した際に、以前保存したボードマッピングが上書きされなくなりました。(c42d36001)
ブートローダー修復が、隠れたボードの表示名をそのアーキテクチャ文字列に解決するようになり、再接続/ファームウェア修復で正しいボードがマッピングされるようになりました。(a1de7a09c)
ボード検出がボードアーキテクチャ文字列を大文字小文字を区別せずに照合するようになりました。(7a2e0e93f)
ドライブスキャンスレッドを永続化し、ドライブスキャンを最大 3 回まで再試行することで、素早い切断/再接続時にデバイスディスクがマウントに失敗する問題を修正し、ドライブスキャンが確実にスキャンスレッド上で実行されるようにしました。(455dbe967, 58c0e5456)
Rosetta 上で実行する際に ARM64 ツールパスを許可することで、Intel Mac でモデルコンパイラ (ST Edge AI および Vela) の実行に失敗する問題を修正しました。(32e309e86)
バンドルされたすべての Python の
__pycache__を共有リソースディレクトリにルーティングし、時間制限のあるブートローダー接続の前に i.MX のblhostpycache を事前ウォームアップすることで、Python ツールと言語サーバーのキャッシュの問題を修正し、フラッシュがタイムアウトしなくなりました。(f64f3330f)Python 言語サーバー (オートコンプリート用) が使用する MicroPython ヘッダーパスを修正し、全ユーザーリソースパスから解決されるようにし、ユーザー名フィルタリングで何も見つからない場合でも全ユーザーリソースパスの検索がより堅牢になるようにしました。(5f2648565, fc1938818)
コンパイラオプションダイアログ内の壊れた ST Edge AI ドキュメントリンクを、ローカルファイルパスを適切な
file://URL に変換することで修正しました。(3ac136444)Python エディタの自動インデントを修正し、コロンで終わる (電気的な) 行 (例:
if/for/defヘッダーの後) で行が誤ってデデントされなくなりました。(6555f44ba)ROMFS ディレクトリレコードのアライメントを修正し、フォルダオフセットがディレクトリ名レコードのサイズを考慮するようにし、ROMFS およびモデル zoo ファイルの展開/作成時のファイル間遅延を増やして作成タイムスタンプが確実に区別されるようにしました。(9bf7e1d9e, d968a6e46)
Vela グラフオプティマイザの mean-to-depthwise-conv 変換における整数オーバーフローを、出力乗数を 64 ビットで計算することで修正し、Vela コンパイラダイアログのタイトル/出力で使用される basename を修正しました。(d217a46e9, 8376490eb)
再オープン時にモデル zoo ブラウザの展開済みフォルダと選択中のモデルが復元される処理を修正し、GUI のライフタイムの問題を回避するためダイアログをヒープ割り当てに切り替えました。(84a63ef4c)
Model Zoo の名前を付けて保存のパスを修正し、記憶されるディレクトリが完全なファイル名ではなくフォルダとして保存されるようにしました。(be877f7af)
起動時にレガシーユーザーリソースパスを削除する代わりに保持するようにし、古いフォルダがロックされている場合に「close any programs viewing OpenMV IDE data」エラーが発生するのを回避しました。(775656775)
Windows ドライバーインストーラスクリプトおよびカタログ/inf ファイルを修正し、OpenMV DFU、dfuse、FTDI、Arduino、pybcdc、VCR の各ドライバーが確実にインストールされ、成功コードを正しく報告するようにし、dfuse/vcr DFU ドライバーインストールスクリプトを堅牢化し、バンドルされた OpenMV DFU ドライバーカタログを再署名しました。(48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)
Linux インストーラを修正し、
pip install pyusbを実行する代わりにディストリビューションのpython3-usbパッケージ経由でpyusbをインストールしbuild-essentialを追加するようにし、/etc/os-release経由で OS を検出するようにしました。(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) が、完全な STM32 デバイスデータベースと N6 工場プログラミング用の外部ローダーとともに macOS、Linux、Windows 向けにバンドルされました。サイズを縮小するため、未使用の外部ローダーおよび MCU ごとのデータベースファイルがインストールから削減されました。(334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)
ST Edge AI (stedgeai) コンパイラ 2.1.0 が N6 Neural-ART NPU 向けに (Windows で) バンドルされました。(3064411ad)
ARM Ethos-U Vela コンパイラ 4.2.0 (numpy 2.2.4 付き) が Linux x86-64、macOS (Apple silicon)、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: Alif Ensemble ベースのボード向けに v1.104.0 に更新されました (署名済み setools バイナリと v1.104.0 ユーザーガイド PDF)。(43260719c, 75a58e61b)
ethos-u55-256 および ethos-u55-128 アクセラレータを対象とし、RTSS HP/HE の SRAM/MRAM/OSPI システム構成を備えた OPENMV_AE3 (Alif Ensemble) NPU 構成を追加しました。(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)
バンドルされていた DeGirum YOLOv5/YOLOv8 モデル zoo を IDE から削除しました。(26710be1c)
互換性に影響する変更¶
v4.7.0 におけるユーザーから見えるワークフローおよび動作の互換性破壊。スクリプト API の破壊はありませんが、以下に注意してください:
4.7.0 より前からのアップグレード時に FAT ファイルシステムが消去されます。 4.7.0 より前のファームウェアから OpenMV Cam をアップグレードすると、ファームウェア更新時に FAT ファイルシステムの消去と ROMFS のリセット/更新が強制的に実行される (ダイアログのチェックボックスが強制的にオンになり、無効化できない) ため、デバイスの内部フラッシュに保存されているユーザーファイルはアップグレード時に消去されます。(f6f3355b0)
UVC ファームウェアと Portenta H7 ブートローダーバイナリが削除されました。 プレビルドの UVC ウェブカメラファームウェアイメージ (
uvc.bin/dfu/elf) がすべてのボードで削除され、Arduino Portenta H7 ブートローダーバイナリがバンドルから削除されました。これらのプレビルドイメージは IDE からフラッシュできなくなりました。(c44e33d70)リソースディレクトリの再配置。 ダウンロード可能な IDE リソース (ファームウェア、モデル zoo、ドキュメント) は、ユーザーごとのリソースパスではなく全ユーザー共有のアプリケーションデータディレクトリにインストールされるようになり、バージョンマニフェストは QSettings から全ユーザーリソースフォルダの 1 階層上に保存される
OpenMVIDE.jsonファイルに移動しました (後方互換性のため QSettings へのミラーリングも行われます)。アップグレード後の初回実行時にリソースの再ダウンロードがトリガーされます。(be308ace2, 7c7dddb87)