データセットから XIAO ESP32S3 へのモデル展開
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
データセットから XIAO ESP32S3 へのモデル展開
この包括的なチュートリアルへようこそ。ここでは、データセットを完全に機能するモデルに変換し、XIAO ESP32S3 にデプロイする方法を学びます。このガイドでは、Roboflow の直感的なツールを使用してデータセットをラベリングする初期ステップから始め、Google Colab の協調環境でモデルをトレーニングするプロセスを進めていきます。
次に、SenseCraft Model Assistant を使用してトレーニング済みモデルをデプロイする方法を学びます。このプロセスは、トレーニングと実際のアプリケーションの間のギャップを埋めます。このチュートリアルの終わりには、XIAO ESP32S3 上でカスタムモデルを実行できるだけでなく、モデルの予測結果を解釈し活用するための知識も身につけることができます。

データセットからモデルの完成まで、以下の主要なステップを進めます。
ラベル付きデータセット —— この章では、モデルにトレーニング可能なデータセットを取得する方法に焦点を当てます。主に2つの方法があります。1つ目は、Roboflow コミュニティが提供するラベル付きデータセットを使用する方法、2つ目は、独自のシナリオに特化した画像をデータセットとして使用する方法ですが、この場合は手動でラベリングを行う必要があります。
トレーニングデータセットのエクスポートモデル —— この章では、Google Colab プラットフォームを使用して、最初のステップで取得したデータセットに基づいて XIAO ESP32S3 にデプロイ可能なモデルをトレーニングする方法に焦点を当てます。
SenseCraft Model Assistant を使用したモデルのアップロード —— このセクションでは、エクスポートされたモデルファイルを使用して、SenseCraft Model Assistant を介してモデルを XIAO ESP32S3 にアップロードする方法を説明します。
モデルの一般的なプロトコルとアプリケーション —— 最後に、SenseCraft AI の統一データ通信フォーマットを紹介し、デバイスとモデルの最大限の可能性を活用して、シナリオに適したアプリケーションを作成する方法を説明します。
それでは、データを活用するエキサイティングなプロセスを始めましょう。
必要な材料
開始する前に、以下の機器を準備する必要があります。
XIAO ESP32S3 と Sense バージョンの両方がこのチュートリアルの内容として使用できますが、製品の標準バージョンではカメラ拡張ボードを使用できないため、Sense バージョンを使用することをお勧めします。
ラベル付きデータセット
このセクションでは、ユーザーが自由にデータセットを選択できるようにしています。これには、コミュニティの写真や自分自身で撮影したシーンの写真が含まれます。このチュートリアルでは、主に2つのシナリオを紹介します。1つ目は、Roboflowコミュニティが提供する既製のラベル付きデータセットを使用する方法です。もう1つは、高解像度の画像を撮影し、それをラベル付けしてデータセットとして使用する方法です。ニーズに応じて以下の異なるチュートリアルをお読みください。
ステップ1: 無料のRoboflowアカウントを作成する
Roboflowは、コンピュータビジョンソリューションをラベル付け、トレーニング、デプロイするために必要なすべてを提供します。まずは無料のRoboflowアカウントを作成してください。
利用規約を確認して同意した後、2つのプランのいずれかを選択するよう求められます。Public PlanとStarter Planのいずれかです。

次に、ワークスペースにコラボレーターを招待するよう求められます。これらのコラボレーターは、画像のアノテーションやワークスペース内のビジョンプロジェクトの管理を手助けできます。必要に応じて人を招待した後、プロジェクトを作成することができます。
データセットの取得方法を選択する
- Roboflowを使用してラベル付きデータセットをダウンロード
- 自分の画像をデータセットとして使用する
Roboflowから直接使用するための適切なデータセットを選択するには、プロジェクトの要件に最も適したデータセットを選定する必要があります。これには、データセットのサイズ、品質、関連性、ライセンスなどの側面を考慮します。
ステップ2. Roboflow Universeを探索する
Roboflow Universeは、さまざまなデータセットを見つけることができるプラットフォームです。Roboflow Universeのウェブサイトを訪問し、利用可能なデータセットを探索してください。

Roboflowはフィルターと検索機能を提供しており、データセットをドメイン、クラス数、アノテーションタイプなどで絞り込むことができます。これらのフィルターを活用して、条件に合ったデータセットを絞り込んでください。
ステップ3. 個々のデータセットを評価する
候補を絞り込んだら、各データセットを個別に評価します。以下を確認してください:
アノテーションの品質: アノテーションが正確で一貫しているかどうかを確認します。

データセットのサイズ: モデルが効果的に学習できる十分なサイズであること、また扱いきれないほど大きすぎないことを確認します。
クラスのバランス: データセットは各クラスの例が均等に含まれていることが理想的です。

ライセンス: データセットのライセンスを確認し、意図した用途で使用できることを確認します。
ドキュメント: データセットに付属するドキュメントやメタデータを確認し、その内容や既に適用されている前処理ステップを理解します。

Roboflow Health Checkを使用してモデルの状態を確認することができます。
ステップ4. サンプルをダウンロードする
選択したデータセットが見つかった場合、そのデータセットをダウンロードして使用するオプションがあります。Roboflowでは通常、データセットのサンプルをダウンロードすることができます。サンプルをテストして、ワークフローに適合するかどうか、またモデルに適しているかどうかを確認してください。
次のステップに進むには、以下の形式でデータセットをエクスポートすることをお勧めします。

その後、このモデルのRaw URLを取得します。このリンクを安全に保管してください。後ほどモデルのトレーニングステップで使用します。

Roboflowを初めて使用し、データセットの選択に全く判断がつかない場合、データセットを使用してモデルをトレーニングし、初期テストを行いパフォーマンスを確認するステップが重要です。これにより、データセットが要件を満たすかどうかを判断する助けになります。
データセットが要件を満たし、初期テストで良好な結果を示した場合、そのデータセットはプロジェクトに適している可能性が高いです。そうでない場合は、検索を続けるか、より多くの画像を追加してデータセットを拡張することを検討してください。
ここでは、デモとしてじゃんけんのジェスチャー画像を使用し、Roboflowで画像のアップロード、ラベル付け、データセットのエクスポートのタスクを案内します。
XIAO ESP32S3を使用してデータセットの写真を撮影することを強くお勧めします。これはXIAO ESP32S3に最適です。XIAO ESP32S3 Senseで写真を撮影するためのサンプルプログラムは以下のWikiリンクで見つけることができます。
ステップ2. 新しいプロジェクトを作成し画像をアップロードする
Roboflowにログインしたら、Create Projectをクリックしてください。

プロジェクトに名前を付けます(例:「じゃんけん」)。プロジェクトを物体検出として定義します。出力ラベルをカテゴリカル(じゃんけんの「グー」「パー」「チョキ」はそれぞれ異なるカテゴリであるため)に設定します。

次に、手のジェスチャー画像をアップロードします。
グー、パー、チョキのジェスチャー画像を収集してください。さまざまな背景や照明条件で撮影された画像を用意しましょう。プロジェクトページで「画像を追加」をクリックします。

画像をドラッグ&ドロップするか、コンピュータから選択してアップロードできます。各ジェスチャーの画像を少なくとも100枚アップロードし、堅牢なデータセットを作成してください。

データセットのサイズはどのように決まるのか?
一般的には、タスクモデル、タスクの複雑さ、データの純度など、さまざまな要因に依存します。例えば、人間の体を検出するモデルでは、多くの人々を対象とし、広範囲にわたり、タスクがより複雑であるため、より多くのデータを収集する必要があります。 一方、ジェスチャー検出モデルでは、「グー」「チョキ」「パー」の3種類のみを検出する必要があり、カテゴリ数が少ないため、収集するデータセットは約500枚程度です。
ステップ3: 画像のアノテーション
画像をアップロードした後、手のジェスチャーをラベル付けしてアノテーションを行います。

Roboflowは、画像をラベル付けするための3つの方法を提供しています:自動ラベル付け、Roboflowラベル付け、手動ラベル付け。
- 自動ラベル付け: 汎用モデルを使用して画像を自動的にラベル付けします。
- Roboflowラベル付け: プロフェッショナルなラベル付けチームと協力します。最低ボリュームなし。事前のコミットメントなし。バウンディングボックスのアノテーションは$0.04から、ポリゴンのアノテーションは$0.08から開始します。
- 手動ラベル付け: 自分やチームで画像をラベル付けします。
以下では、最も一般的に使用される手動ラベル付けの方法を説明します。
「手動ラベル付け」ボタンをクリックします。Roboflowがアノテーションインターフェースを読み込みます。

「アノテーションを開始」ボタンを選択します。各画像内の手のジェスチャーの周りにバウンディングボックスを描画します。

各バウンディングボックスに「グー」「パー」「チョキ」とラベル付けします。
「>」ボタンを使用してデータセットを進め、各画像に対してアノテーションプロセスを繰り返します。

ステップ4: アノテーションの確認と編集
アノテーションが正確であることを確認することが重要です。
各画像を確認し、バウンディングボックスが正しく描画され、ラベル付けされていることを確認します。間違いを見つけた場合は、アノテーションを選択してバウンディングボックスを調整したり、ラベルを変更したりします。

不正確なラベル付けはトレーニング全体のパフォーマンスに影響を与えるため、ラベル付け要件を満たしていないデータセットは破棄される可能性があります。以下は不適切なラベル付けの例です。

ステップ5: データセットの生成とエクスポート
すべての画像にアノテーションを付けたら、アノテート画面で右上のAdd x images to Datasetボタンをクリックします。

次に、新しいポップアップウィンドウの下部にあるAdd Imagesボタンをクリックします。

左側のツールバーでGenerateをクリックし、3番目のPreprocessingステップでContinueをクリックします。

4番目のAugmentationステップでは、Mosaicを選択して汎化能力を向上させます。


最後のCreateステップでは、Roboflowのブーストに基づいて画像数を適切に計算してください。一般的に、画像が多いほどモデルのトレーニングに時間がかかります。ただし、画像が多いからといって必ずしもモデルがより正確になるわけではなく、主にデータセットの質が重要です。

Createをクリックしてデータセットのバージョンを作成します。Roboflowが画像とアノテーションを処理し、バージョン化されたデータセットを作成します。データセットが生成されたら、Export Datasetをクリックします。トレーニングするモデルの要件に一致するCOCO形式を選択してください。

続行をクリックすると、このモデルのRaw URLが取得できます。このリンクを保持してください。後ほどモデルのトレーニングステップで使用します。

おめでとうございます!Roboflowを使用して、Rock-Paper-Scissors(じゃんけん)の手のジェスチャー検出モデル用のデータセットをアップロード、注釈付け、エクスポートすることに成功しました。データセットが準備できたら、Google Colabなどのプラットフォームを使用して機械学習モデルをトレーニングすることができます。
データセットを多様で適切に注釈付けされた状態に保つことで、将来のモデルの精度を向上させることができます。モデルのトレーニングを頑張ってください。そして、AIの力を使って手のジェスチャーを分類する楽しさを味わってください!
トレーニングデータセットのエクスポートモデル
ステップ1. Colabノートブックにアクセスする
SenseCraft Model AssistantのWikiで、さまざまな種類のモデル用Google Colabコードファイルを見つけることができます。どのコードを選べばよいかわからない場合は、モデルのクラス(物体検出または画像分類)に応じて、どれでも選択できます。

Googleアカウントにまだサインインしていない場合は、Google Colabの全機能にアクセスするためにサインインしてください。
「Connect」をクリックして、Colabセッション用のリソースを割り当てます。

ステップ2. Roboflowデータセットを追加する
コードブロックをステップごとに実行する前に、準備したデータセットを使用できるようにコードの内容を変更する必要があります。データセットを直接ColabファイルシステムにダウンロードするためのURLを提供する必要があります。
コード内のDownload the datasetセクションを見つけてください。以下のサンプルプログラムが表示されます。

%mkdir -p Gesture_Detection_Swift-YOLO_192/dataset
!wget -c https://universe.roboflow.com/ds/xaMM3ZTeWy?key=5bznPZyI0t -O Gesture_Detection_Swift-YOLO_192/dataset.zip
!unzip -q Gesture_Detection_Swift-YOLO_192/dataset.zip -d Gesture_Detection_Swift-YOLO_192/dataset
このコードは、Google Colab環境内でディレクトリを作成し、Roboflowからデータセットをダウンロードし、新しく作成したディレクトリに解凍するために使用されます。各行の内容を以下に説明します:
%mkdir -p Gesture_Detection_Swift-YOLO_192/dataset
:- この行は
Gesture_Detection_Swift-YOLO_192
という新しいディレクトリと、そのサブディレクトリdataset
を作成します。-p
フラグは、ディレクトリが既に存在している場合にエラーを返さず、必要な親ディレクトリを作成します。
- この行は
!wget -c https://universe.roboflow.com/ds/xaMM3ZTeWy?key=5bznPZyI0t -O Gesture_Detection_Swift-YOLO_192/dataset.zip
:- この行は、コマンドラインユーティリティ
wget
を使用して、指定されたRoboflow URLからデータセットをダウンロードします。-c
フラグは、ダウンロードが中断された場合に再開を可能にします。-O
フラグは、ダウンロードしたファイルの出力場所とファイル名を指定します。この場合、Gesture_Detection_Swift-YOLO_192/dataset.zip
です。
- この行は、コマンドラインユーティリティ
!unzip -q Gesture_Detection_Swift-YOLO_192/dataset.zip -d Gesture_Detection_Swift-YOLO_192/dataset
:- この行は、
unzip
コマンドを使用して、dataset.zip
ファイルの内容を先ほど作成したdataset
ディレクトリに解凍します。-q
フラグは、ほとんどの出力メッセージを抑制して静かに実行します。
- この行は、
このコードを自分のRoboflowモデルリンクに合わせてカスタマイズするには:
Gesture_Detection_Swift-YOLO_192
を、データセットを保存したいディレクトリ名に置き換えます。RoboflowデータセットURL(
https://universe.roboflow.com/ds/xaMM3ZTeWy?key=5bznPZyI0t
)を、エクスポートしたデータセットのリンクに置き換えます(これはLabelled Datasetsの最後のステップで取得したRaw URLです)。アクセスにキーが必要な場合は、キーのパラメータを含めてください。必要に応じて、
wget
コマンドの出力ファイル名を調整します(-O your_directory/your_filename.zip
)。unzip
コマンドの出力ディレクトリが作成したディレクトリと一致し、ファイル名がwget
コマンドで設定したものと一致していることを確認してください。
フォルダディレクトリ名Gesture_Detection_Swift-YOLO_192
を変更する場合は、コード内で以前に使用された他のディレクトリ名も変更する必要があることに注意してください。そうしないとエラーが発生する可能性があります!
ステップ3. モデルパラメータの調整
次のステップは、モデルの入力パラメータを調整することです。Train a model with SSCMAセクションに移動すると、以下のコードスニペットが表示されます。

!sscma.train configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
--cfg-options \
work_dir=Gesture_Detection_Swift-YOLO_192 \
num_classes=3 \
epochs=10 \
height=192 \
width=192 \
data_root=Gesture_Detection_Swift-YOLO_192/dataset/ \
load_from=Gesture_Detection_Swift-YOLO_192/pretrain.pth
このコマンドは、SSCMA(Seeed Studio SenseCraft Model Assistant)フレームワークを使用して、YOLO(You Only Look Once)モデルの機械学習トレーニングプロセスを開始するために使用されます。コマンドには、トレーニングプロセスを構成するためのさまざまなオプションが含まれています。各部分の説明は以下の通りです:
!sscma.train
は、SSCMAフレームワーク内でトレーニングを開始するコマンドです。configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py
はトレーニング用の設定ファイルを指定します。このファイルには、モデルアーキテクチャ、トレーニングスケジュール、データ拡張戦略などの設定が含まれています。--cfg-options
は、コマンドラインで提供する設定を使用して、.py
ファイルで指定されたデフォルト設定を上書きすることを可能にします。work_dir=Gesture_Detection_Swift-YOLO_192
は、ログや保存されたモデルチェックポイントなど、トレーニング出力が保存されるディレクトリを設定します。num_classes=3
は、モデルが認識するクラス数を指定します。これはタグの数に依存します。例えば、「グー」、「チョキ」、「パー」の場合は3つのタグになります。epochs=10
は、トレーニングサイクル(エポック)の回数を設定します。推奨値は50から100の間です。height=192
とwidth=192
は、モデルが期待する入力画像の高さと幅を設定します。
Colabコード内で画像サイズを変更することは推奨されません。この値は、サイズ、精度、推論速度のバランスが取れた適切なデータセットサイズとして検証されています。異なるサイズのデータセットを使用する場合、精度を確保するために画像サイズを変更することを検討できますが、240x240を超えないようにしてください。
data_root=Gesture_Detection_Swift-YOLO_192/dataset/
は、トレーニングデータが配置されているディレクトリへのパスを定義します。load_from=Gesture_Detection_Swift-YOLO_192/pretrain.pth
は、トレーニングを再開するか、転移学習の開始点として使用する事前学習済みモデルのチェックポイントファイルへのパスを提供します。
このコマンドを自分のトレーニング用にカスタマイズするには、以下を行います:
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py
を、カスタム設定ファイルがある場合はそのパスに置き換えます。work_dir
を、トレーニング出力を保存したいディレクトリに変更します。num_classes
を、自分のデータセット内のクラス数に合わせて更新します。例えば、「グー」、「チョキ」、「パー」の場合は3つのタグになります。epochs
を、モデルのトレーニングエポック数に応じて調整します。推奨値は50から100の間です。height
とwidth
を、モデルの入力画像の寸法に合わせて設定します。data_root
を、自分のデータセットのルートディレクトリを指すように変更します。異なる事前学習済みモデルファイルがある場合は、
load_from
パスを適切に更新します。
ステップ 4. Google Colab コードを実行する
コードブロックを実行するには、コードブロックの左上にある再生ボタンをクリックします。

ボタンをクリックするとコードブロックが実行され、問題がなければコードブロックの実行が完了したことを示すチェックマークがブロックの左側に表示されます。以下の図は、最初のコードブロックの実行が完了した後の効果を示しています。

もし上記の画像と同じエラーメッセージが表示された場合は、T4 GPU を使用していることを確認してください。このプロジェクトでは CPU を使用しないでください。


その後、コードブロックを再実行してください。最初のコードブロックについては、問題がなければ以下のような結果が表示されます。

次に、Download the pretrain model weights file から Export the model までのすべてのコードブロックを実行してください。そして、各コードブロックにエラーがないことを確認してください。

コード内に表示される警告は無視して構いません。
ステップ 5. モデルを評価する
Evaluate the model セクションに到達したら、Evaluate the TFLite INT8 model コードブロックを実行するオプションがあります。
TFLite INT8 モデルの評価には、量子化されたモデルの予測を別のテストデータセットと比較して精度とパフォーマンス指標を測定し、量子化がモデルの精度に与える影響を評価し、エッジデバイスの展開制約を満たすための推論速度とリソース使用量をプロファイリングすることが含まれます。

以下のスニペットは、このコードブロックを実行した後の有効な結果の一部です。
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.450
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.929
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.361
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.474
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.456
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.515
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.529
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.529
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.536
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.537
03/19 01:38:43 - mmengine - INFO - bbox_mAP_copypaste: 0.450 0.929 0.361 -1.000 0.474 0.456
{'coco/bbox_mAP': 0.45, 'coco/bbox_mAP_50': 0.929, 'coco/bbox_mAP_75': 0.361, 'coco/bbox_mAP_s': -1.0, 'coco/bbox_mAP_m': 0.474, 'coco/bbox_mAP_l': 0.456}
FPS: 128.350449 fram/s
評価結果には、オブジェクト検出モデルの性能を評価するために一般的に使用される、異なる Intersection over Union (IoU) 閾値やオブジェクトサイズに基づいて計算された一連の平均精度 (AP) と平均再現率 (AR) 指標が含まれています。
AP@[IoU=0.50:0.95 | area=all | maxDets=100] = 0.450
- このスコアは、IoU 閾値が 0.50 から 0.95 の範囲で 0.05 刻みで計算されたモデルの平均精度を示します。AP が 0.450 であることは、この範囲でモデルが中程度の精度を持つことを意味します。これは COCO データセットで一般的に使用される重要な指標です。
AP@[IoU=0.50 | area=all | maxDets=100] = 0.929
- IoU 閾値が 0.50 の場合、モデルは 0.929 の高い平均精度を達成しており、より緩やかな一致基準の下で非常に正確にオブジェクトを検出していることを示しています。
AP@[IoU=0.75 | area=all | maxDets=100] = 0.361
- より厳しい IoU 閾値 0.75 の場合、モデルの平均精度は 0.361 に低下し、より厳しい一致基準の下で性能が低下することを示しています。
AP@[IoU=0.50:0.95 | area=small/medium/large | maxDets=100]
- オブジェクトのサイズによって AP スコアが異なります。ただし、小さいオブジェクトに対する AP は -1.000 であり、小さいオブジェクトの評価データが不足しているか、モデルの性能が低い可能性を示しています。中サイズおよび大サイズのオブジェクトに対する AP スコアはそれぞれ 0.474 と 0.456 であり、モデルが中サイズおよび大サイズのオブジェクトを比較的良好に検出していることを示しています。
AR@[IoU=0.50:0.95 | area=all | maxDets=1/10/100]
- 異なる
maxDets
値に対する平均再現率は 0.515 から 0.529 の範囲で一貫しており、モデルがほとんどの真陽性インスタンスを確実に取得していることを示しています。
- 異なる
FPS: 128.350449 fram/s
- モデルは推論中に約 128.35 フレーム/秒の非常に高速な速度で画像を処理しており、リアルタイムまたはほぼリアルタイムのアプリケーションに適していることを示しています。
全体として、モデルは IoU が 0.50 の場合に優れた性能を発揮し、IoU が 0.75 の場合には中程度の性能を示します。中サイズおよび大サイズのオブジェクト検出では良好な性能を示しますが、小さいオブジェクトの検出には課題がある可能性があります。また、モデルは高速な推論速度を持ち、迅速な処理が必要なシナリオに適しています。小さいオブジェクトの検出がアプリケーションで重要な場合、モデルをさらに最適化するか、小さいオブジェクトのデータを追加収集して性能を向上させる必要があるかもしれません。
ステップ 6. エクスポートされたモデルファイルをダウンロードする
モデルのエクスポートセクションの後、さまざまな形式のモデルファイルが生成され、デフォルトでは ModelAssistant フォルダに保存されます。このチュートリアルでは、保存ディレクトリは Gesture_Detection_Swift_YOLO_192 です。
Google Colab がフォルダの内容を自動的に更新しない場合があります。この場合、左上の更新アイコンをクリックしてファイルディレクトリを更新する必要があります。

上記のディレクトリには、XIAO ESP32S3 および Grove Vision AI V2 用の .tflite モデルファイルが含まれています。XIAO ESP32S3 Sense 用の場合は、xxx_int8.tflite 形式を使用するモデルファイルを必ず選択してください。他の形式は XIAO ESP32S3 Sense では使用できません。

モデルファイルを見つけたら、できるだけ早くローカルコンピュータにダウンロードしてください。Google Colab は長時間アイドル状態になるとストレージディレクトリを空にする可能性があります!
ここで実行した手順により、XIAO ESP32S3 でサポートされるモデルファイルを正常にエクスポートできました。次に、モデルをデバイスにデプロイしましょう。
SenseCraft Model Assistant を使用してモデルをアップロードする
ステップ 7. カスタムモデルを XIAO ESP32S3 にアップロードする
次に、Model Assistant ページに進みます。
XIAO ESP32S3 を選択した後、デバイスを接続し、ページ下部の Upload Custom AI Model を選択してください。

次に、モデル名、モデルファイル、およびラベルを準備する必要があります。ここで、ラベル ID の要素がどのように決定されるかを強調しておきます。

Roboflow のデータセットを直接ダウンロードする場合
Roboflow のデータセットを直接ダウンロードした場合、Health Check ページで異なるカテゴリとその順序を確認できます。ここに入力された順序をそのままインストールしてください。

ID:Object に数字を入力する必要はありません。カテゴリ名を直接入力してください。画像上のカテゴリの前にある数字やコロンは自動的に追加されます。
カスタムデータセットを使用する場合
カスタムデータセットを使用する場合、Health Check ページで異なるカテゴリとその順序を確認できます。ここに入力された順序をそのままインストールしてください。

ID:Object に数字を入力する必要はありません。カテゴリ名を直接入力してください。画像上のカテゴリの前にある数字やコロンは自動的に追加されます。
その後、右下の Send Model をクリックしてください。これには約 3 ~ 5 分ほどかかる場合があります。すべてが順調に進めば、上部の Model Name と Preview ウィンドウにモデルの結果が表示されます。

ここまで進めたら、おめでとうございます!独自のモデルを正常にトレーニングし、デプロイすることができました。
モデルの一般的なプロトコルとアプリケーション
カスタムモデルをアップロードする過程で、アップロードされるモデルファイルに加えて、デバイスのファームウェアもデバイスに転送する必要があります。デバイスのファームウェアには、モデル結果の出力形式や、ユーザーがモデルを使用して何ができるかを指定する一連の確立された通信プロトコルが含まれています。
スペースの都合上、この Wiki ではこれらのプロトコルの詳細については触れません。このセクションについては Github のドキュメントで詳しく説明します。より深い開発に興味がある場合は、こちらをご覧ください。
トラブルシューティング
1. 手順に従ったのにモデルの結果が満足できない場合はどうすればよいですか?
モデルの認識精度が満足できない場合、以下の観点を考慮して診断および改善を行うことができます:
データの質と量
- 問題: データセットが小さすぎたり、多様性に欠けていたり、アノテーションに不正確さがある可能性があります。
- 解決策: トレーニングデータのサイズと多様性を増やし、データクリーニングを実施してアノテーションエラーを修正してください。
トレーニングプロセス
- 問題: トレーニング時間が不十分であったり、学習率が適切に設定されていないため、モデルが効果的に学習できていない可能性があります。
- 解決策: トレーニングエポック数を増やし、学習率やその他のハイパーパラメータを調整し、過学習を防ぐために早期停止を実装してください。
クラスの不均衡
- 問題: 一部のクラスが他のクラスよりもサンプル数が著しく多く、モデルが多数派クラスに偏る可能性があります。
- 解決策: クラスウェイトを使用する、少数派クラスをオーバーサンプリングする、または多数派クラスをアンダーサンプリングしてデータをバランスさせてください。
これらの改善を段階的に実施し、モデルの精度を向上させることができます。各変更後に検証セットを使用してモデルの性能をテストし、改善の効果を確認することを忘れないでください。
2. Wiki の手順に従った後に SenseCraft デプロイメントで Invoke failed メッセージが表示されるのはなぜですか?
Invoke failed メッセージが表示される場合、デバイスで使用するための要件を満たしていないモデルをトレーニングした可能性があります。以下の点に注意してください。
- Colab の画像サイズを変更したかどうかを確認してください。デフォルトの圧縮サイズは 192x192 です。Grove Vision AI V2 では画像サイズを正方形に圧縮する必要があり、非正方形のサイズを使用しないでください。また、サイズが大きすぎないようにしてください(240x240 以下を推奨します)。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートをご提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。