2.10. RAPID機械学習連携用ノード 【AI-Addon】

2.10.1. ice rapid ima classify

入力された画像データに対して画像版RAPID機械学習の分類機能により判定を行い、判定結果を出力するノードです。

2.10.1.1. 設定項目

画像版RAPID分類連携ノードではNode-REDフローの編集画面から以下の項目を設定可能です。設定が必須となる項目には設定画面上で*マークが表示されます。

RAPID Server
RAPID機械学習 Web API 接続設定ノードを追加または選択して、使用する接続設定を指定します。後述するice-rapid-ima-config設定ノードによる設定となります。必須項目となります。 configノードによる設定となります。
Project ID
実行したいモデルが設定されているプロジェクトのIDを指定します。 プロジェクトIDは画像版RAPID機械学習に 本項目は必須項目となります。
Model
RAPID機械学習で実行する分類モデルを指定します。本項目は必須項目となります。 テキストボックスによる入力となります。
Preprocess
RAPID機械学習で実行する前処理を指定します。本項目は省略が可能です。省略された場合、RAPID機械学習で前処理は実行されません。 テキストボックスによる入力となります。
Summary
RAPID機械学習で実行する後処理を指定します。本項目は省略が可能です。省略された場合、RAPID機械学習で後処理は実行されません。 テキストボックスによる入力となります。
Annotation
アノテーション画像出力タイプを”none”, “original”, “preprocess”から選択して設定可能です。”none”が選択された場合、RAPID機械学習 検知Web APIの入力に”annotation”引数を指定しません。このため、APIの出力にアノテーション画像が出力されません。デフォルトでは”none”が選択されています。 セレクトボックスによる入力となります。
Name
ノードの名前になります。本項目に設定された値がフロー編集GUI上のノードの名称として表示されます。省略された場合、Modelに入力された値がGUI上のノードの名称として表示されます。

2.10.1.2. メッセージ構造

2.10.1.2.1. 入力メッセージ

ice rapid ima classifyノードは1つの入力端子があり、以下の形式の入力をうけつけます。

{
  "_msgid":"メッセージID",
  "media_params" : {
      "image_type": "jpg/png"
  },
  "payload": 画像データ,
  ...(任意の情報)
}

msg.payload.image_typeはstring型で、以下の値のいずれかを設定可能です。

  • “jpg”
  • “png”

msg.payloadはmsg.media_params.image_typeで指定されたフォーマットの画像バイナリデータ(Buffer型)、または、Base64エンコードされた画像データ(string型)を受け付けます。 msg.payloadがstring型の場合、msg.payloadをbase64エンコードされた画像データであると見做し、base64デコードしてRAPID機械学習の分類Web APIに入力します。

2.10.1.2.2. 出力メッセージ

ice rapid ima classifyノードは以下のメッセージを出力します。 入力メッセージに含まれていたmsg.payload及びmsg.media_params以外の情報は出力オブジェクトの同じ階層に格納されて出力されます。

{
  ...(入力オブジェクトのmsg.payload以外のデータ),
  "payload": {
    "rapid_exec_type": "classify",
    "rapid_result": {
      "IMA_status": "<IMAのErrorコード>",
      "result":[ {
        "category": "<分類先カテゴリ名>",
        "confidence": "<分類先確信度>"
      }],
      "all_result": [
        {
          "cateogry": ["カテゴリ1","カテゴリ2",...,"カテゴリN"],
          "confidence": ["確信度1","確信度2",...,"確信度N"]
        }
      ]
    }
  }
}

2.10.1.3. 異常系

以下のようなケースで異常が発生します。異常発生時にはNode-REDエラー出力にエラーメッセージを出力します。 ICE Core上で本ノードを利用する場合には、ログファイルにNode-REDエラー出力が記録されるため、ログファイルからエラー発生状況を確認することが可能です。ログファイルの場所は設定一覧を確認下さい。

  • RAPID機械学習 分類Web APIのHTTP Responseのstatus codeが2xx以外の場合
    • ノードのIDおよび返却されたHTTPレスポンスコードとエラーメッセージ及びレスポンスボディがNode-REDエラー出力に出力されます。
    • レスポンスボディはUTF-8にエンコードして出力します。
    • HTTPレスポンスコードからRAPID機械学習と接続できない原因を判別して下さい。
  • 入力にmsg.payload及びmsg.media_params.image_typeが存在しない場合
    • その入力を破棄し、Node-REDエラー出力に入力が正しくない旨のエラーメッセージを出力します。
  • msg.media_params.image_typeが”jpg”,”png”以外の場合
    • その入力を破棄し、Node-REDエラー出力にimage_typeが正しくない旨のエラーメッセージを出力します。
  • 入力のmsg.payloadがstring型の時にbase64デコードができない不正なデータである場合
    • Node-REDエラー出力にbase64エンコードに失敗した旨のエラーメッセージを出力します。このエラーが発生した場合RAPID機械学習 分類Web APIに対するHTTP Requestを発行しません。
  • リクエスト先のRAPID機械学習が入力を処理できない場合
    • RAPID機械学習 分類Web APIの戻り値に含まれるIMA_statusが0以外の場合、RAPID機械学習は正常に入力を処理できなかったと判断し、エラーメッセージ及びIMA_statusがNode-REDエラー出力に出力されます。
    • IMA_statusの詳細な値と要因については画像版RAPID機械学習のマニュアルを参照下さい。

上記エラーにはエラーIDを割り当て、エラーメッセージに含めます。

また、RAPID機械学習 Web API接続設定ノード及びプロキシサーバ設定ノードの設定に不備がある場合、入力を全て破棄して、HTTPリクエストを送信しません。具体的に何が不備であるかは各設定ノードの異常系を参照ください。

2.10.2. ice rapid ima detect

入力された画像データに対して画像版RAPID機械学習の検知機能により判定を行い、判定結果を出力する機能です。 Node-REDフローに配置した画像版RAIPD分類連携ノードごとに実行するモデルを設定し、そのモデルによる検知結果をNode-REDフローに出力することができます。

画像版RAPID機械学習から得られる検知結果は、細かく分割された画像の各領域ごとの検知結果(カテゴリ名)及び各領域ごとの各カテゴリ名に対する確信度を含むJSONデータとなります。

提供するノード名はrapid ima detectとなります。IMAはIMage Analisysの略で、RAPID機械学習 画像解析の略称となります。

2.10.2.1. 設定項目

画像版RAPID検知連携ノードではNode-REDフローの編集画面から以下の項目を設定可能です。設定が必須となる項目には設定画面上で*マークが表示されます。

RAPID Server
RAPID機械学習 Web API 接続設定ノードを追加または選択して、使用する接続設定を指定します。後述するice-rapid-ima-config設定ノードによる設定となります。必須項目となります。 configノードによる設定となります。
Project ID
実行したいモデルが設定されているプロジェクトのIDを指定します。 プロジェクトIDは画像版RAPID機械学習に 本項目は必須項目となります。
Model
RAPID機械学習で実行する検知モデル名を指定します。本項目は必須項目となります。 テキストボックスによる入力となります。
Preprocess
RAPID機械学習で実行する前処理名を指定します。本項目は必須項目となります。 テキストボックスによる入力となります。
Summary
RAPID機械学習で実行する後処理名を指定します。本項目は省略が可能です。省略された場合、RAPID機械学習で後処理は実行されません。 テキストボックスによる入力となります。
Annotation
アノテーション画像出力タイプを”none”, “original”, “preprocess”から選択して設定可能です。”none”が選択された場合、RAPID機械学習 検知Web APIの入力に”annotation”引数を指定しません。このため、APIの出力にアノテーション画像が出力されません。デフォルトでは”none”が選択されています。 セレクトボックスによる入力となります。
Position
検知対象の画像領域を指定可能です。[x0, y0, x1, y1]のフォーマットで領域を指定してください。x0,y0,x1,y1はそれぞれ、左上x座標、y座標、右下x座標,y座標を表します。[],[]のように[]を”,”で区切り複数記述することで、複数の検知領域を指定可能です。この項目が設定された場合Preprocessで設定された前処理名に該当する前処理の一部の処理(”sliding_window”:画像の小領域への分割処理)は実行されなくなります。また、この項目は省略可能であり、その場合検知対象領域は前処理によって自動生成されます。 テキストボックスによる入力となります。
Name
ノードの名前になります。本項目に設定された値がフロー編集GUI上のノードの名称として表示されます。省略された場合、Modelに入力された値がGUI上のノードの名称として表示されます。

2.10.2.2. メッセージ構造

2.10.2.2.1. 入力メッセージ

ice rapid ima detectノードは1つの入力端子があり、Node-REDフローで他のノードとの接続を行うことで入力をすることが可能です。

入力されるペイロードは以下のフォーマットのJavaScriptオブジェクトを要求します。

{
  "_msgid":"メッセージID",
  "media_params" : {
      "image_type": "jpg/png"
  },
  "payload": 画像データ,
  ...(任意の情報)
}

msg.payload.image_typeはstring型で、以下の値のいずれかを設定可能です。

  • “jpg”
  • “png”

msg.payloadはmsg.media_params.image_typeで指定されたフォーマットの画像バイナリデータ(Buffer型)、または、Base64エンコードされた画像データ(string型)を受け付けます。

2.10.2.2.2. 出力メッセージ

ice rapid ima detectノードは以下のフォーマットでメッセージを出力します。

{
  ...(入力オブジェクトのmsg.payload以外のデータ),
  "payload": {
    "rapid_exec_type": "detect",
    "rapid_result": {
      "IMA_status": "<CLIのExitコード>",
      "result":[ {
        "position": [x0, y0, x1, y1],
        "category": "<検知結果カテゴリ名>",
        "confidence": "<検知結果確信度>"
      },...,{...}],
      "all_result": {
        "cateogry": ["カテゴリ1","カテゴリ2",...,"カテゴリN"],
        "result": [
          {
            "position": [x0, y0, x1, y1],
            "confidence": ["確信度1","確信度2",...,"確信度N"]
          },...,{...}
        ]
      },
      "annotation": [
        {
          "type": "jpeg",
          "data": "base64画像のバイトデータ"
        }
      ]
    }
  }
}

2.10.2.3. 異常系

以下のようなケースで異常が発生します。異常発生時にはNode-REDエラー出力にエラーメッセージを出力します。 ICE Core上で本ノードを利用する場合には、ログファイルにNode-REDエラー出力が記録されるため、ログファイルからエラー発生状況を確認することが可能です。ログファイルの場所は設定一覧を確認下さい。

  • RAPID機械学習 分類Web APIのHTTP Responseのstatus codeが2xx以外の場合
    • ノードのIDおよび返却されたHTTPレスポンスコードとエラーメッセージ及びレスポンスボディがNode-REDエラー出力に出力されます。
    • レスポンスボディはUTF-8にエンコードして出力します。
    • HTTPレスポンスコードからRAPID機械学習と接続できない原因を判別して下さい。
  • 入力にmsg.payload及びmsg.media_params.image_typeが存在しない場合
    • その入力を破棄し、Node-REDエラー出力に入力が正しくない旨のエラーメッセージを出力します。
  • msg.media_params.image_typeが”jpg”,”png”以外の場合
    • その入力を破棄し、Node-REDエラー出力にimage_typeが正しくない旨のエラーメッセージを出力します。
  • 入力のmsg.payloadがstring型の時にbase64デコードができない不正なデータである場合
    • Node-REDエラー出力にbase64エンコードに失敗した旨のエラーメッセージを出力します。このエラーが発生した場合RAPID機械学習 分類Web APIに対するHTTP Requestを発行しません。
  • リクエスト先のRAPID機械学習が入力を処理できない場合
    • RAPID機械学習 分類Web APIの戻り値に含まれるIMA_statusが0以外の場合、RAPID機械学習は正常に入力を処理できなかったと判断し、エラーメッセージ及びIMA_statusがNode-REDエラー出力に出力されます。
    • IMA_statusの詳細な値と要因については画像版RAPID機械学習のマニュアルを参照下さい。

上記エラーにはエラーIDを割り当て、エラーメッセージに含めます。

また、RAPID機械学習 Web API接続設定ノード及びプロキシサーバ設定ノードの設定に不備がある場合、入力を全て破棄して、HTTPリクエストを送信しません。具体的に何が不備であるかは各設定ノードの異常系を参照ください。

2.10.3. ice-rapid-ima-config

RAPID機械学習のWeb APIと接続するための設定および認証情報を設定するノードです。 本ノードはconfigノードとして提供され、RAPID機械学習連携ノード間で接続設定を共有することが可能です。

2.10.3.1. 設定項目

Hostname
RAPID機械学習が配置されたサーバのIPアドレス又はFQDNを設定します。ICE CoreとRAPID機械学習が同一サーバに配置されている場合には”localhost”での指定も可能です。本項目は必須項目となります。 テキストボックスによる入力となります。
Port
RAPID機械学習のWeb APIが待ち受けるポート番号を設定します。デフォルトでは80が入力されています。本項目は必須項目となります。 テキストボックスによる入力となります。
Enable SSL/TLS
HTTPSで接続する場合にチェックをします。デフォルトでは未チェックの状態となっています。チェックをした場合、HTTPSで接続が可能ですが、クライアント証明書によるクライントの認証はサポートしません。接続先のRAPID機械学習 Web APIがHTTPS接続をサポートしている場合にのみHTTPS接続が可能です。 チェックボックスによる入力となります。
CA Certificate
CA証明書のパスを入力します。この項目はEnable HTTPSでチェックをした場合にのみ表示され、設定が可能です。設定可能なCA証明書はpem形式となります。 テキストボックスによる入力となります。
Certificate
クライアント証明書のパスを入力します。この項目はEnable HTTPSでチェックをした場合にのみ表示され、設定が可能です。設定可能なCA証明書はpem形式となります。 テキストボックスによる入力となります。
Private Key
クライアントの秘密鍵ファイルのパスを入力します。この項目はEnable HTTPSでチェックをした場合にのみ表示され、設定が可能です。設定可能なCA証明書はpem形式となります。 テキストボックスによる入力となります。
Login ID
認証用のログインIDを入力します。画像版RAPID機械学習のWeb APIにはユーザIDとログインIDどちらでも認証が可能ですが、 本項目はログインIDのみ入力が可能です。ユーザIDを入力した場合、認証に失敗します。 本項目は必須項目となります。
Password
認証用のパスワードを入力します。 本項目は必須項目となります。
Max Connections
HTTPクライアントの最大コネクション数を指定します。 省略された場合、128として扱われます。 0の場合は既定値(128)が設定され、-1の場合は無制限になります。既定値は128です。
Request Timeout
リクエストがタイムアウトする時間をミリ秒単位で設定します。デフォルトでは60000が入力されています。必須項目となります。 テキストボックスによる入力となります。
Enable socket keepalive
接続のkeep aliveを可能とするかをチェックボックスで指定します。 既定ではオフとなっています。
Keepalive Delay
最後にソケットを使用してからキープアライブ実行するまでの時間をミリ秒で指定します。既定値は0(実行環境の設定に従う)です。 Enable socket keepaliveがチェックされた場合のみ表示されます。
Use Proxy
プロキシサーバを介してRAPID機械学習 Web APIにリクエストを送信するかどうかを指定できます。デフォルトでは未チェックの状態となっています。 チェックボックスによる入力となります。
Proxy Server
接続するプロキシサーバ設定をプロキシサーバ設定ノードを追加/選択することによって指定できます。本項目はUse Proxyにチェックされている場合にのみ表示されます。 configノードによる設定となります。
Name
ノードの名前になります。本項目に設定された値がフロー編集GUI上のノードの名称として表示されます。