v3.0.0¶
v3.0.0 はメジャーな v2 → v3 リリースです。OpenMV Cam M7(STM32F7)と新しい nn CMSIS-NN ニューラルネットワークモジュール(旧来のハードコードされた find_number() / classify_object() メソッドを置き換え)を導入し、MT9V034 グローバルシャッター と FLIR Lepton センサーのサポート、sensor.WVGA フレームサイズを追加し、コアを MicroPython 1.9.4 に更新しました。いくつかの image / sensor / WiFi の動作が変更されました。以下の破壊的変更をお読みください。
ハイライト¶
OpenMV Cam M7 — 新しい STM32F7 ボード。
nnモジュール — CMSIS-NN 推論:nn.load()、Net.forward()、Net.search()。モデルコンバータと例が含まれます。新しいセンサー — MT9V034 グローバルシャッター(FSIN トリガー)と FLIR Lepton。
MicroPython 1.9.4 コア更新。
破壊的変更: ハードコードされた
image.find_number()/image.classify_object()が削除され、sensor.sleep()は例外を送出するようになり、WINC ソケットは実際のバイト数を返すようになり、image.binary()は新しい画像を返すようになり、find_apriltags()は 64K ピクセルに上限が設けられました。破壊的変更を参照してください。
新機能¶
nn— 新しい CMSIS-NN ニューラルネットワークモジュール:nn.load(path)、Net.forward(img, roi=, softmax=, dry_run=)(0.0〜1.0 の浮動小数点数を返す)、マルチスケール/位置検出のためのNet.search()、およびNet.test()。加えて CMSIS-NN モデルコンバータ(nn_convert.py/nn_quantizer.py)、バンドルされた CIFAR-10 / LeNet / スマイルモデル、NN / NN 検索のサンプルスクリプトが含まれます。センサー — OpenMV 4 での MT9V034 グローバルシャッターサポート(FSIN トリガーのスナップショット)、Lepton スナップショットを備えた更新済み FLIR Lepton ドライバ、および新しい
sensor.WVGA(720x480)/sensor.WVGA2(752x480)フレームサイズ。イメージング —
image.find_circles()にr_min/r_max/r_stepキーワードが追加され(より高速な Hough)、find_keypoints()と Haar のfind_features()が RGB 画像を受け付けるようになり、image.compress()/ JPEG エンコードがバイナリ(ビットマップ)画像をサポートするようになりました。ブート —
boot.pyが USB の初期化前に実行されるようになり、USB モード(例: HID)をオーバーライドできるようになりました。例 — 小型/高解像度の AprilTag の例、I2C LIDAR-Lite V3 の例、およびデータセットツール(
augment_images.py/make_patches.py)を追加しました。
その他の変更と改善¶
バンドルされた MicroPython を 1.9.4 に更新(pyexec の parse/compile/exec のリバートと PendSV の修正を含む)、
fb_alloc/xallocのメモリ不足エラーメッセージをより明確化、ネットワーク読み込み中のnnの printf ノイズを抑制、リポジトリを再編成(examples →scripts/、tools →tools/、Haar カスケード →ml/)しました。nnモジュールは OpenMV 2 では利用できません(フラッシュ容量が不足)。
バグ修正¶
イメージング:
x≤0 における
fast_atan2fを修正(以前は常に 0 でした。ブロブ/ライン/キーポイントの角度を再確認してください)、find_apriltags()のメモリ処理(OOM 時の内容破棄と不正な realloc)、バイナリ/ビットマップの bpp ごとの行ポインタ(バイナリ結果の破損)、ROI 付きのfind_edges(EDGE_CANNY)、TO_GS_PIXELマクロ(積分/モルフォロジー)、グレースケール(bpp==0)フレームのビットマップ/JPEG ストリーミング、キーポイント/ブロブリストのpop_front、およびmatch_descriptorの結果を修正しました。
システムとカメラ:
USB HID のインターフェース/エンドポイント番号、実行時の XCLK 周波数の動的変更、正しい数の出力を返す
Net.forward()、およびスクリプト解析を中断した際のハードフォルトを修正しました。
ハードウェアとボードのサポート¶
OpenMV Cam M7(STM32F7) — 新しいボード。
MT9V034 グローバルシャッターセンサー(OpenMV 4、FSIN トリガー)。
FLIR Lepton — スナップショットサポート付きの更新済みドライバ。
破壊的な API 変更¶
v2.9.0 から v3.0.0 までのユーザーに見える API の破壊的変更。範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。
各変更には影響度のタグが付けられています:
major — その機能を使用していたほとんどのスクリプトに影響します。コードの移植が必要になります。
minor — 限定的な API。それを使用していたスクリプトにのみ影響します。
behavior — 同じ API ですが結果が異なります。チューニング済みのスクリプトを再確認してください。
変更はその順序で影響度ごとにグループ化されています。コードを移植したいだけの場合は、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分へリンクしています。
image.find_number() / image.classify_object() を削除 (major)¶
ハードコードされた image.find_number()(LeNet)および image.classify_object()(CMSIS CNN)メソッドは、新しい nn モジュールに置き換えられて削除されました。これらを net = nn.load('/model.network'); out = net.forward(img) に置き換えてください。
コミット: d151f7e38
sensor.sleep() / sensor.reset() が失敗時に例外を送出 (minor)¶
sensor.sleep() と sensor.reset() は、失敗時に True / False を返す代わりに例外を送出するようになりました。sensor.sleep() のブール戻り値をチェックしていたコードは、代わりに呼び出しを try / except でラップする必要があります。
コミット: 7d16d008f
WINC ソケットが実際のバイト数を返す (behavior)¶
WINC1500 ソケットの send / recv / sendto / recvfrom メソッドは、以前は常に 0 を返していましたが、実際に転送されたバイト数を返すようになりました。0 の戻り値を前提としていた(またはそれをループ/ブロックしていた)コードは、実際のカウントを処理する必要があります。
コミット: a07fb2f60
image.binary() が新しい画像を返す (behavior)¶
image.binary() に to_bitmap / copy キーワードが追加され、ソース画像をその場で返却/変更する代わりに、新しい画像オブジェクトを返すようになりました。binary() が元の画像を変更することに依存していたコードは、返されたオブジェクトを使用する必要があります(非インプレース動作のためには copy=True を渡してください)。
コミット: 8a44f0cd9
移行チェックリスト¶
v3.0.0 へのクリーンな移植のための一般的な作業は次のとおりです:
image.find_number()/image.classify_object()をnnモジュールに置き換える(nn への移行)。ブール戻り値をチェックする代わりに、
sensor.sleep()/sensor.reset()をtry/exceptでラップする(sensor.sleep の変更)。WINC ソケットの
send/recvからの実際のバイト数を処理する(WINC ソケットの変更)。インプレース変更を期待する代わりに、
image.binary()が返す画像を使用する(binary の変更)。64K ピクセル未満に保つために、
find_apriltags()の前に画像を縮小する(find_apriltags の上限)。
その他のすべてのスクリプトはそのまま動作します。