SenseCAP A1101で水道メーター数字認識モデルを訓練する
概要
このwikiでは、特定のアプリケーション用に独自のメーターモデルを訓練し、SenseCAP A1101に簡単にデプロイする方法を説明します。始めましょう!

ハードウェアの準備
- SenseCAP A1101 - LoRaWAN Vision AI Sensor
- USB Type-Cケーブル
- インターネット接続可能なWindows/ Linux/ Mac
ソフトウェアの準備
このwikiでは以下のソフトウェア技術を使用します
- Roboflow - アノテーション用
- SenseCraft Model Assistant - 訓練用
- TensorFlow Lite - 推論用

それでは、ソフトウェアをセットアップしましょう。Windows、Linux、Intel Macのソフトウェアセットアップは同じですが、M1/M2 Macは異なります。
**SenseCraft Model Assistantとは?**Seeed Studio SenseCraft Model Assistantは、組み込みAIに焦点を当てたオープンソースプロジェクトです。OpenMMLab の優秀なアルゴリズムを実世界のシナリオに最適化し、実装をよりユーザーフレンドリーにして、組み込みデバイスでより高速で正確な推論を実現しています。
Windows、Linux、Intel Mac
-
ステップ1. コンピューターにPythonがすでにインストールされていることを確認してください。インストールされていない場合は、このページにアクセスして最新バージョンのPythonをダウンロードしてインストールしてください
-
ステップ2. 以下の依存関係をインストールします
pip3 install libusb1
M1/ M2 Mac
- ステップ1. Homebrewをインストールします
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- ステップ2. condaをインストールします
brew install conda
- ステップ3. libusbをダウンロードします
wget https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.26-h1c322ee_100.tar.bz2
- ステップ4. libusbをインストールします
conda install libusb-1.0.26-h1c322ee_100.tar.bz2
1. 画像データの収集
- ステップ1. USB Type-CケーブルでSenseCAP A1101をPCに接続します

- ステップ2. ブートボタンをダブルクリックしてブートモードに入ります

この後、ファイルエクスプローラーにSENSECAPとして新しいストレージドライブが表示されます

- ステップ3. この.uf2ファイルをSENSECAPドライブにドラッグ&ドロップします
uf2のコピーがドライブに完了すると、ドライブが消えます。これは、uf2がモジュールに正常にアップロードされたことを意味します。
-
ステップ4. このPythonスクリプトをコピーして、PC上に新しく作成したcapture_images_script.pyという名前のファイルに貼り付けます
-
ステップ5. Pythonスクリプトを実行して画像キャプチャを開始します
python3 capture_images_script.py
デフォルトでは、300msごとに画像をキャプチャします。これを変更したい場合は、次の形式でスクリプトを実行できます
python3 capture_images_script.py --interval <time_in_ms>
例えば、1秒ごとに画像をキャプチャする場合
python3 capture_images_script.py --interval 1000
上記のスクリプトが実行されると、SenseCAP A1101は内蔵カメラから継続的に画像をキャプチャし、すべてをsave_imgという名前のフォルダに保存します

また、録画中にプレビューウィンドウが開きます。
十分な画像をキャプチャした後、ターミナルウィンドウをクリックして以下のキーの組み合わせを押してキャプチャプロセスを停止します
- Windows: Ctrl + Break
- Linux: Ctrl + Shift + \
- Mac: CMD + Shift + \
画像収集後のデバイスファームウェアの変更
データセット用の画像の録画が完了したら、SenseCAP A1101内のファームウェアを元に戻して、再び物体検出モデルを読み込んで検出できるようにする必要があります。手順を見ていきましょう。
-
ステップ1. 前述のようにSenseCAP A1101でブートモードに入ります
-
ステップ2. デバイスに応じてこの.uf2ファイルをSENSECAPドライブにドラッグ&ドロップします
uf2のコピーがドライブに完了すると、ドライブが消えます。これは、uf2がモジュールに正常にアップロードされたことを意味します。
2. RoboFlowでデータセットを生成する
Roboflowは、オンラインベースのアノテーションツールです。ここでは、録画したビデオ映像を直接Roboflowにインポートでき、一連の画像としてエクスポートされます。このツールは、データセットを「訓練、検証、テスト」に分散させるのに役立つため、非常に便利です。また、このツールでは、ラベル付け後にこれらの画像にさらなる処理を追加できます。さらに、ラベル付けされたデータセットをCOCO形式で簡単にエクスポートでき、これはまさに私たちが必要とするものです!
-
ステップ1. ここをクリックしてRoboflowアカウントにサインアップします
-
ステップ2. Create New Projectをクリックしてプロジェクトを開始します

- ステップ3. Project Nameを入力し、**License (CC BY 4.0)とProject type (Object Detection (Bounding Box))**をデフォルトのままにします。**What will your model predict?**列の下で、アノテーショングループ名を入力します。

- ステップ4. SenseCAP A1101でキャプチャした画像をドラッグ&ドロップします

- ステップ5. 画像が処理された後、Finish Uploadingをクリックします。画像がアップロードされるまで辛抱強く待ちます。

- ステップ6. 画像がアップロードされた後、Assign Imagesをクリックします

- ステップ7. 画像を選択し、数字の周りに長方形のボックスを描き、ラベルをdigitsとして選択し、ENTERを押します

- ステップ8. 残りの画像についても同じことを繰り返します

-
ステップ9. データセット内のすべての画像のアノテーションを続けます
-
ステップ10. ラベル付けが完了したら、Add images to Datasetをクリックします

- ステップ11. 次に、画像を「Train、Valid、Test」に分割します。データセットが多い場合は80/20、データセットが少ない場合は85/15にできます。「Train」は80未満にしないでください。

- ステップ12. Generate New Versionをクリックします

- ステップ13. 必要に応じてPreprocessingとAugmentationを追加できます。ここではResizeオプションを192x192に変更します

ここで画像サイズを192x192に変更するのは、訓練にそのサイズを使用し、訓練が高速になるためです。そうしないと、訓練プロセス中にすべての画像を192x192に変換する必要があり、より多くのCPUリソースを消費し、訓練プロセスが遅くなります。
- ステップ14. 次に、残りのデフォルト設定で進み、Generateをクリックします

- ステップ15. Exportをクリックし、FormatをCOCOとして選択し、show download codeを選択してContinueをクリックします

これにより、後でGoogle Colab訓練内で使用するコードスニペットが生成されます。このウィンドウをバックグラウンドで開いたままにしておいてください。

Google ColabでSenseCraft Model Assistantを使用した訓練
パブリックデータセットを選択した後、データセットを訓練する必要があります。ここでは、Google Colaboratory環境を使用してクラウドで訓練を実行します。さらに、Colab内でRoboflow APIを使用してデータセットを簡単にダウンロードします。
ここをクリックして、すでに準備されたGoogle Colabワークスペースを開き、ワークスペースに記載された手順に従って、コードセルを一つずつ実行してください。
注意: Google Colabでは、Step 4の下のコードセルで、上記で説明したようにRoboflowからコードスニペットを直接コピーできます
以下の内容を順を追って説明します:
- トレーニング環境のセットアップ
- データセットのダウンロード
- トレーニングの実行
- トレーニング済みモデルのダウンロード

3. トレーニング済みモデルをデプロイして推論を実行
次に、トレーニング終了時に取得したmodel-1.uf2をSenseCAP A1101に移動します。
-
ステップ 1. 最新版のGoogle ChromeまたはMicrosoft Edge ブラウザをインストールして開きます
-
ステップ 2. USB Type-CケーブルでSenseCAP A1101をPCに接続します

- ステップ 3. SenseCAP A1101のブートボタンをダブルクリックして、マスストレージモードに入ります

この後、ファイルエクスプローラーにSENSECAPという新しいストレージドライブが表示されます

- ステップ 4. model-1.uf2ファイルをSENSECAPドライブにドラッグ&ドロップします
uf2ファイルのドライブへのコピーが完了すると、ドライブが消えます。これは、uf2がモジュールに正常にアップロードされたことを意味します。
注意: 4つのモデルファイルが準備できている場合は、各モデルを一つずつドラッグ&ドロップできます。最初のモデルをドロップし、コピーが完了するまで待ち、再度ブートモードに入り、2番目のモデルをドロップするという手順を繰り返します。SenseCAP A1101に1つのモデル(インデックス1)のみをロードした場合、そのモデルがロードされます。
- ステップ 5. ここをクリックしてカメラストリームのプレビューウィンドウを開きます

- ステップ 6. Connectボタンをクリックします。ブラウザにポップアップが表示されます。SenseCAP Vision AI - Pairedを選択し、Connectをクリックします

- ステップ 7. プレビューウィンドウを使用してリアルタイム推論結果を確認します!

上記のように、数字がバウンディングボックスで囲まれて検出されています。
4. SenseCAP Mate上でSenseCAP A1101を使用した推論の実行
ブラウザでの推論実行に加えて、SenseCAP Mateを使用してモデル推論を実装することもできます。これを段階的に実装していきます。
-
ステップ 1. まず、erase_model.uf2を使用してA1101のファームウェアを消去する必要があります。その後、A1101ファームウェアを最新バージョンにアップグレードし、水道メーター数字認識モデルをA1101にドロップします
ファームウェア: erase_model.uf2、SenseCAP-A1101_v02-00.uf2
モデル: water_meter.uf2、pfld_meter.uf2、digital_meter.uf2
注意: water_meterとdigital_meterは両方ともデスクトップでuser-define6としてモデル名を識別し、APP側でdigital_meterと表示されます。pfld_meterによって識別されるモデル名はuser-define5で、APP側でPoint_meterと表示されます。ユーザーは展開プロセス中に実際の使用要件に応じてモデルをアップロードする必要があります
-
ステップ 2. ここをクリックしてカメラストリームのプレビューウィンドウを開きます
-
ステップ 3. Connectボタンをクリックします。ブラウザにポップアップが表示されます。SenseCAP A1101 - Pairedを選択し、Connectをクリックします

- ステップ 4(オプション). ModelでDigital Meterを選択し、AlgorithmでDigital Meterを選択し、Saveをクリックしてから、Invokeをクリックします。これで、プレビューウィンドウを使用してリアルタイム推論結果を確認できます。

- ステップ 5. SenseCAP Mateを開き、自分のA1101とペアリングし、上記と同じModelとAlgorithmを選択します。次に、Generalをクリックし、下部のDetectをクリックします。

- ステップ 6. 以下のように、AI Previewにデジタルメーター認識結果が表示されます。

上記の手順を完了した後、自分のA1101をデバイスに追加してみます。以下の4つの手順を通じて、SenseCAP Mateのようなクラウドプラットフォームを通じて、いつでもどこでもデバイス識別の結果データを確認できます。

リソース
-
[ウェブページ] SenseCraft Model Assistant ドキュメント
-
[ウェブページ] Ultralytics HUB
-
[ウェブページ] Roboflow ドキュメント
-
[ウェブページ] TensorFlow Lite ドキュメント
技術サポート & 製品ディスカッション
弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。