ailia  1.4.0.0
クラス | マクロ定義 | 型定義 | 関数
ailia_detector.h ファイル

AILIA 物体検出ライブラリ [詳解]

#include "ailia.h"
#include "ailia_format.h"
ailia_detector.h の依存先関係図:

[ソースコード]

クラス

struct  _AILIADetectorObject
 

マクロ定義

#define AILIA_DETECTOR_OBJECT_VERSION   (1)
 
#define AILIA_DETECTOR_ALGORITHM_YOLOV1   (0)
 
#define AILIA_DETECTOR_ALGORITHM_YOLOV2   (1)
 
#define AILIA_DETECTOR_ALGORITHM_YOLOV3   (2)
 
#define AILIA_DETECTOR_ALGORITHM_YOLOV4   (3)
 
#define AILIA_DETECTOR_ALGORITHM_YOLOX   (4)
 
#define AILIA_DETECTOR_ALGORITHM_SSD   (8)
 
#define AILIA_DETECTOR_FLAG_NORMAL   (0)
 

型定義

typedef struct _AILIADetectorObject AILIADetectorObject
 

関数

int AILIA_API ailiaCreateDetector (struct AILIADetector **detector, struct AILIANetwork *net, unsigned int format, unsigned int channel, unsigned int range, unsigned int algorithm, unsigned int category_count, unsigned int flags)
 検出オブジェクトを作成します。 [詳解]
 
void AILIA_API ailiaDestroyDetector (struct AILIADetector *detector)
 検出オブジェクトを破棄します。 [詳解]
 
int AILIA_API ailiaDetectorCompute (struct AILIADetector *detector, const void *src, unsigned int src_stride, unsigned int src_width, unsigned int src_height, unsigned int src_format, float threshold, float iou)
 物体検出を行います。 [詳解]
 
int AILIA_API ailiaDetectorGetObjectCount (struct AILIADetector *detector, unsigned int *obj_count)
 検出結果の数を取得します。 [詳解]
 
int AILIA_API ailiaDetectorGetObject (struct AILIADetector *detector, AILIADetectorObject *obj, unsigned int obj_idx, unsigned int version)
 検出結果を取得します。 [詳解]
 
int AILIA_API ailiaDetectorSetAnchors (struct AILIADetector *detector, float *anchors, unsigned int anchors_count)
 YoloV2などのためにアンカーズ (anchorsまたはbiases) の情報を設定します。 [詳解]
 
int AILIA_API ailiaDetectorSetInputShape (struct AILIADetector *detector, unsigned int input_width, unsigned int input_height)
 YoloV3またはYoloXでのモデルへの入力画像サイズを指定します。 [詳解]
 

詳解

AILIA 物体検出ライブラリ

日付
2021/07/28

マクロ定義詳解

◆ AILIA_DETECTOR_ALGORITHM_SSD

#define AILIA_DETECTOR_ALGORITHM_SSD   (8)

◆ AILIA_DETECTOR_ALGORITHM_YOLOV1

#define AILIA_DETECTOR_ALGORITHM_YOLOV1   (0)

◆ AILIA_DETECTOR_ALGORITHM_YOLOV2

#define AILIA_DETECTOR_ALGORITHM_YOLOV2   (1)

◆ AILIA_DETECTOR_ALGORITHM_YOLOV3

#define AILIA_DETECTOR_ALGORITHM_YOLOV3   (2)

◆ AILIA_DETECTOR_ALGORITHM_YOLOV4

#define AILIA_DETECTOR_ALGORITHM_YOLOV4   (3)

◆ AILIA_DETECTOR_ALGORITHM_YOLOX

#define AILIA_DETECTOR_ALGORITHM_YOLOX   (4)

◆ AILIA_DETECTOR_FLAG_NORMAL

#define AILIA_DETECTOR_FLAG_NORMAL   (0)

◆ AILIA_DETECTOR_OBJECT_VERSION

#define AILIA_DETECTOR_OBJECT_VERSION   (1)

型定義詳解

◆ AILIADetectorObject

関数詳解

◆ ailiaCreateDetector()

int AILIA_API ailiaCreateDetector ( struct AILIADetector **  detector,
struct AILIANetwork *  net,
unsigned int  format,
unsigned int  channel,
unsigned int  range,
unsigned int  algorithm,
unsigned int  category_count,
unsigned int  flags 
)

検出オブジェクトを作成します。

引数
detector検出オブジェクトポインタ
netネットワークオブジェクトポインタ
formatネットワークの画像フォーマット (AILIA_NETWORK_IMAGE_FORMAT_*)
channelネットワークの画像チャンネル (AILIA_NETWORK_IMAGE_CHANNEL_*)
rangeネットワークの画像レンジ (AILIA_NETWORK_IMAGE_RANGE_*)
algorithm検出アルゴリズム(AILIA_DETECTOR_ALGORITHM_*)
category_count検出カテゴリ数(VOCの場合は20、COCOの場合は80、などを指定)
flags追加オプションフラグ(AILIA_DETECTOR_FLAG_*)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaDestroyDetector()

void AILIA_API ailiaDestroyDetector ( struct AILIADetector *  detector)

検出オブジェクトを破棄します。

引数
detector検出オブジェクトポインタ

◆ ailiaDetectorCompute()

int AILIA_API ailiaDetectorCompute ( struct AILIADetector *  detector,
const void *  src,
unsigned int  src_stride,
unsigned int  src_width,
unsigned int  src_height,
unsigned int  src_format,
float  threshold,
float  iou 
)

物体検出を行います。

引数
detector検出オブジェクトポインタ
src画像データ(32bpp)
src_stride1ラインのバイト数
src_width画像幅
src_height画像高さ
src_format画像フォーマット (AILIA_IMAGE_FORMAT_*)
threshold検出しきい値(0.1f等)(小さいほど検出されやすくなり、検出数増加)
iou重複除外しきい値(0.45f等)(小さいほど重複を許容せず検出数減少)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaDetectorGetObject()

int AILIA_API ailiaDetectorGetObject ( struct AILIADetector *  detector,
AILIADetectorObject obj,
unsigned int  obj_idx,
unsigned int  version 
)

検出結果を取得します。

引数
detector検出オブジェクトポインタ
objオブジェクト情報
obj_idxオブジェクトインデックス
versionAILIA_DETECTOR_OBJECT_VERSION
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ailiaDetectorCompute() を一度も実行していない場合は AILIA_STATUS_INVALID_STATE が返ります。 検出結果は推定確率順でソートされます。

◆ ailiaDetectorGetObjectCount()

int AILIA_API ailiaDetectorGetObjectCount ( struct AILIADetector *  detector,
unsigned int *  obj_count 
)

検出結果の数を取得します。

引数
detector検出オブジェクトポインタ
obj_countオブジェクト数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaDetectorSetAnchors()

int AILIA_API ailiaDetectorSetAnchors ( struct AILIADetector *  detector,
float *  anchors,
unsigned int  anchors_count 
)

YoloV2などのためにアンカーズ (anchorsまたはbiases) の情報を設定します。

引数
detector検出オブジェクトポインタ
anchorsアンカーズの寸法 (検出ボックスの形状、高さと幅)
anchors_countアンカーズの数 (anchorsの配列サイズの半分)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

YoloV2などは学習時に決定された複数の検出ボックスを使用して物体検出を行います。このAPIで学習時に決定された検出ボックスの形状を設定することで、正しい推論を行います。 anchorsには{x,y,x,y...}の形式で格納します。 anchors_countが5の場合、anchorsは10次元の配列になります。

◆ ailiaDetectorSetInputShape()

int AILIA_API ailiaDetectorSetInputShape ( struct AILIADetector *  detector,
unsigned int  input_width,
unsigned int  input_height 
)

YoloV3またはYoloXでのモデルへの入力画像サイズを指定します。

引数
detector検出オブジェクトポインタ
input_widthモデルの入力画像幅
input_heightモデルの入力画像高さ
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

YoloV3では単一のモデルが任意の入力解像度に対応します。(32 の倍数制限あり) YoloXでは単一のモデルが任意の入力解像度に対応します。 計算量の削減等でモデルへの入力画像サイズを指定する場合この API を実行してください。 ailiaCreateDetector() () と ailiaDetectorCompute() () の間に実行する必要があります。 この API を実行しない場合、デフォルトの 416x416 を利用します。 YOLOv3またはYOLOX 以外で実行した場合、 AILIA_STATUS_INVALID_STATE を返します。