ホロラボの杉浦です。
このたび、Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを公開しましたのでご紹介いたします。
HoloLab DNN Packagesは以下のリポジトリで公開されています。
HoloLab DNN Packages
HoloLab DNN PackagesはUnity Sentisをベースにディープラーニングによる画像認識を実装したパッケージ集です。
本パッケージには以下の特徴があります。
- クラス分類(MobileNetなど)やオブジェクト検出(YOLOX)などの画像認識が実装済みで手軽に利用できる
- APIは画像を入力するだけで認識結果が出力されるため、面倒な前処理や後処理を記述する必要が無く簡単に利用できる
- Unityがサポートする全てのプラットフォームにデプロイできるので、HoloLens 2やMagic Leap 2にも画像認識を組み込める
- ONNXフォーマットの学習済みモデルを準備することで、目的の画像認識をアプリに組み込むことができる
- Unity Package Managerを利用して簡単に自分のプロジェクトにセットアップできる
- ライセンスはMIT License、ソースコードは公開されているので商用利用で扱いやすい
セットアップ
HoloLab DNN Packagesをセットアップする方法を紹介します。
HoloLab DNN Packagesはベースとなる1つのパッケージと画像認識のタスクが実装されたいくつかのパッケージで構成されています。
それぞれのタスクのパッケージはベースのパッケージに依存するので、ベースのパッケージとセットでインポートしてください。
パッケージのURLはそれぞれのパッケージのREADMEを参照してください。
- Unityのメニューから[Window]>[Package Manager]を開きます。
- Package Managerの左上にある[+]>[Add package from git URL]から利用したいパッケージのURLを入力します。
- [Add]ボタンを押してパッケージをプロジェクトに取り込みます。
サンプル
HoloLab DNN Packagesのそれぞれのタスクのパッケージには直ぐに実行できる簡単なサンプルが含まれています。
ここでは、サンプルの実行方法を簡単に紹介します。
- Unityのメニューから[Window]>[Package Manager]を開きます。
- Package Managerでタスクパッケージを選択します。
- 右カラムの[Samples]タブを開き、サンプルの[Import]ボタンを押します。
UnityのProjectウィンドウのSamplesフォルダにサンプルがインポートされます。
Scenesフォルダに含まれているシーンに切り替え、Unityの[Play]ボタンを押して実行してください。
サンプルは画像とボタンが1つずつ配置されたシンプルな画面になっています。
画像の下にある[Inference]ボタンを押すと推論が実行されて結果が表示されます。
(初期化があるので初回の実行のみ少し時間が掛かる可能性があります。)
スクリプト
基本的に以下の流れで画像認識を実装できるようになっています。
名前空間を参照する
using Unity.Sentis; using HoloLab.DNN.Classification;
クラスのインスタンスを作成する
[SerializeField] private ModelAsset weights; var model = new ClassificationModel(weights);
利用する学習済みモデルに合わせてパラメータを設定する
model.SetApplySoftmax(true);
メソッドに画像や閾値を渡して実行する
(var class_id, var score) = model.Classify(texture);
このように、HoloLab DNN Packagesを利用することで、ユーザーはわずか数行の記述で目的の画像認識を実装することができます。
スクリプトからの詳しい利用方法は、それぞれのサンプルのソースコードを参照してください。
まとめ
Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを紹介しました。
HoloLab DNN Packagesを利用してアプリに画像認識を組み込んでみてください。