このプロジェクトについて
## MediaPipe Unity プラグイン
これは、Unity(>= 2022.3)でMediaPipe(0.10.22)を使用するためのネイティブプラグインです。目標は、MediaPipeのC++ APIを1対1でC#に移植し、Unityから呼び出せるようにすることです。このアプローチは、ループ内で複数のAPIを呼び出す際にパフォーマンスを犠牲にする可能性がありますが、柔軟性を提供します。
### 特徴
- MediaPipeコードをC#で記述できます。
- Unity上でMediaPipeの公式ソリューションを実行できます。
- Unity上でカスタムの`Calculator`と`CalculatorGraph`を実行できます(特定の入出力タイプにはC++が必要な場合があります)。
### ハローワールドの例
```cs
using Mediapipe;
using UnityEngine;
public sealed class HelloWorld : MonoBehaviour
{
private const string _ConfigText = @"
input_stream: ""in""
output_stream: ""out""
node {
calculator: ""PassThroughCalculator""
input_stream: ""in""
output_stream: ""out1""
}
node {
calculator: ""PassThroughCalculator""
input_stream: ""out1""
output_stream: ""out""
}
";
private void Start()
{
using var graph = new CalculatorGraph(_ConfigText);
using var poller = graph.AddOutputStreamPoller<string>("out");
graph.StartRun();
for (var i = 0; i < 10; i++)
{
graph.AddPacketToInputStream("in", Packet.CreateStringAt("Hello World!", i));
}
graph.CloseInputStream("in");
var packet = new Packet<string>();
while (poller.Next(packet))
{
Debug.Log(packet.Get());
}
graph.WaitUntilDone();
}
}
```
より詳細な使用方法については、API概要またはチュートリアルを参照してください。
### インストール
リリースページからビルド済みパッケージをダウンロードします:
| ファイル | 内容 |
| --- | --- |
| MediaPipeUnityPlugin-all.zip | 必要なライブラリを含む全ソースコード。 |
| MediaPipeUnityPlugin-all-stripped.zip | 上記と同じですが、シンボルが削除されています。 |
| com.github.homuler.mediapipe-*.tgz | Unity Package Manager用のタールボールパッケージ。 |
| MediaPipeUnityPlugin.*.unitypackage | Unityパッケージファイル。 |
モバイルサンプルシーンには、必要なモデルとセットアップが含まれているため、`MediaPipeUnityPlugin-all.zip`または`-stripped.zip`を推奨します。
### プラグインの自作
ほとんどの場合、プラグインを自作する必要はありません。ビルド済みパッケージが機能しない場合のみ、ビルドガイドに従ってください。リポジトリには必要なライブラリやモデルが含まれていないため、クローンするにはビルドが必要です。
### パッケージのビルド
- **Unityパッケージ**:プロジェクトを開き、`Tools > Export Unitypackage`をクリックします。
- **タールボール**:`npm`をインストールし、`Packages/com.github.homuler.mediapipe`で`npm pack`を実行します。
### サポート対象プラットフォーム
GPUモードはmacOSとWindowsではサポートされていません。サポート対象プラットフォームには、Linux(x86_64)、macOS(x86_64/ARM64)、Windows(x86_64)、Android、iOS、WebGL(制限あり)が含まれます。
### サポート対象ソリューション
このプラグインは、いくつかのMediaPipeタスク用のC# APIを実装しています。以下を含みます:
- 物体検出
- 画像セグメンテーション
- 手のランドマーク検出
- ジェスチャー認識
- 顔検出
- 顔のランドマーク検出
- ポーズのランドマーク検出
- 音声分類
MediaPipeフレームワークを介したレガシーソリューションも利用可能ですが、サポートは終了しています。
### 使用方法
`.unitypackage`または`.tar.gz`を使用して、プラグインをプロジェクトにインポートします。
#### Androidに関する注意
Androidビルドの場合、APKに`libstdc++_shared.so`が含まれていることを確認してください。そうしないと`DllNotFoundException`がスローされます。`Assets/Plugins/Android`に配置するか、ビルド時に含めるためのGradleコードを追加してください。
#### サンプルアプリ
`Assets/MediaPipeUnity/Samples/Scenes`のサンプルシーンを確認してください。インスペクターで、適切な推論モード(CPUまたはGPU)とアセットローダータイプ(エディター用のローカル、デバイス用のStreamingAssets)を選択します。
### 技術的な制限
- このプラグインはネイティブライブラリを使用します。バグによりUnityEditorまたはアプリがクラッシュする可能性があります。Linux/macOSでは`SIGABRT`が処理されクラッシュを回避しますが、Windowsでは不可能です。
- GPU推論の場合、OpenGL Core APIはサポートされていません。PCスタンドアロンビルドではVulkanを使用してください。
### ライセンス
MITですが、一部のファイルは他のライセンス(MediaPipe Apache 2.0、emscripten MIT、FontAwesome)の下にあります。詳細はThird Party Noticesを参照してください。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.