À propos du projet
## Plugin MediaPipe Unity
Ceci est un plugin natif Unity (>= 2022.3) pour utiliser MediaPipe (0.10.22). L'objectif est de porter l'API C++ de MediaPipe une par une vers C# afin qu'elle puisse être appelée depuis Unity. Cette approche peut sacrifier les performances lors de l'appel de plusieurs API dans une boucle, mais offre de la flexibilité.
### Fonctionnalités
- Écrire du code MediaPipe en C#.
- Exécuter les solutions officielles de MediaPipe sur Unity.
- Exécuter des `Calculator` et `CalculatorGraph` personnalisés sur Unity (peut nécessiter du C++ pour certains types d'entrée/sortie).
### Exemple Hello World
```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();
}
}
```
Pour une utilisation plus détaillée, consultez l'aperçu de l'API ou les tutoriels.
### Installation
Téléchargez le package pré-construit depuis la page des versions :
| fichier | contenu |
| --- | --- |
| MediaPipeUnityPlugin-all.zip | Tout le code source avec les bibliothèques requises. |
| MediaPipeUnityPlugin-all-stripped.zip | Identique à ci-dessus mais avec les symboles supprimés. |
| com.github.homuler.mediapipe-*.tgz | Package tarball pour Unity Package Manager. |
| MediaPipeUnityPlugin.*.unitypackage | Fichier de package Unity. |
Pour les scènes d'exemple mobiles, préférez `MediaPipeUnityPlugin-all.zip` ou `-stripped.zip` car ils incluent les modèles et la configuration requis.
### Construire le Plugin Vous-même
Dans la plupart des cas, vous n'avez pas besoin de construire le plugin vous-même. Seulement si le package pré-construit ne fonctionne pas, suivez le guide de construction. Le dépôt n'inclut pas les bibliothèques ou modèles requis, donc le clonage nécessite une construction.
### Construire un Package
- **Package Unity** : Ouvrez le projet, cliquez sur `Tools > Export Unitypackage`.
- **Tarball** : Installez `npm`, puis exécutez `npm pack` dans `Packages/com.github.homuler.mediapipe`.
### Plateformes Prises en Charge
Le mode GPU n'est pas pris en charge sur macOS et Windows. Les plateformes prises en charge incluent Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS et WebGL (avec des limitations).
### Solutions Prises en Charge
Le plugin implémente des API C# pour plusieurs tâches MediaPipe, notamment :
- Détection d'objets
- Segmentation d'images
- Détection de repères de main
- Reconnaissance de gestes
- Détection de visages
- Détection de repères faciaux
- Détection de repères de pose
- Classification audio
Les solutions héritées via le framework MediaPipe sont également disponibles mais leur support a pris fin.
### Utilisation
Importez le plugin dans votre projet en utilisant `.unitypackage` ou `.tar.gz`.
#### Note Android
Pour les builds Android, assurez-vous que `libstdc++_shared.so` est inclus dans votre APK, sinon une `DllNotFoundException` sera levée. Placez-le dans `Assets/Plugins/Android` ou ajoutez du code Gradle pour l'inclure au moment de la construction.
#### Application Exemple
Consultez les scènes d'exemple sous `Assets/MediaPipeUnity/Samples/Scenes`. Dans l'inspecteur, sélectionnez le mode d'inférence approprié (CPU ou GPU) et le type de chargeur d'actifs (Local pour l'éditeur, StreamingAssets pour les appareils).
### Limitations Techniques
- Le plugin utilise des bibliothèques natives ; des bugs peuvent faire planter UnityEditor ou l'application. Sur Linux/macOS, `SIGABRT` est géré pour éviter les plantages, mais sur Windows ce n'est pas possible.
- Pour l'inférence GPU, l'API OpenGL Core n'est pas prise en charge ; utilisez Vulkan sur les builds autonomes PC.
### Licence
MIT, avec certains fichiers sous d'autres licences (MediaPipe Apache 2.0, emscripten MIT, FontAwesome). Voir les avis tiers pour plus de détails.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.