| 
    WIL-PDL Reference ( C++ ) 1.0.5-gpu
    
   | 
 
WIL 推論ライブラリ ( C++ 版 ) More...
Data Structures | |
| struct | F_OD_RESULT | 
| 物体検出結果  More... | |
Typedefs | |
| typedef VOID * | H_MODEL | 
| モデルハンドル  More... | |
Enumerations | |
| enum | MODEL_BACKEND { OPENVINO = 0 , TENSORRT = 1 } | 
| 推論バックエンド  More... | |
| enum | MODEL_CATEGORY {  UNKNOWN = -1 , CLASSIFICATION = 0 , ANOMALY_DETECTION , MULTI_VIEW_CNN , MULTI_VIEW_AD , SEMANTIC_SEGMENTATION , PANOPTIC_SEGMENTATION , OBJECT_DETECTION }  | 
| モデルの種別  More... | |
| enum | OV_DEVICE { OV_DEVICE_CPU = 0x1 << 0 , OV_DEVICE_GPU = 0x1 << 1 } | 
| CPU 推論のデバイス種別  More... | |
Functions | |
| INT | fnPDL_check_license () | 
| ライセンス確認  More... | |
| H_MODEL * | fnPDL_create_handle () | 
| モデルハンドルの生成  More... | |
| INT FVALGAPI | fnPDL_set_cpu_device (H_MODEL hmodel, OV_DEVICE cpu_device) | 
| CPU 推論デバイスの設定  More... | |
| INT | fnPDL_load_model (const CHAR *filename, H_MODEL hmodel) | 
| モデルの読み込み  More... | |
| INT | fnPDL_save_optimized_model (const CHAR *filename, H_MODEL hmodel) | 
| 動作環境に最適化されたモデルの保存  More... | |
| INT | fnPDL_get_this_version (INT *major_version, INT *minor_version, INT *build_no, INT *revision) | 
| WIL-PDL のバージョンの取得  More... | |
| INT | fnPDL_get_required_version (const H_MODEL hmodel, INT *major_version, INT *minor_version, INT *build_no, INT *revision) | 
| モデルの要求するバージョンの取得  More... | |
| INT | fnPDL_check_version (const H_MODEL hmodel) | 
| モデルの要求するバージョンの確認  More... | |
| INT | fnPDL_get_model_category (const H_MODEL hmodel, MODEL_CATEGORY *model_category) | 
| モデルの種別の取得  More... | |
| INT | fnPDL_get_model_backend (const H_MODEL hmodel, MODEL_BACKEND *model_backend) | 
| モデルのバックエンドの取得  More... | |
| INT | fnPDL_get_input_image_size (const H_MODEL hmodel, INT *channels, INT *width, INT *height) | 
| モデルパラメータの取得  More... | |
| INT | fnPDL_get_how_many_views (const H_MODEL hmodel, INT *num_views) | 
| モデルパラメータの取得  More... | |
| INT | fnPDL_cls_get_label_num (const H_MODEL hmodel, INT *label_num) | 
| 画像分類ラベル数の取得  More... | |
| INT | fnPDL_cls_get_label_name (const H_MODEL hmodel, const INT label_index, const size_t buff_size, char *label_name_buff, size_t *len_label_name) | 
| 画像分類ラベル名称の取得  More... | |
| INT | fnPDL_set_panoptic_deeplab_infer_params (const H_MODEL hmodel, UINT stuff_area, DOUBLE threshold, INT nms_kernel, USHORT request_instance_num) | 
| Panoptic Segmentation の推論パラメータの設定  More... | |
| INT FVALGAPI | fnPDL_set_object_detection_params (const H_MODEL hmodel, DOUBLE conf_threshold, DOUBLE iou_threshold, UINT request_instance_num) | 
| 物体検出の推論パラメータの設定  More... | |
| INT | fnPDL_predict (const H_MODEL hmodel, const FHANDLE hsrc, FLOAT **scores, size_t *num_scores) | 
| 推論の実行  More... | |
| INT | fnPDL_predict_multi_images (const H_MODEL hmodel, const INT num_images, FHANDLE *hsrcs, FLOAT **scores, size_t *num_scores) | 
| 推論の実行 ( 多視点画像分類、多視点アノマリー検出 )  More... | |
| INT | fnPDL_predict_segmentation (const H_MODEL hmodel, const FHANDLE hsrc, FHANDLE hdst) | 
| 推論の実行 ( セグメンテーション )  More... | |
| INT FVALGAPI | fnPDL_predict_object_detection (const H_MODEL hmodel, const FHANDLE hsrc, F_OD_RESULT **detections, size_t *num_detections) | 
| 推論の実行 ( 物体検出 )  More... | |
| INT | fnPDL_postproc_cls (const H_MODEL hmodel, const FLOAT *scores, const size_t num_scores, UINT *top_score_index, FLOAT *top_score_value) | 
| 推論結果の加工 ( 画像分類, MVCNN )  More... | |
| INT | fnPDL_postproc_ad (const H_MODEL hmodel, const FLOAT *anomaly_data, const size_t num_scores, const FLOAT threshold, BOOL *is_anomaly, FHANDLE *hmap, FLOAT *max_anomaly) | 
| 推論結果の加工 ( アノマリー検出 )  More... | |
| VOID | fnPDL_dispose (H_MODEL hmodel) | 
| モデルハンドルの解放  More... | |
WIL 推論ライブラリ ( C++ 版 )
| typedef VOID* H_MODEL | 
モデルハンドル
推論に使用するモデルを管理するハンドルです。
| enum MODEL_BACKEND | 
推論バックエンド
推論を実行するバックエンドを表す列挙体です。
 種別によらず対応する推論関数、後処理の関数は共通です。
 AI 開発ツール FV-AID にてエクスポートする際に指定する "CPU推論" または "GPU推論" に対応します。
| Enumerator | |
|---|---|
| OPENVINO | Intel® OpenVINO™ による CPU 推論  | 
| TENSORRT | NVIDIA® TensorRT™ による GPU 推論  | 
| enum MODEL_CATEGORY | 
モデルの種別
モデルの種別を表す列挙体です。
 種別によって対応する推論関数 ( fnPDL_predict(), fnPDL_predict_multi_images(), fnPDL_predict_segmentation() )、後処理の関数 ( fnPDL_postproc_cls(), fnPDL_postproc_ad() ) が異なりますので、モデル読み込み後に確認することができます。
| enum OV_DEVICE | 
CPU 推論のデバイス種別
CPU 推論 ( MODEL_BACKEND.OPENVINO ) で使用するデバイスの種別を表す列挙体です。
| Enumerator | |
|---|---|
| OV_DEVICE_CPU | CPU 本体  | 
| OV_DEVICE_GPU | CPU の内臓 GPU  | 
| INT fnPDL_check_license | ( | ) | 
ライセンス確認
WIL-PDL オプションライブラリを使用するためのライセンスのチェックを行います。
| F_ERR_NONE | 正常終了 | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_check_version | ( | const H_MODEL | hmodel | ) | 
モデルの要求するバージョンの確認
読み込み済みのモデルハンドルが要求する WIL-PDL のバージョンを確認します。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| F_ERR_UNSUPPORTED | モデルの要求するバージョンを WIL-PDL のバージョンが満たさない | 
| INT fnPDL_cls_get_label_name | ( | const H_MODEL | hmodel, | 
| const INT | label_index, | ||
| const size_t | buff_size, | ||
| char * | label_name_buff, | ||
| size_t * | len_label_name | ||
| ) | 
画像分類ラベル名称の取得
label_index に対応する画像分類の学習時に設定した各ラベルの名称を取得します。
ラベル名称は、事前に確保されたバッファ領域 label_name_buff の先頭から書き込みます。書き込んだ文字数は len_label_name で返されます。確保したバッファサイズは buff_size で入力してください。
また、本関数は頻繁に ( 例えば推論を実行するたびに ) 呼び出されることは想定されておらず高速化されていませんので、モデル読み込みなどの初期化時に一度だけ呼び出しておくような使い方を推奨いたします。 推論を実行する前にラベルの個数を取得するためには fnPDL_cls_get_label_num() が使用できます
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | label_index | 名称を取得したいラベルのインデックス | 
| [in] | buff_size | label_name_buff として事前に確保したバッファサイズ | 
| [out] | label_name_buff | 取得したラベル名称が先頭から書き込まれます | 
| [out] | len_label_name | ラベル名称の文字数 | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_INDEX | label_index がラベル一覧の配列の範囲外 ( 負の場合、ラベル個数以上の場合 ) | 
| F_ERR_BUFFER_OVERFLOW | label_name_buff のバッファサイズがラベル名称の文字数以下 | 
| F_ERR_UNKNOWN | バッファへの文字列の書き込みに失敗した | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_cls_get_label_num | ( | const H_MODEL | hmodel, | 
| INT * | label_num | ||
| ) | 
画像分類ラベル数の取得
画像分類の学習時に設定したラベルの個数を取得します。 本関数で取得される個数は、推論時に返されるスコア配列の長さ ( fnPDL_predict() の num_scores ) に一致します。 事前にラベルの名称を取得する場合などに使用します。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | label_num | 学習時に設定したラベルの個数 | 
| F_ERR_NONE | 正常終了` | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| H_MODEL * fnPDL_create_handle | ( | ) | 
| VOID fnPDL_dispose | ( | H_MODEL | hmodel | ) | 
モデルハンドルの解放
読み込まれているモデルのリソースを解放します。解放後は NULL ハンドルとなります。
| [in] | hmodel | 解放したいモデルのハンドル | 
| INT fnPDL_get_how_many_views | ( | const H_MODEL | hmodel, | 
| INT * | num_views | ||
| ) | 
モデルパラメータの取得
読み込み済みのモデルハンドルが期待する視点数 ( 入力画像の枚数 ) を取得します。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | num_views | 期待する視点数 ( 入力画像の枚数 ) | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_get_input_image_size | ( | const H_MODEL | hmodel, | 
| INT * | channels, | ||
| INT * | width, | ||
| INT * | height | ||
| ) | 
モデルパラメータの取得
読み込み済みのモデルハンドルが期待する入力画像のチャネル数、幅、高さを取得します。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | channels,width,height | 期待する入力画像のチャネル数、幅、高さ | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_get_model_backend | ( | const H_MODEL | hmodel, | 
| MODEL_BACKEND * | model_backend | ||
| ) | 
モデルのバックエンドの取得
読み込み済みのモデルハンドルの推論バックエンドを取得します。
推論バックエンドは AI 開発ツールでの変換時に指定します。AI 開発ツールで指定するモードとの対応は次表の通りです。
 なお、GPU 推論対応以前のバージョン ( FV-AID 1.0.2.0 未満 ) で変更されたモデルでは、自動的に以前と同様の CPU 推論として扱われます。
| AI 開発ツールでの指定 | 推論バックエンド | 
|---|---|
| CPU 推論 | OPENVINO | 
| GPU 推論 | TENSORRT | 
本ライブラリでは推論バックエンドによらず共通の推論関数 ( fnPDL_predict(), fnPDL_predict_multi_images() ) を使用しますので必須ではありませんが、読み込んだモデルの内容を確認する際などにご利用いただくことが可能です。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | model_backend | モデルの推論バックエンド | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_get_model_category | ( | const H_MODEL | hmodel, | 
| MODEL_CATEGORY * | model_category | ||
| ) | 
モデルの種別の取得
読み込み済みのモデルハンドルの種別を取得します。
種別によって対応する推論関数 ( fnPDL_predict(), fnPDL_predict_multi_images(), fnPDL_predict_segmentation() )、後処理の関数 ( fnPDL_postproc_cls(), fnPDL_postproc_ad() ) が異なりますので、本関数で確認することが可能です。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | model_category | モデルの種別 | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_get_required_version | ( | const H_MODEL | hmodel, | 
| INT * | major_version, | ||
| INT * | minor_version, | ||
| INT * | build_no, | ||
| INT * | revision | ||
| ) | 
モデルの要求するバージョンの取得
読み込み済みのモデルハンドルが要求する WIL-PDL のバージョンを確認します。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [out] | major_version | 読み込んだモデルが要求するメジャーバージョン | 
| [out] | minor_version | 読み込んだモデルが要求するマイナーバージョン | 
| [out] | build_no | 読み込んだモデルが要求するビルド番号 | 
| [out] | revision | 読み込んだモデルが要求するリビジョン ( 機能には関係無いため必要条件ではありません ) | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_get_this_version | ( | INT * | major_version, | 
| INT * | minor_version, | ||
| INT * | build_no, | ||
| INT * | revision | ||
| ) | 
WIL-PDL のバージョンの取得
現在実行している WIL-PDL のバージョンを確認します。
| [out] | major_version | メジャーバージョン | 
| [out] | minor_version | マイナーバージョン | 
| [out] | build_no | ビルド番号 | 
| [out] | revision | リビジョン | 
| F_ERR_NONE | 正常終了 | 
| INT fnPDL_load_model | ( | const CHAR * | filename, | 
| H_MODEL | hmodel | ||
| ) | 
モデルの読み込み
ファイル名で指定されたモデルを読み込みます。AI 開発ツールでインライン用に変換されたモデルを受け付けます。
| [in] | filename | 読み込むモデルのファイル名 ( フルパス又は相対パス、拡張子は .wilpdl )  | 
| [out] | hmodel | 読み込んだモデルのハンドル ( 読み込みに失敗したときには NULL が返されます ) | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_FILE_IO | モデルファイルのアクセスエラー ( 拡張子の不一致を含む ) | 
| F_ERR_NOMEMORY | メモリ確保の失敗 | 
| F_ERR_NOT_SUPPORTED | CPU 推論で OpenVINO のサポートしないデバイスを指定されたとき、または GPU 推論で TensorRT ( CUDA ) のサポートしないデバイスを指定されたとき | 
| F_ERR_INVALID_OBJECT | その他の失敗 ( 特に CPU 推論のときにデバイスを認識しているがモデルを展開できなかったときも含まれます、その際にはデバイス指定 ( CPU と内蔵 GPU ) の変更もご検討ください ) | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_postproc_ad | ( | const H_MODEL | hmodel, | 
| const FLOAT * | anomaly_data, | ||
| const size_t | num_scores, | ||
| const FLOAT | threshold, | ||
| BOOL * | is_anomaly, | ||
| FHANDLE * | hmap, | ||
| FLOAT * | max_anomaly | ||
| ) | 
推論結果の加工 ( アノマリー検出 )
fnPDL_predict() または fnPDL_predict_multi_images() で得られた結果に対して、アノマリー検出における後処理を行います。
引数に NULL を与えることで計算をスキップします。以下の 3 つが全て NULL の場合は F_ERR_INVALID_PARAM を返します。
また、hmap は推論画像と幅、大きさの一致したチャネル数が 1 の画像である必要があります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | anomaly_data | 推論結果データ | 
| [in] | num_scores | 推論結果データの配列長 | 
| [in] | threshold | 異常度の閾値 ( 画像単位での異常度がこの値より大きいときに異常と判定します ) | 
| [out] | is_anomaly | 異常判定結果、異常と判定したときに true を返します ( threshold に NULL 指定時は判定をスキップします ) | 
| [out] | hmap | 異常度マップ画像 ( NULL 指定時は計算をスキップします ) | 
| [out] | max_anomaly | 画像内での最大異常度、この値を画像単位での異常度として is_anomaly の判定に使用します ( NULL 指定時は計算をスキップします ) | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された | 
| F_ERR_INVALID_IMAGE | 異常度マップ画像のサイズが一致しない | 
| F_ERR_INVALID_PARAM | 不正なパラメータが渡された ( threshold, hmap, max_anomaly が全ての計算をスキップするパラメータのとき ) | 
| F_ERR_NOMEMORY | メモリ確保に失敗した | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_postproc_cls | ( | const H_MODEL | hmodel, | 
| const FLOAT * | scores, | ||
| const size_t | num_scores, | ||
| UINT * | top_score_index, | ||
| FLOAT * | top_score_value | ||
| ) | 
推論結果の加工 ( 画像分類, MVCNN )
fnPDL_predict() または fnPDL_predict_multi_images() で得られた結果に対して、画像分類における後処理を行います。 スコア配列から分類結果として次のものを取得することが可能です。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | scores | 推論結果データ | 
| [in] | num_scores | 推論結果データの配列長 | 
| [out] | top_class_index | スコア最大のクラスのインデックス ( 分類結果 ) | 
| [out] | top_class_score | 最大スコア | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された、または num_scores がゼロ以下、スコア最大値が負 ( scores が不正 ) | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_predict | ( | const H_MODEL | hmodel, | 
| const FHANDLE | hsrc, | ||
| FLOAT ** | scores, | ||
| size_t * | num_scores | ||
| ) | 
推論の実行
読み込み済みのモデルハンドルを使用して入力画像に対する推論を行い、推論結果のスコア配列を scores から出力します。
 この関数は画像分類とアノマリー検出のモデルの推論に使用します。多視点画像分類と多視点アノマリー検出のモデルの推論には fnPDL_predict_multi_images() をご利用ください。セグメンテーションのモデルの推論には fnPDL_predict_segmentation() をご利用ください。
スコア配列 scores は内部確保されます。関数へのエントリー時 *scores は NULL である必要があります。使用し終えたメモリは、fnOAL_free() で解放してください。
 事前確保済みのメモリを使用することもできます。その際には、確保した配列長 ( float としての配列長 ) を num_scores から入力します。 入力された配列長が必要なサイズに一致しないときには F_ERR_INVALID_PARAM のエラーコードを返します。 事前確保済みのメモリを使用するシナリオとしては、同じモデルハンドルで推論する際に初回の推論で内部確保されたメモリを 2 回目以降に使い回すことを想定しています。
得られたスコア配列は次の後処理に利用することが可能です。
推論対象の画像は、幅と高さが fnPDL_get_input_image_size() で取得されるパラメータに一致していることが必要です。 また、チャネル数と画像型は以下の組み合わせである必要があります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | hsrc | 推論対象の画像 | 
| [out] | scores | 各クラスのスコアのリスト ( 関数へのエントリー時 *scores は NULL であることが必要、または事前確保済みのメモリを使用する場合には num_scores に float としての配列長を入力 ) | 
| [out] | num_scores | スコアのリストの長さ | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された ( 読み込まれていない、または種別が画像分類・アノマリー検出以外 ) | 
| F_ERR_INVALID_PARAM | スコア配列に事前確保済みメモリが渡されたが num_scores で渡された float としての配列長が必要なサイズに一致しない | 
| F_ERR_INVALID_IMAGE | 不正な入力画像が渡された ( チャネル数、幅、高さ、画像型 ) | 
| F_ERR_NOMEMORY | メモリ確保に失敗した | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_predict_multi_images | ( | const H_MODEL | hmodel, | 
| const INT | num_images, | ||
| FHANDLE * | hsrcs, | ||
| FLOAT ** | scores, | ||
| size_t * | num_scores | ||
| ) | 
推論の実行 ( 多視点画像分類、多視点アノマリー検出 )
読み込み済みのモデルハンドルを使用して複数枚の入力画像に対する推論を行い、推論結果のスコア配列を scores から出力します。
 この関数は主に多視点画像分類及び多視点アノマリー検出のモデルの推論に使用します。セグメンテーションのモデルの推論には fnPDL_predict_segmentation() をご利用ください。
スコア配列 scores は内部確保されます。関数へのエントリー時 *scores は NULL である必要があります。使用し終えたメモリは、fnOAL_free() で解放してください。
 事前確保済みのメモリを使用することもできます。その際には、確保した配列長 ( float としての配列長 ) を num_scores から入力します。 入力された配列長が必要なサイズに一致しないときには F_ERR_INVALID_PARAM のエラーコードを返します。 事前確保済みのメモリを使用するシナリオとしては、同じモデルハンドルで推論する際に初回の推論で内部確保されたメモリを 2 回目以降に使い回すことを想定しています。
多視点画像分類及び多視点アノマリー検出のモデルの推論では、任意の枚数の画像を配列として入力することができます。 このとき、画像枚数は num_images にて指定し、その値はモデルの視点数に一致している必要があります。
 通常の ( 多視点でない ) 画像分類とアノマリー検出のモデルの推論にも使用することが可能ですが、num_images は 1 である必要があり、先頭の画像のみを参照して、 fnPDL_predict() を呼び出します。
得られたスコア配列は次の後処理に利用することが可能です。
推論対象の画像は、幅と高さが fnPDL_get_input_image_size() で取得されるパラメータに一致していることが必要です。また、チャネル数と画像型は以下の組み合わせである必要があります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | nun_images | 推論対象画像の枚数 | 
| [in] | hsrcs | 推論対象画像の配列の先頭アドレス | 
| [out] | scores | 各クラスのスコアのリスト | 
| [out] | num_scores | スコアのリストの長さ | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された ( 読み込まれていない、または種別が画像分類・アノマリー検出・多視点画像分類・多視点アノマリー検出でない ) | 
| F_ERR_INVALID_PARAM | スコア配列に事前確保済みメモリが渡されたが num_scores で渡された float としての配列長が必要なサイズに一致しない | 
| F_ERR_INVALID_PARAM | 不正なパラメータが渡された ( num_images がモデルの視点数に一致しない ) | 
| F_ERR_INVALID_IMAGE | 不正な入力画像が渡された ( チャネル数、幅、高さ、画像型 ) | 
| F_ERR_NOMEMORY | メモリ確保に失敗した | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT FVALGAPI fnPDL_predict_object_detection | ( | const H_MODEL | hmodel, | 
| const FHANDLE | hsrc, | ||
| F_OD_RESULT ** | detections, | ||
| size_t * | num_detections | ||
| ) | 
推論の実行 ( 物体検出 )
読み込み済みのモデルハンドルを使用して入力画像に対する推論(物体検出)を行い、物体検出結果の配列を detections に出力します。
 この関数は物体検出のモデルの推論に使用します。 画像分類とアノマリー検出のモデルの推論には fnPDL_predict() をご利用ください。 多視点画像分類と多視点アノマリー検出のモデルの推論には fnPDL_predict_multi_images() をご利用ください。 セグメンテーションのモデルの推論には fnPDL_predict_segmentation() をご利用ください。
物体検出結果配列 detections は内部確保されます。関数へのエントリー時 *detections は NULL である必要があります。使用し終えたメモリは、fnOAL_free() で解放してください。
推論対象の画像は、幅と高さが fnPDL_get_input_image_size() で取得されるパラメータに一致していることが必要です。 また、チャネル数と画像型は以下の組み合わせである必要があります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | hsrc | 推論対象の画像 | 
| [out] | detections | 物体検出結果配列 ( 関数へのエントリー時 *detections は NULL であることが必要 ) | 
| [out] | num_detections | 物体検出結果配列の長さ | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された ( 読み込まれていない、または種別が物体検出以外 ) | 
| F_ERR_INVALID_PARAM | 不正なパラメータが渡された ( 物体検出結果配列に事前確保済みメモリが渡された、物体検出結果配列の長さに NULL が渡された ) | 
| F_ERR_INVALID_IMAGE | 不正な入力画像が渡された ( チャネル数、幅、高さ、画像型 ) | 
| F_ERR_NOMEMORY | メモリ確保に失敗した | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_predict_segmentation | ( | const H_MODEL | hmodel, | 
| const FHANDLE | hsrc, | ||
| FHANDLE | hdst | ||
| ) | 
推論の実行 ( セグメンテーション )
読み込み済みのモデルハンドルを使用して入力画像に対する推論を行い、推論結果を出力画像に出力します。
 この関数はセグメンテーションのモデルの推論に使用します。通常 ( 単視点 ) の画像分類とアノマリー検出のモデルの推論には fnPDL_predict() を、多視点画像分類と多視点アノマリー検出のモデルの推論には fnPDL_predict_multi_images() をご利用ください。
出力画像 hdst の 0 チャネル目の各画素にクラス番号を格納します。クラス番号は 0 番が背景に対応し、1 番以降が学習時の各ラベルの順番に対応します。
 パノプティックセグメンテーションでは 1 チャネル目の各画素にインスタンス番号を格納します。インスタンス番号は異なるものとして検出された対象物の通し番号に対応します。
 推論を 1 度実行する毎に出力画像の全画素が書き変わります。同じモデルハンドルで推論を繰り返す際には、前回の出力画像を使い回すことが可能です。
 出力画像のパラメータが以下の条件を満たさないときには F_ERR_INVALID_IMAGE のエラーコードを返します。確保される際には特にチャネル数と画像型にご注意ください。 
推論対象の画像となる入力画像 hsrc は、幅と高さが fnPDL_get_input_image_size() で取得されるパラメータに一致していることが必要です。また、チャネル数と画像型は以下の組み合わせである必要があります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | hsrc | 入力画像 | 
| [out] | hdst | 出力画像 | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 不正なモデルハンドルが渡された ( 読み込まれていない、または種別が画像分類・アノマリー検出・多視点画像分類・多視点アノマリー検出でない ) | 
| F_ERR_INVALID_IMAGE | 不正な入力画像または出力画像が渡された ( チャネル数、幅、高さ、画像型 ) | 
| F_ERR_NOMEMORY | メモリ確保に失敗した | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
| INT fnPDL_save_optimized_model | ( | const CHAR * | filename, | 
| H_MODEL | hmodel | ||
| ) | 
動作環境に最適化されたモデルの保存
読み込み済みのモデルを動作環境に最適化されたモデルとして保存します。
 ここで出力したファイルを使用することで、モデルの読み込み時間を短縮することができます。
最適化は動作環境 ( マシン ) に依存します。
 この関数で保存したモデルは別のマシンでは基本的には使用できません。最適化されたモデルの保存はマシン毎に行うようにお願いします。
現在、この機能は GPU 推論のモデルのみに対応しています。CPU 推論のモデルが入力されたときには、F_ERR_INVALID_OBJECT のエラーとなります。
| [in] | filename | 保存先のファイル名 ( フルパス又は相対パス、拡張子は .wilpdl )  | 
| [in] | hmodel | 読み込み済みのモデルのハンドル | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_FILE_IO | モデルファイルのアクセスエラー ( 拡張子の不一致を含む ) | 
| F_ERR_NOMEMORY | メモリ確保の失敗 | 
| F_ERR_INVALID_OBJECT | 未初期化または読み込み前のモデルハンドルが渡された、CPU 推論のモデルハンドルが渡された | 
| F_ERR_NO_LICENSE | ライセンスエラー、または未初期化エラー | 
CPU 推論デバイスの設定
モデルハンドルに対して CPU 推論を行うデバイスを設定します。
本関数による設定はモデルファイルを読み込むときに反映されます。 モデルファイルを読み込む前に設定を行うようにお願いします。
 読み込み済みのモデルに対して本関数によるデバイスの変更を行った際には、再度モデルファイルを読み込むことで変更が反映されます。
サポートされないデバイスが設定されたときには、モデルファイルを読み込む際に F_ERR_UNSUPPORTED のエラーコードとなります。 本関数ではエラーとなりませんので、ご注意ください。
| [in] | hmodel | モデルのハンドル | 
| [in] | cpu_device | CPU 推論を行うデバイス | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT FVALGAPI fnPDL_set_object_detection_params | ( | const H_MODEL | hmodel, | 
| DOUBLE | conf_threshold, | ||
| DOUBLE | iou_threshold, | ||
| UINT | request_instance_num | ||
| ) | 
物体検出の推論パラメータの設定
物体検出に固有の推論パラメータを設定します。
本関数による設定はモデルが読み込まれているかに依らず即座に反映されます。 モデルファイルの読み込みとの順序 ( 再度の読み込み ) は不要です。
パラメータの値が範囲外のときには、F_ERR_INVALID_PARAM のエラーコードとなります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | conf_threshold | スコアしきい値。値の範囲:0 以上 1 以下。初期値:0.25。 | 
| [in] | iou_threshold | Intersection over Union (IoU) しきい値。値の範囲:0 以上 1 以下。初期値:0.45 | 
| [in] | request_instance_num | 最大物体検出数。値の範囲:0 以上 ( 明示的に無効化したい場合には 0 を設定 )。初期値:0 | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_PARAM | 不正なパラメータが渡された | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| INT fnPDL_set_panoptic_deeplab_infer_params | ( | const H_MODEL | hmodel, | 
| UINT | stuff_area, | ||
| DOUBLE | threshold, | ||
| INT | nms_kernel, | ||
| USHORT | request_instance_num | ||
| ) | 
Panoptic Segmentation の推論パラメータの設定
パノプティックセグメンテーションに固有の検出パラメータを設定します。
パノプティックセグメンテーションでは、各画素がどのクラスに属するかの他に、物体の領域であるかを判断しています。 threshold と nms_kernel は物体の領域であるかのスコアに対する閾値と非極大抑制のパラメータです。
 また、request_instance_num はハフ検出やサーチなどと同様に、検出する最大数を設定するパラメータです。
本関数による設定はモデルが読み込まれているかに依らず即座に反映されます。 モデルファイルの読み込みとの順序 ( 再度の読み込み ) は不要です。
パラメータの値が範囲外のときには、F_ERR_INVALID_PARAM のエラーコードとなります。
| [in] | hmodel | 読み込んだモデルのハンドル | 
| [in] | stuff_area | モデルの出力クラスを採用する面積のしきい値(「物でない」クラス限定) この値未満の領域は、モデルの出力が「物でない」クラスであっても、unknown の領域とされる。 値の範囲:0 以上  | 
| [in] | threshold | 物体中心とみなすしきい値 値の範囲:0 以上 1 以下  | 
| [in] | nms_kernel | 物体中心の出現の頻度を抑制するカーネルの大きさ 値の範囲:1 以上の奇数で、入力画像の幅及び高さ以下  | 
| [in] | request_instance_num | 「物」クラスの最大出現数 スコアの高い順に指定された個数までに検出数を制限する 値の範囲:0 以上 ( 0 より大きく入力画像の幅と高さの積 ( 面積 ) 以下のときに有効、明示的に無効化したい場合には 0 を設定 )  | 
| F_ERR_NONE | 正常終了 | 
| F_ERR_INVALID_OBJECT | 未初期化のモデルハンドルが渡された | 
| F_ERR_INVALID_PARAM | パラメータが値の範囲以外 |