SORACOM Users

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

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

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

引数名 説明
IForm string 画像フォーマット("webp" or “jpeg")。 Default webp
IQl integer 画質(0〜100)。 Default 100
IDf integer 画像の縮小(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_time integer アップロード開始時間(0〜24)。Default 0
upload_end_time integer アップロード終了時間(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 へ画像のメタ情報を送信します。

顔検出(モザイク)

差分動画

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 説明
text string/integer/float 認識した数字/文字
location structure 認識した数字/文字の図中の座標 ([left, top, left+width, top+height] )
confidence integer 信頼度 (0〜100)
mosaicId string Mosaic ID
ts float Timestamp
image_path string 画像の保存場所(SORACOM Harvest Files)

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

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

引数名 説明
OEM integer OCR Engine Mode(0〜3). Default 3
PSM integer Layout analysis(0〜13). Default 3
LANG string eng 以外は Presetup でのインストール及び、filterOcrResult 関数の修正が必要。
OThresh float 認識の信頼度の閾値(0〜1.0)。閾値以下の認識を破棄。Default 0.2
MCount integer Marker の最低検出数(0-250)。Default 1
IMargin float 認識する領域のマージン(1.0〜2.0)。Default 1.1
MPnum integer OCR の並列数。 Default CPU数
UInv float SORACOM Harvest Data/Files への送信間隔(秒)。Default SORACOM_ENV_WAIT へ設定した値。

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

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

物体検出

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])
score float 信頼度 (0〜1.0)
label string 検出した物体名
mosaicId string Mosaic ID
ts float Timestamp
image_path string 画像の保存場所(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 から変更可能です。

引数名 説明
Model string 物体認識に利用するモデルファイル名。モデルは /opt/app/ 以下に配置してください。
Label String 物体認識に利用するラベルファイル名。Default labels.txt
TOut integer 物体検出のタイムアウト(秒)。Default 60
UInv float SORACOM Harvest Data/Files への送信間隔(秒)。Default SORACOM_ENV_WAIT
OThresh float 認識の信頼度の閾値(0〜1.0)。閾値以下の認識を破棄。Default 0.5
TPK integer 一画像に対する物体認識の最大数。Default 10
MPnum integer プロセスの並列数。 Default CPU数
FIFO boolean 並列で物体認識させた場合に、画像取得時間順に結果を受け取りたい場合 True。 Default True

物体検出(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 の接続方法についてはこちらを参照してください。

参考資料

pagetop