サンプルアルゴリズム一覧
現在次の様なサンプルアルゴリズムが用意されています。サンプルアルゴリズムは 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 へ画像のメタ情報を送信します。
顔認識
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
こちらを認識させたい領域へ貼ることによって 1組みの Aruco Marker の中心を結ぶ領域が、認識対象として設定されます。
この領域内の数字/文字が認識の対象となり、認識した場合 SORACOM 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) |
algorithm | string | アルゴリズム名 |
認識エンジンとしては 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 へ設定した値。 |
例えば OEM と PSM を変更する場合には次の様な json を SORACOM_ENV_FREE_PARAM に設定してください。
{"OEM": 3, "PSM": 1}
画像切り出し
ArUco Cropping は数字/文字読み取りで利用した Aruco Marker で指定された範囲を切り出します。1組の Aruco Marker を切り出したい場所に貼ると、Aruco Marker の中心を結ぶ領域が切り出されます。
切り出された写真は SORACOM Harvest Files へ送信されます。
- Aruco Marker ID=1
- Aruco Marker ID=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_id | integer | Aruco Marker の ID |
location | structure | Aruco Marker で囲われる図中の座標 ([left, top, left+width, top+height] ) |
mosaicId | string | Mosaic ID |
ts | float | Timestamp |
image_path | string | 画像の保存場所(SORACOM Harvest Files) |
algorithm | string | アルゴリズム名 |
次の値は SORACOM_ENV_FREE_PARAM から変更可能です。
引数名 | 型 | 説明 |
---|---|---|
MCount | integer | Marker の最低検出数(0-250)。Default 1 |
IMargin | float | 認識する領域のマージン(1.0〜2.0)。Default 1.1 |
MPnum | integer | 処理の並列数。 Default CPU数 |
UInv | float | SORACOM 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]) |
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 の接続方法についてはこちらを参照してください。