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
- Step 3. Download 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
By default, it will capture an image every 300ms. If you want to change this, you can run the script in this format
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ワークスペースを開き、ワークスペースで説明されている手順を実行し、コードセルを1つずつ実行してください。
注意: Google Colab では、ステップ 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つのモデルファイルが準備できている場合は、各モデルを1つずつドラッグアンドドロップできます。最初のモデルをドロップし、コピーが完了するまで待ち、再度ブートモードに入り、2番目のモデルをドロップするという手順を繰り返します。SenseCAP A1101 に1つのモデル(インデックス1)のみをロードした場合、そのモデルがロードされます。
- ステップ 5. ここをクリック してカメラストリームのプレビューウィンドウを開きます

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

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

上記のように、数字がバウンディングボックスで囲まれて検出されています。
4. SenseCAP Mate で SenseCAP A1101 を使用して推論を実行する
ブラウザでの推論実行に加えて、SenseCAP Mate を使用してモデル推論を実装することもできます。これを段階的に実装していきます。
-
ステップ 1. まず、A1101 のファームウェアを消去する必要があります。これは erase_model.uf2 を使用して実現できます。その後、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 のようなクラウドプラットフォームを通じて、いつでもどこでもデバイス識別の結果データを確認できます。

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