第589回 SORACOM公式ブログ

ソラコム公式ブログ

SORACOM Fluxにバウンディングボックス機能が登場!

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「SORACOM Fluxにバウンディングボックス機能が登場!」を再編集したものです。

皆様、こんにちは。ソラコムでクラウド型カメラサービス「ソラカメ」とIoTオートメーター「SORACOM Flux」の事業責任者をしております、高見(ニックネーム:yuu)です。

この度、SORACOM Fluxに新たな機能「バウンディングボックス」がリリースされましたので本記事にてご紹介させて下さい。

なお、今回ご紹介する「バウンディングボックス」機能は、SORACOM Flux Standard Plan以上においてご利用が可能です。Developer planではご利用頂けません。予めご了承下さい。(SORACOM Fluxの料金プランについてはこちら

バウンディングボックスって何?

現在、SORACOM Fluxではソラカメと組み合わせて、生成AIを用いた画像解析を行い、その結果に応じた通知(メール通知やWebhookによるslack等への通知)や、SORACOM SIMを通したデバイス制御などに用いられるユースケースが非常に多いです。

その中で、「画像の中に商品棚があるんだけど、1段目と2段目をそれぞれ区別して認識させたいけど、中々生成AIが読み取ってくれない」、「画像の中にメーターがあるんだけど、複数メーターがあってどのメーターを読み取るかプロンプトだと中々指示が生成AIに伝わらない」といったお声がございました。

それらを解決するために、画像上に囲み枠(=バウンディングボックス)をつけて、生成AIに対して「赤枠内は◯◯です。青枠内は〇〇です。それぞれの陳列充足率を算出して下さい」といった指示ができるようになり、生成AIからより精度の高い回答を引き出すことを可能にするものです。

以下、サンプル画像

では、実際にどのように利用するのか、試してみましょう!

必要なデバイスとサービス

本記事でご紹介するSORACOM Flux「バウンディングボックス」機能をを用いた、画像解析については以下のデバイス及びSORACOMサービスのご利用が必要です。

  • ソラカメ対応カメラ本体(ATOM Cam 2またはATOM Cam Swing)
  • クラウド常時録画ライセンス
  • SORACOM Flux Standard plan

①事前準備:デバイスIDのメモと画像取得

ユーザーコンソール左上のメニューから「ソラコムクラウドカメラサービス」>「デバイス管理」を選択します。

まず、解析したいカメラのデバイスIDをメモして下さい。後工程で利用します。

次に、バウンディングボックスでは、カメラの撮影画像をベースに設定することができます。ですので、まずカメラの撮影画像を取得しましょう。デバイス管理画面から画像解析したいカメラの名称部分をクリックします。

以下画面が表示されますのでメニューバーから「静止画ダウンロード管理」をクリックします。

すると以下画面が表示されますので、「静止画をエクスポート」ボタンを押します。

時刻を指定して、「エクスポートボタン」を押します。「広角補正」にチェックをつけるかどうかはどちらでも構いません。ソラカメ対応カメラATOM Camは広角レンズのため、画角の端が湾曲するのを補正してくれる機能です。迷ったら、チェックボックスをONにしておきましょう。

以下の画面にエクスポートが終了すると、ダウンロードボタンがおせるようになるので押して、ご自身のPCローカルに画像を保存して下さい。

②Fluxアプリの作成

以上が完了したら、Fluxアプリの作成に取り掛かります。

左上のメニューから「SORACOM Flux」>「Fluxアプリ」を選択します。以下画面にて「新しいアプリを作成する」ボタンをクリックします。

今回は「最初から作成」を選択して下さい。

アプリの名称を入力し、「作成」ボタンを押して下さい。任意の名前で結構です。

「チャネルを作成する」ボタンをクリックします。ここで、何をトリガーにしてFluxアプリを起動するかを設定していきます。

今回は一定時間間隔でFluxアプリを起動する「インターバルタイマー」を設定します。選択して、「次へ」ボタンを押します。ソラカメのモーション検知をトリガーにしたい場合等は「ソラカメ モーション検知/サウンド検出」を利用します。

インターバルタイマーを一旦「無効」にします。Fluxアプリを作成作業中にFluxアプリが何回も起動しないようにするためです。作成が完了した後に「有効」に戻します。

スケジュール定義はご自身が設定したい値を指定して下さい。最短は1分間隔です。

ただし、SORACOM Fluxの料金はこのイベント実行回数やこの後設定する生成AIの利用クレジット数で変動しますので料金プランをご理解した上で設定下さい。(料金についてはこちら

次に、アクションタブを選択して、「アクションを追加」ボタンを押します。

ソラカメ画像取得アクションを選択し、「OK」ボタンを押します。

今回は、ご利用されるユーザーの皆様が「クラウド常時録画ライセンス」を利用している前提で設定内容をご案内致します。以下のとおり、設定して右下の「作成する」ボタンを押します。

クラウド常時録画ライセンスまたはリアルタイムアクセスのどちらかをご契約していなければ、このソラカメ画像取得アクションはご利用頂けません。ご注意下さい。

デバイスIDは①事前準備のパートでメモしたものを入力します。
指定時刻はFluxアプリが起動したタイミングの画像を取得したいので、${now()}と記載します。この記述方法は、${ }プレースホルダーといい、変数や関数を呼び出す場合にこれで括ります。now()は、現在時刻を取得する関数を呼び出しています。
最下部の送信先チャネル名称は任意の名前で問題有りませんが、今回は「Soracam Output」とします。

記述方法の詳細を知りたい方は、こちらを参照して下さい。

作成をすると、Flux App Studio画面には以下が表示されます。表示されていれば、順調に進んでいます。

次に、ソラカメアイコンの後ろの円筒形のSoracam Outputをマウスでクリックします。

アクション選択画面が表示されますので、「バウンディングボックス」を選択して、「OK」ボタンを押します。

画像URL欄に ${payload.imageUrl}を指定し、画面中のほどの「画像上で領域指定」ボタンをクリックします。

変数を使うので前回同様に${ }でくくって、中にpayload.imageUrlを指定します。payloadは1つ前のアクションの出力(=ソラカメ画像取得アクションの出力)を意味し、imageUrlはその出力の中のパラメータを指します。

<補足>

ソラカメ画像取得アクションの送信先チャネルであるSoracam Outputのメッセージ履歴を見ると以下のようなメッセージが出力されています。これ全体がpayloadであり、この中にdeviceId, imageUrl, exportId, datetimeといったパラメータがあることが分かります。

今回は画像取得先情報でしたので、payloadの中のimageUrlという意味で、${payload.imageUrl}と記載していることになります。

「画像上で領域指定」ボタンをクリックすると、以下の画面が表示されるので「画像を選択」ボタンを押し、①事前準備で事前にダウンロードしたカメラ画像を選択します。

画面の上でマウスをドラッグして、バウンディングボックスを設定します。設定をやり直したい場合は、「すべてクリア」ボタンを押すとリセットできます。設定したら、「保存」ボタンを押します。なお、範囲指定は複数箇所指定可能です。枠線の色は自動で変更されます。後で、枠線の色だけ変更することも可能です。

以下の画面に戻りますので、最下部の出力先チャネルに任意の名前を設定して下さい。

本記事では、「Bounding Box Output」とします。最後に「作成する」ボタンを押して下さい。

すると、Flux App Studio画面には以下のようなフローが表示されます。

続いて、バウンディングボックスアクションの後ろにある、円筒形のBounding Box Outputチャネルをクリックします。

アクションタブを選択して、「アクションを追加」ボタンをおします。

以下画面が表示されますので、AIアクションを選択して「OK」ボタンを押します。

以下の画面の通り設定し、「作成する」ボタンを押します。

・「アクションの実行条件」:空欄(全てのケースで実行を意味します)

・「AIモデル」:Google Gemini 2.0 Flash(任意のモデルを選択下さい)

選択するAIモデルによって、消費クレジットが異なります。消費クレジットについてはSORACOM Fluxのご利用料金に影響がございます。必ずSORACOM Fluxの料金プランをご確認の上、ご選択ください。

・「プロンプト」:

写真は商品の陳列棚です。商品在庫のカウントをします。 画像の赤枠内に指定された部分にりんごが陳列されていますので個数をカウントして下さい。 なお、出力は以下のとおりJSONフォーマットにて出力して下さい。 変数Num_of_Applesには整数型が入ります。String型ではないので出力時に注意して下さい。  {    "Num_of_Apples": 5 }

・「AIからの返答をJSON形式にする」:チェックをつける

・「AIに画像を読み込ませる」:チェックをつけ、${payload.imageUrl}と入力

・送信先チャネル:AI Output(任意の名称でOK)

Flux App Studio画面では、以下フローチャートが表示されるはずです。

続いて、AIアクションの後ろにある円筒形のAI Outputチャネルをクリックします。

アクションタブを選択して、「アクションを追加」ボタンをおします。

以下の画面が表示されますので、「Email通知」を選択して「OK」ボタンを押します。

以下の通り、設定をして「作成する」ボタンを押します。

・「アクションの実行条件」:payload.output.Num_of_Apples >= 0

※りんごが0個以上だったらメール通知となります。(つまり全パターンを通知)こちらは必要に応じて数字や論理式を変更するだけで、5個以下だったらメール通知といった変更ができます。

・メール送信先:メールアドレスをリストから選択。

※ここで指定できるメールアドレスは事前にソラコムアカウントに登録されている必要があります。手打ちはできません。メールアドレスの追加登録方法はこちらを参照して下さい。

・メール件名:りんごの在庫カウント(任意の名称でOK)

・メール本文:

商品棚には、りんごが${payload.output.Num_of_Apples}個陳列されています。

<補足>

AIアクションの出力結果をAI Outputチャネルのメッセージ履歴で確認すると、以下のようなレスポンスが返ってきています。payload.output.Num_of_Applesは、先程AIアクションのプロンプト設定画面で生成AIに指示した名称です。1つ前のアクション(=AIアクション)出力結果(=payload)中の、output配列中のNum_of_Applesなので、${payload.output.Num_of_Apples}と指定しています。
メール本文のようなテキスト内に埋め込む場合は ${ }で囲む必要があります。

以上の設定が完了し、以下のようなフロー図が完成していれば無事完了です。

では、正常に動作するか試してみましょう。

上図の一番左の緑色のインターバルタイマーのアイコンをクリックしてください。

次に、テスト実行タブをクリックして、実行ボタンを押します。すると、マニュアルで1回だけFluxアプリを起動することができます。テストするときに最適な操作方法です。

すると、指定したメールアドレスに以下のようなメールが届けば、正常終了です。

正常動作が確認できたら、最後に冒頭で無効設定していたインターバルタイマーを有効に設定し、「変更を保存」ボタンを押しましょう。

有効にすると、自動的に指定した時間間隔でFluxアプリが起動し続けますので、必ずFlux料金プランを確認した上で利用して下さい。

まとめ

今回はSORACOM Fluxを用いた画像解析において、生成AIの解析精度を高めることができる「バウンディングボックス」機能についてご紹介しました。

もちろん、このバウンディングボックスはソラカメ以外のRTSP対応カメラから取得した静止画に対しても同じ様にご利用頂けます。(Fluxアプリの設定方法は変わります。)

店頭在庫の充足率をカウントしたい、メーター読み取りを自動化したい、車両台数をカウントしたい等、様々な用途にご利用いただけます。

本機能はSORACOM Flux Standard Planでご利用になれます。ぜひ、お試し下さい。

また、本記事をご覧頂いて、「ちょっとむずかしそう」と思った方は、まず、より簡単にご利用頂けるソラカメAIをぜひお試し下さい。こちらのブログ記事でご紹介していますので、もう少し手軽に試してみてから考えたいという方、ぜひソラカメAIをご検討下さい。

― ソラコム高見 (yuu)

投稿 SORACOM Fluxにバウンディングボックス機能が登場!SORACOM公式ブログ に最初に表示されました。

過去記事アーカイブ

2025年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2024年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2023年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2022年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2021年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月