---
title: "Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを公開しました。"
emoji: "📝"
type: "case_study"
topics: ["Unity", "開発/試作事例"]
published: true
published_at: "2024-02-13 17:00"
cover: "./20240209170543.jpg"
category: "case"
author: "山口"
description: "Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを公開しました。"
original_url: "https://blog.hololab.co.jp/entry/2024/02/13/170000"
---
ホロラボの杉浦です。

このたび、Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを公開しましたのでご紹介いたします。  
HoloLab DNN Packagesは以下のリポジトリで公開されています。

-   [https://github.com/HoloLabInc/HoloLabDnnPackages](https://github.com/HoloLabInc/HoloLabDnnPackages)

<figure><img src="./20240209170341.jpg" alt="HoloLab DNN Packages" loading="lazy"><figcaption>HoloLab DNN Packages</figcaption></figure>

# HoloLab DNN Packages

HoloLab DNN Packagesは[Unity Sentis](https://unity.com/ja/products/sentis)をベースにディープラーニングによる画像認識を実装したパッケージ集です。  
本パッケージには以下の特徴があります。

-   クラス分類（[MobileNet](https://pytorch.org/vision/main/models/mobilenetv3.html)など）やオブジェクト検出（[YOLOX](https://github.com/Megvii-BaseDetection/YOLOX)）などの画像認識が実装済みで手軽に利用できる
-   APIは画像を入力するだけで認識結果が出力されるため、面倒な前処理や後処理を記述する必要が無く簡単に利用できる
-   Unityがサポートする全てのプラットフォームにデプロイできるので、HoloLens 2やMagic Leap 2にも画像認識を組み込める
-   ONNXフォーマットの学習済みモデルを準備することで、目的の画像認識をアプリに組み込むことができる
-   Unity Package Managerを利用して簡単に自分のプロジェクトにセットアップできる
-   ライセンスはMIT License、ソースコードは公開されているので商用利用で扱いやすい

<figure><img src="./20240209170543.jpg" alt="クラス分類" loading="lazy"><figcaption>クラス分類</figcaption></figure>

<figure><img src="./20240209170601.jpg" alt="オブジェクト検出" loading="lazy"><figcaption>オブジェクト検出</figcaption></figure>

# セットアップ

HoloLab DNN Packagesをセットアップする方法を紹介します。

HoloLab DNN Packagesはベースとなる1つのパッケージと画像認識のタスクが実装されたいくつかのパッケージで構成されています。  
それぞれのタスクのパッケージはベースのパッケージに依存するので、ベースのパッケージとセットでインポートしてください。  
パッケージのURLはそれぞれのパッケージの[README](https://github.com/HoloLabInc/HoloLabDnnPackages/blob/main/README.md#packages)を参照してください。

1.  Unityのメニューから\[Window\]>\[Package Manager\]を開きます。
2.  Package Managerの左上にある\[+\]>\[Add package from git URL\]から利用したいパッケージのURLを入力します。
3.  \[Add\]ボタンを押してパッケージをプロジェクトに取り込みます。

<figure><img src="./20240209170412.jpg" alt="ベースパッケージの導入" loading="lazy"><figcaption>ベースパッケージの導入</figcaption></figure>

<figure><img src="./20240209170512.png" alt="タスクパッケージの導入" loading="lazy"><figcaption>タスクパッケージの導入</figcaption></figure>

# サンプル

HoloLab DNN Packagesのそれぞれのタスクのパッケージには直ぐに実行できる簡単なサンプルが含まれています。  
ここでは、サンプルの実行方法を簡単に紹介します。

1.  Unityのメニューから\[Window\]>\[Package Manager\]を開きます。
2.  Package Managerでタスクパッケージを選択します。
3.  右カラムの\[Samples\]タブを開き、サンプルの\[Import\]ボタンを押します。

<figure><img src="./20240209170714.png" alt="サンプルのインポート" loading="lazy"><figcaption>サンプルのインポート</figcaption></figure>

UnityのProjectウィンドウのSamplesフォルダにサンプルがインポートされます。  
Scenesフォルダに含まれているシーンに切り替え、Unityの\[Play\]ボタンを押して実行してください。

サンプルは画像とボタンが1つずつ配置されたシンプルな画面になっています。  
画像の下にある\[Inference\]ボタンを押すと推論が実行されて結果が表示されます。  
（初期化があるので初回の実行のみ少し時間が掛かる可能性があります。）

<figure><img src="./20240209170738.jpg" alt="サンプルの実行" loading="lazy"><figcaption>サンプルの実行</figcaption></figure>

# スクリプト

基本的に以下の流れで画像認識を実装できるようになっています。

1.  名前空間を参照する
    
    ```
     using Unity.Sentis;
     using HoloLab.DNN.Classification;
    ```
    
2.  クラスのインスタンスを作成する
    
    ```
     [SerializeField] private ModelAsset weights;
     var model = new ClassificationModel(weights);
    ```
    
3.  利用する学習済みモデルに合わせてパラメータを設定する
    
    ```
     model.SetApplySoftmax(true);
    ```
    
4.  メソッドに画像や閾値を渡して実行する
    
    ```
     (var class_id, var score) = model.Classify(texture);
    ```
    

このように、HoloLab DNN Packagesを利用することで、ユーザーはわずか数行の記述で目的の画像認識を実装することができます。  
スクリプトからの詳しい利用方法は、それぞれのサンプルのソースコードを参照してください。

# まとめ

Unityで手軽に使える画像認識パッケージのHoloLab DNN Packagesを紹介しました。  
HoloLab DNN Packagesを利用してアプリに画像認識を組み込んでみてください。
