ailia SDK API解説(Predict API)

Kazuki Kyakuno
axinc
Published in
Feb 1, 2020

ailia SDKのコアAPIであるPredict APIの解説です。ailia SDKを利用することでディープラーニングの推論をGPUを使用して高速に行うことができます。ailia SDKについて詳しくはこちらをご覧ください。

Predict APIの概要

Predict APIはテンソルを入力してテンソルを出力する最も基本的なAPIです。1入力1出力のモデルだけでなく、複数入力・複数出力のモデルも扱うことができます。

1入力1出力を持つモデルの推論

CのAPIはlibrary/include/ailia.hに、PythonのAPIはpython/ailia/__init__.pyに、C#のAPIはunity/Assets/AILIA/Scripts/Models/AiliaModel.csに定義されています。

Predict APIを使用して1入力1出力のモデルを推論する流れです。

(1) ailiaCreateでインスタンス作成
(2) ailiaOpenStreamFileおよびailiaOpenWeightFileでモデルを読み込み
(3) ailiaGetInputShapeで入力形状を取得
(4) ailiaGetOutputShapeで出力形状を取得
(5) ailiaPredictに入出力テンソルのfloat配列を与えて推論
(6) ailiaDestroyでインスタンス解放

Cでのコード例です。CのAPIはC99で定義されています。C++はABIが標準化されておらず、異なるコンパイラを使用した場合に互換性の問題が発生するため、C99で定義しています。将来的に、C++用のラッパーのヘッダファイルでの提供を計画しています。

C#でのコード例です。C#ではAiliaModelクラスを使用します。ailiaCreate、ailiaOpenStreamFile、ailiaOpenWeightFileがAiliaModel.Openに統合されています。

Pythonでのコード例です。PythonではAilia.Netクラスを使用します。ailiaCreate、ailiaOpenStreamFile、ailiaOpenWeightFileがailia.Netのコンストラクタに統合されています。

複数の入出力を持つモデルの推論

複数の入出力のモデルを推論する流れです。

(1) ailiaCreateでインスタンス作成
(2) ailiaOpenStreamFileおよびailiaOpenWeightFileでモデルを読み込み
(3) ailiaFindBlobIndexByNameとailiaGetBlobShapeで入力形状を取得
(4) ailiaFindBlobIndexByNameとailiaGetBlobShapeで出力形状を取得
(5) ailiaSetInputBlobDataで入力テンソルのfloat配列を与える
(6) ailiaUpdateで推論
(7) ailiaGetBlobDataで出力テンソルのfloat配列を与えて推論結果を取得
(8) ailiaDestroyでインスタンス解放

C言語でのコード例です。

C#でのコード例です。C#による複数入出力はailia SDK 1.2.1からの対応となります。

Pythonでのコード例です。

バックエンドの選択

ailia SDKの現在のバージョンでは、AILIA_ENVIRONMENT_ID_AUTOを与えるとCPUで実行します。GPUを使用する場合、ailiaGetEnvironmentでGPUのenv_idを指定したあと、ailiaCreateにGPUのenv_idを与えてください。

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。

--

--

Kazuki Kyakuno
axinc
Editor for

CTO — ax Inc. , Managing Director — AXELL