このプロジェクトについて

## 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を参照してください。