MENU

Soracom

Users

サンプルアルゴリズム一覧

現在次の様なサンプルアルゴリズムが用意されています。サンプルアルゴリズムは S+ Camera Basic からのみアクセス可能です。S+ Camera Basic へのアルゴリズムのデプロイメント方法は こちら を参照してください。

次の値は、各アルゴリズム共通の値として SORACOM_ENV_FREE_PARAM から変更可能です。

引数名説明
IFormstring画像フォーマット (“webp” or “jpeg”)。 Default webp
IQlinteger画質 (0〜100)。 Default 100
IDfinteger画像の縮小 (1 はそのまま、2 はサイズを 1/2 へ)。Default 1

定期画像送信

Periodical Image Upload において SORACOM_ENV_MODE を 0 に指定すると、SORACOM_ENV_WAIT 間隔毎に SORACOM Harvest Files の /cap/{Mosaic ID} に画像をアップロードします。また同時に SORACOM Harvest Data へ画像のメタ情報を送信します。

Harvest Files ボタンをクリックすることで、サンプルアプリケーション画像を確認できます。このサンプルアルゴリズムの画像は SORACOM Harvest Files の /cap/{Mosaic ID} へタイムスタンプ毎に保存されます。確認したい画像を選択して、Download をクリックするとダウンロードできます。取得した Webp 形式の画像は Web ブラウザー等で開いて確認できます。

次の値は、SORACOM_ENV_FREE_PARAM から変更可能です。

引数名説明
upload_begin_timeintegerアップロード開始時間 (0〜24)。Default 0
upload_end_timeintegerアップロード終了時間 (0〜24)。Default 24

顔 (目線) 検出

この様な状態でカメラを設置して、カメラが人間の目線を検出すると顔の周りを切り出して、SORACOM Harvest Files へ送信します。

画像取得

顔 (目線) 検出を行うためには、Periodical Image Upload において SORACOM_ENV_MODE を 100 に指定してください。目線を検出すると顔周辺の画像を SORACOM_ENV_WAIT 間隔毎に SORACOM Harvest Files の /cap/{Mosaic ID} に画像をアップロードします。また同時に SORACOM Harvest Data へ画像のメタ情報を送信します。

顔 (目線)検出

顔検出 (モザイク)

Periodical Image Upload において SORACOM_ENV_MODE を 101 に指定すると、目線を検出すると目線にモザイクをかけて SORACOM_ENV_WAIT 間隔毎に SORACOM Harvest Files の /cap/{Mosaic ID} に画像をアップロードします。また同時に SORACOM Harvest Data へ画像のメタ情報を送信します。

顔検出 (モザイク)

顔認識

Image Classification(Face) は S+ Camera Basic で取得した顔画像に対して顔認識モデルによる判定をします。また、モデルの作成、学習用に専用のコンソールもご用意しています。詳細は サンプルアルゴリズム「Image Classification(Face)」を使用した顔認識モデルの作成 をご覧ください。

顔認識

差分動画

Movie(Animated Image) は、1 秒毎に取得した前後の画像を比較し、前後の画像に大きな変更があった画像を SORACOM_ENV_WAIT 分のアニメーションとして SORACOM Harvest Files にアップロードします。また同時に SORACOM Harvest Data へ画像のメタ情報を送信します。

数字/文字読み取り

OCR は ArUco marker で指定された範囲の数字やアルファベットを OCR によってテキスト化して、 /OCR/{Mosaic ID} に指定された範囲とテキストの情報をアップロードします。また同時に SORACOM Harvest Data へ画像のメタ情報を送信します。

最初に こちら を利用して Aruco Marker を生成します。必要に応じて以下のライブラリをインストールしてください。

opencv-contrib-python==3.4.3.18
numpy==1.18.1

aruco_marker.py-n [作成する Aruco Marker の数] で実行することで、1組の Aruco Marker が指定した数だけ作成されます。また、-s では Aruco Marker のサイズを (0〜100) 変更することができます。-p では Aruco Marker 間の余白 (ピクセル) を変更することができます。Aruco Marker の検出がうまくいかない場合には、余白を大きくして、Aruco Marker の周りの白い部分を残してご利用ください。

例えば -n 10 で実行した場合には、図の様に 10 組の Aruco Marker が作成されます。

python aruco_maker.py -n 10

Aruco Marker

こちらを認識させたい領域へ貼ることによって 1 組みの Aruco Marker の中心を結ぶ領域が、認識対象として設定されます。

領域設定

この領域内の数字/文字が認識の対象となり、認識した場合 Harvest Files へ次の様な写真が送信されます。

数字/文字の認識

合わせて、それぞれの領域のメタ情報が SORACOM Harvest Data へ送信されます。

{"text": "ABCDE", "location": [42, 36, 139, 57], "confidence": 92, "mosaicId": "8xxxxxxxxx_AX0XXXXXXXX", "ts": 1599783601.6256475, "image_path": "/OCR/8xxxxxxxxx_AX0XXXXXXXX/2020/09/11/ocr_image_8xxxxxxxxx_AX0XXXXXXXX_20200911T09-21-36-226797.jpg"}
{"text": 1234567, "location": [46, 36, 165, 57], "confidence": 96, "mosaicId": "8xxxxxxxxx_AX0XXXXXXXX", "ts": 1599783696.2267966, "image_path": "/OCR/8xxxxxxxxx_AX0XXXXXXXX/2020/09/11/ocr_image_8xxxxxxxxx_AX0XXXXXXXX_20200911T09-21-36-226797.jpg"}
index説明
textstring/integer/float認識した数字/文字
locationstructure認識した数字/文字の図中の座標 ([left, top, left+width, top+height])
confidenceinteger信頼度 (0〜100)
mosaicIdstringMosaic ID
tsfloatTimestamp
image_pathstring画像の保存場所 (SORACOM Harvest Files)
algorithmstringアルゴリズム名

認識エンジンとしては Tesseract OCR を利用しており、サンプルでは –oem 3 –psm 3 –l eng での動作確認を行っています。

次の値は SORACOM_ENV_FREE_PARAM から変更可能です。

引数名説明
OEMintegerOCR Engine Mode (0〜3). Default 3
PSMintegerLayout analysis (0〜13). Default 3
LANGstringeng 以外は Presetup でのインストール及び、filterOcrResult 関数の修正が必要。
OThreshfloat認識の信頼度の閾値 (0〜1.0)。閾値以下の認識を破棄。Default 0.2
MCountintegerMarker の最低検出数 (0-250)。Default 1
IMarginfloat認識する領域のマージン (1.0〜2.0)。Default 1.1
MPnumintegerOCR の並列数。 Default CPU 数
UInvfloatSORACOM Harvest Data/Files への送信間隔 (秒)。Default SORACOM_ENV_WAIT へ設定した値。

例えば OEMPSM を変更する場合には次の様な jsonSORACOM_ENV_FREE_PARAM に設定してください。

{"OEM": 3, "PSM": 1}

サンプルアルゴリズムを利用したレシピ

OCR のサンプルアルゴリズムを利用した SORACOM レシピ:IoT カメラで計測機器のデータを可視化したい もあわせてご参照ください。このレシピでは学習データを OCR エンジンに適用することで、認識対象の文字を追加する方法についても解説しています。

画像切り出し

ArUco Cropping数字/文字読み取り で利用した Aruco Marker で指定された範囲を切り出します。1組の Aruco Marker を切り出したい場所に貼ると、Aruco Marker の中心を結ぶ領域が切り出されます。

切り出し領域指定

切り出された写真は SORACOM Harvest Files へ送信されます。

  • Aruco Marker ID=1

切り出されたイメージ-1

  • Aruco Marker ID=2

切り出されたイメージ-2

合わせて、それぞれの領域のメタ情報が SORACOM Harvest Data へ送信されます。

{"marker_id":1,"location":[410,408,380,161],"mosaicId":"8xxxxxxxxx_AX0XXXXXXXX","ts":1599783601.6256475,"image_path":"/ArUcoMarker/8xxxxxxxxx_AX0XXXXXXXX/2021/02/16/aruco_image_8xxxxxxxxx_AX0XXXXXXXX_20210216T16-02-47-138434.webp","algorithm":"arucomarker"}
{"marker_id":2,"location":[442,627,408,211],"mosaicId":"8xxxxxxxxx_AX0XXXXXXXX","ts":1599783601.6256475,"image_path":"/ArUcoMarker/8xxxxxxxxx_AX0XXXXXXXX/2021/02/16/aruco_image_8xxxxxxxxx_AX0XXXXXXXX_20210216T16-02-47-138435.webp","algorithm":"arucomarker"}
index説明
marker_idintegerAruco Marker の ID
locationstructureAruco Marker で囲われる図中の座標 ([left, top, left+width, top+height])
mosaicIdstringMosaic ID
tsfloatTimestamp
image_pathstring画像の保存場所 (SORACOM Harvest Files)
algorithmstringアルゴリズム名

次の値は SORACOM_ENV_FREE_PARAM から変更可能です。

引数名説明
MCountintegerMarker の最低検出数 (0-250)。Default 1
IMarginfloat認識する領域のマージン (1.0〜2.0)。Default 1.1
MPnuminteger処理の並列数。 Default CPU 数
UInvfloatSORACOM Harvest Data/Files への送信間隔 (秒)。Default SORACOM_ENV_WAIT へ設定した値。

物体検出

Object Detection はカメラに写った物体の認識と、認識した物体の位置を検出することができます。SORACOM_ENV_WAIT 間隔毎に検出された物体のアノテーションを付加した画像を SORACOM Harvest Files の /object_detection/{Mosaic ID} へ送信します。

物体検出

合わせて、SORACOM Harvest Data へ検出したオブジェクトの情報が送信されます。

{"location": [0.3244456946849823, 0.31557196378707886, 0.23213914036750793, 0.6655720472335815], "score": 0.97265625, "label": "giraffe", "mosaicId": "8xxxxxxxxx_AX0XXXXXXXX", "ts": 1601625875.4137168, "image_path": "/object_detection/8xxxxxxxxx_AX0XXXXXXXX/2020/10/01/object_detection_8xxxxxxxxx_AX0XXXXXXXX_20201002T17-04-35-413717.webp"}
index説明
location[float, float, float, float]検出した物体の図中の相対位置 (x0, y0, x1, y1)。実際の位置は ([x0 x width, y0 x height, x1 x width, y1 x height])
scorefloat信頼度 (0〜1.0)
labelstring検出した物体名
mosaicIdstringMosaic ID
tsfloatTimestamp
image_pathstring画像の保存場所 (SORACOM Harvest Files)

サンプルでは、90 種類の検出が可能な COCO Label 及びおよび MobileNet SSD v2 (COCO) モデルを使用しています。アルゴリズムの最大サイズは 10MB となっているため、モデルの差異が大きな場合には PreSetup を利用して、別途ダウンロードする様にしてください。サンプルではラベルを labels.txt としてアーカイブに含めるとともに、モデル (ssd_mobilenet_v2_coco_quant_postprocess.tflite) は PreSetup を利用してダウンロードしています。

次の値は SORACOM_ENV_FREE_PARAM から変更可能です。

引数名説明
Modelstring物体認識に利用するモデルファイル名。モデルは /opt/app/ 以下に配置してください。
Labelstring物体認識に利用するラベルファイル名。Default labels.txt
TOutinteger物体検出のタイムアウト (秒)。Default 60
UInvfloatSORACOM Harvest Data/Files への送信間隔 (秒)。Default SORACOM_ENV_WAIT
OThreshfloat認識の信頼度の閾値 (0〜1.0)。閾値以下の認識を破棄。Default 0.5
TPKinteger一画像に対する物体認識の最大数。Default 10
MPnumintegerプロセスの並列数。 Default CPU 数
FIFOboolean並列で物体認識させた場合に、画像取得時間順に結果を受け取りたい場合 true。 Default true
TLabelstring検出したい物体を指定。 指定しない場合には 90 種類全てが対象。

特定したい 物体SORACOM_ENV_FREE_PARAM に次の様に設定してください (例では horse, giraffe, zebra 検出時に動画がアップロードされます)。

{"TLabel": ["horse", "giraffe", "zebra"]}

物体検出 (動画アップロード)

特定の物体を検出した際に、その前後 SORACOM_ENV_WAIT の動画を SORACOM Harvest Files の /movie/{Mosaic ID} にアップロードします (動画はサイズが大きくなるので、TLabel を指定しない場合には動画はアップロードされません)。動画アップロード時に SORACOM Harvest Data へ検出したオブジェクトの情報が送信されます。特定の物体の検出をトリガーに動画をアップロードすることによって、不必要なデータ送信を抑えることが可能です。

動画は Http Live Streaming (HLS) に基づき、インデックスファイル (.m3u8) とセグメントファイル (.ts) に分かれてアップロードされます。m3u8 は {年月日}_{時分秒}_index.m3u8 というファイル名になっており、 ffmpeg を利用して、一つの動画ファイル (例では mosaic.mp4) へ変換することが可能です。

ffmpeg \
-headers 'x-soracom-api-key: {soracom api key}'$'\r\n''x-soracom-token: {soracom api token}' \
-i "https://api.soracom.io/v1/files/private/movie/xxx_yyy/2021/04/14/20210414_185937_index.m3u8" \
mosaic.mp4 \

{soracom api key} 及び {soracopm api token} の取得方法については こちら を参照してください。

なお、ローカルに .m3u8 ファイルと .ts ファイルをダウンロードして一つの動画ファイルを作成する場合には、.m3u8 ファイルの直下の ts ディレクトリに .ts ファイルを配置して次の様に変換してください。

ffmpeg -i 20210414_185937_index.m3u8 -c mosaic.mp4

動画についての詳細は こちら を参照してください。

注意
  • 動画の閲覧はデータ通信量が多いのでご注意ください。
  • MPnum を増やすことで、動画を並列アップロードすることができます。
  • アルゴリズムをインストールすると明示的に 録画停止 コマンドを実行するまで録画され続けるため、アルゴリズムをアンインストール後、録画停止の実行、またはカメラの再起動を行ってください。

物体検出 (Google Coral Edge TPU USB Accelerator)

Google Coral Edge TPU USB Accelerator をお持ちの場合 ObjectDetection with Google Coral Edge TPU USB Accelerator を利用できます。アルゴリズムがうまく動作しない場合には、Google Coral Edge TPU を USB 接続した状態で S+ Camera Basic 電源断の後、電源を入れ直してください。Google Coral Edge TPU USB Accelerator の接続方法については こちら を参照してください。