منصوبے کے بارے میں
## MediaPipe یونٹی پلگ ان
یہ MediaPipe (0.10.22) استعمال کرنے کے لیے ایک یونٹی (>= 2022.3) نیٹیو پلگ ان ہے۔ مقصد MediaPipe C++ API کو ایک ایک کر کے C# میں منتقل کرنا ہے تاکہ اسے یونٹی سے بلایا جا سکے۔ یہ طریقہ لوپ میں متعدد APIs کو کال کرتے وقت کارکردگی کو قربان کر سکتا ہے، لیکن لچک فراہم کرتا ہے۔
### خصوصیات
- MediaPipe کوڈ C# میں لکھیں۔
- یونٹی پر MediaPipe کے سرکاری حل چلائیں۔
- یونٹی پر حسب مرضی `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 | یونٹی پیکج مینیجر کے لیے ٹاربال پیکج۔ |
| MediaPipeUnityPlugin.*.unitypackage | یونٹی پیکج فائل۔ |
موبائل نمونے کے مناظر کے لیے، `MediaPipeUnityPlugin-all.zip` یا `-stripped.zip` کو ترجیح دیں کیونکہ ان میں مطلوبہ ماڈل اور سیٹ اپ شامل ہیں۔
### پلگ ان خود بنانا
زیادہ تر معاملات میں، آپ کو پلگ ان خود بنانے کی ضرورت نہیں ہے۔ صرف اگر پہلے سے تیار شدہ پیکج کام نہ کرے، تو بلڈ گائیڈ پر عمل کریں۔ ریپوزٹری میں مطلوبہ لائبریریاں یا ماڈل شامل نہیں ہیں، اس لیے کلون کرنے پر بلڈ کرنا ضروری ہے۔
### پیکج بنانا
- **یونٹی پیکج**: پروجیکٹ کھولیں، `Tools > Export Unitypackage` پر کلک کریں۔
- **ٹاربال**: `npm` انسٹال کریں، پھر `Packages/com.github.homuler.mediapipe` میں `npm pack` چلائیں۔
### تعاون یافتہ پلیٹ فارمز
میک او ایس اور ونڈوز پر جی پی یو موڈ تعاون یافتہ نہیں ہے۔ تعاون یافتہ پلیٹ فارمز میں لینکس (x86_64)، میک او ایس (x86_64/ARM64)، ونڈوز (x86_64)، اینڈرائیڈ، آئی او ایس، اور ویب جی ایل (محدودیتوں کے ساتھ) شامل ہیں۔
### تعاون یافتہ حل
پلگ ان کئی MediaPipe ٹاسکس کے لیے C# APIs نافذ کرتا ہے، بشمول:
- آبجیکٹ کا پتہ لگانا
- تصویری تقسیم
- ہاتھ کے نشانات کا پتہ لگانا
- اشاروں کی شناخت
- چہرے کا پتہ لگانا
- چہرے کے نشانات کا پتہ لگانا
- پوز کے نشانات کا پتہ لگانا
- آڈیو درجہ بندی
MediaPipe فریم ورک کے ذریعے لیگیسی حل بھی دستیاب ہیں لیکن ان کی حمایت ختم ہو چکی ہے۔
### استعمال
اپنے پروجیکٹ میں `.unitypackage` یا `.tar.gz` استعمال کرکے پلگ ان درآمد کریں۔
#### اینڈرائیڈ نوٹ
اینڈرائیڈ بلڈز کے لیے، یقینی بنائیں کہ `libstdc++_shared.so` آپ کے APK میں شامل ہے، ورنہ `DllNotFoundException` پھینکا جائے گا۔ اسے `Assets/Plugins/Android` میں رکھیں یا بلڈ کے وقت شامل کرنے کے لیے گریڈل کوڈ شامل کریں۔
#### نمونہ ایپ
`Assets/MediaPipeUnity/Samples/Scenes` کے تحت نمونے کے مناظر دیکھیں۔ انسپکٹر میں، مناسب انفرنس موڈ (CPU یا GPU) اور اثاثہ لوڈر کی قسم (ایڈیٹر کے لیے لوکل، ڈیوائسز کے لیے اسٹریمنگ اسیٹس) منتخب کریں۔
### تکنیکی حدود
- پلگ ان نیٹیو لائبریریاں استعمال کرتا ہے؛ کیڑے یونٹی ایڈیٹر یا ایپ کو کریش کر سکتے ہیں۔ لینکس/میک او ایس پر، `SIGABRT` کو کریش سے بچنے کے لیے سنبھالا جاتا ہے، لیکن ونڈوز پر یہ ممکن نہیں ہے۔
- جی پی یو انفرنس کے لیے، اوپن جی ایل کور API تعاون یافتہ نہیں ہے؛ پی سی اسٹینڈ اسٹون بلڈز پر وولکن استعمال کریں۔
### لائسنس
MIT، کچھ فائلیں دیگر لائسنسوں کے تحت ہیں (MediaPipe Apache 2.0، emscripten MIT، FontAwesome)۔ تفصیلات کے لیے تھرڈ پارٹی نوٹس دیکھیں۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.