5.9 KiB
IoTデバイス(Wio Terminal)からオブジェクト検出器を呼び出す
オブジェクト検出器が公開されたら、IoTデバイスから使用できるようになります。
画像分類プロジェクトをコピーする
ストック検出器の大部分は、以前のレッスンで作成した画像分類器と同じです。
タスク - 画像分類プロジェクトをコピーする
-
製造プロジェクトのレッスン2の手順に従って、ArduCamをWio Terminalに接続します。
また、カメラを固定する方法を検討してください。例えば、ケーブルを箱や缶の上に吊るしたり、両面テープでカメラを箱に固定したりする方法があります。
-
PlatformIOを使用して新しいWio Terminalプロジェクトを作成します。このプロジェクトを
stock-counter
と名付けます。 -
製造プロジェクトのレッスン2の手順を再現して、カメラから画像をキャプチャします。
-
製造プロジェクトのレッスン2の手順を再現して、画像分類器を呼び出します。このコードの大部分は、オブジェクトを検出するために再利用されます。
コードを分類器から画像検出器に変更する
画像を分類するために使用したコードは、オブジェクトを検出するコードと非常に似ています。主な違いは、Custom Visionから取得した呼び出し先のURLと、その呼び出し結果です。
タスク - コードを分類器から画像検出器に変更する
-
main.cpp
ファイルの先頭に次のインクルードディレクティブを追加します:#include <vector>
-
classifyImage
関数の名前をdetectStock
に変更します。関数名とbuttonPressed
関数内での呼び出しの両方を変更してください。 -
detectStock
関数の上に、低い確率の検出を除外するためのしきい値を宣言します:const float threshold = 0.3f;
画像分類器はタグごとに1つの結果しか返しませんが、オブジェクト検出器は複数の結果を返します。そのため、確率が低いものを除外する必要があります。
-
detectStock
関数の上に、予測を処理する関数を宣言します:void processPredictions(std::vector<JsonVariant> &predictions) { for(JsonVariant prediction : predictions) { String tag = prediction["tagName"].as<String>(); float probability = prediction["probability"].as<float>(); char buff[32]; sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0); Serial.println(buff); } }
これは予測のリストを受け取り、それをシリアルモニターに出力します。
-
detectStock
関数内で、予測をループするfor
ループの内容を次のコードに置き換えます:std::vector<JsonVariant> passed_predictions; for(JsonVariant prediction : predictions) { float probability = prediction["probability"].as<float>(); if (probability > threshold) { passed_predictions.push_back(prediction); } } processPredictions(passed_predictions);
これは予測をループし、確率をしきい値と比較します。しきい値を超える確率を持つすべての予測が
list
に追加され、processPredictions
関数に渡されます。 -
コードをアップロードして実行します。カメラを棚の上のオブジェクトに向け、Cボタンを押してください。シリアルモニターに出力が表示されます:
Connecting to WiFi.. Connected! Image captured Image read to buffer with length 17416 tomato paste: 35.84% tomato paste: 35.87% tomato paste: 34.11% tomato paste: 35.16%
💁 画像に適した値にするために、
threshold
を調整する必要があるかもしれません。撮影された画像とこれらの値は、Custom VisionのPredictionsタブで確認できます。
💁 このコードはcode-detect/wio-terminalフォルダーで確認できます。
😀 ストックカウンタープログラムが成功しました!
免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。元の言語で記載された文書が公式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。