ailia SDK チュートリアル (C#)
ailia SDKをVisual StudioとC#から使用する方法を解説します。C#で開発された業務アプリなどに簡単にAI機能を取り込むことが可能です。
プロジェクトファイルのダウンロード
ailia SDKをVisual StudioとC#から使用するサンプルは下記のgithubに公開しています。git cloneするか、ダウンロードしてください。
https://github.com/ailia-ai/ailia-csharp

ailia-csharpのリポジトリ
ailia SDKのダウンロード
実行に必要なDLLを取得するため、ailia SDKをダウンロードします。
プロジェクトファイルのビルド
ailia-csharp.slnを開き、Active PlatformをAny CPUからx64に変更してビルドします。

Active Platformの変更
ailia SDKに含まれるailia.dllを/ailia-csharp/ailia-csharp/bin/x64/Debugにコピーします。

DLLのコピー
評価版の場合はライセンスファイルも同じフォルダにコピーします。
プロジェクトの実行
プロジェクトを実行すると、YOLOXとFaceMeshを実行可能です。デフォルトではCPUで推論します。

yoloxの実行結果

facemeshの実行結果
GPUを使用する場合は、ailia.dllだけでなく、ailia_vulkan.dllもコピーし、AiliaYoloxSample.csとAiliaFaceMeshSample.csのgpu_mode変数をtrueにしてください。
Unity向けのC#とVisualStudio向けのC#の違い
API
VisualStudioのC#向けには、alia SDKのUnity向けに提供している、C#のLowLevel APIとModel Classがそのまま使用可能です。
ailia: ailia Unity Plugin DocumentEdit descriptionailia-ai.github.io
C#のインタフェース定義ファイル
Visual StudioのC#でも、ailia SDKに含まれるUnity向けのインタフェース定義ファイルをそのまま使用可能です。ailia SDKに含まれるUnity向けの定義ファイルと同じものが、サンプルプロジェクトの下記に含まれています。
https://github.com/ailia-ai/ailia-csharp/tree/main/ailia-csharp/ailia-csharp/ailia
Unityの互換関数
ailiaのUnity向けのインタフェース定義では、UnityEngine名前空間と、Debug、Color32、Vector2、Mathfなど、 一部のC#非標準の関数を使用しています。これらの関数を定義するAiliaMigrattion.csを用意しています。
https://github.com/ailia-ai/ailia-csharp/blob/main/ailia-csharp/ailia-csharp/ailia/AiliaMigration.cs
画像の並び順
Unityでは画像をB2T(Bottom To Top)で扱います。C#のBitmapクラスはT2B(Top to Bottom)で扱うため、ailia SDKのUnity向けのサンプルで扱うには上下を反転する必要があります。
ailia MODELS Unityについて
ailia MODELS UnityのコードはUnityのレンダラーおよびテクスチャに依存しているため、レンダラー部分をBitmapのGraphics、テクスチャをBitmapに置き換える必要があります。サンプルプロジェクトでは、YOLOXとFaceMeshにおいて、レンダラーをGraphicsに置き換えたバージョンを提供していますので、書き換える箇所の参考にしていただければと思います。
アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。
ailia Tech BLOG