প্রকল্প সম্পর্কে
## MediaPipe ইউনিটি প্লাগইন
এটি MediaPipe (0.10.22) ব্যবহারের জন্য একটি ইউনিটি (>= 2022.3) নেটিভ প্লাগইন। লক্ষ্য হল MediaPipe C++ API-কে একে একে C#-এ পোর্ট করা যাতে এটি ইউনিটি থেকে কল করা যায়। এই পদ্ধতিটি লুপে একাধিক API কল করার সময় কর্মক্ষমতা বিসর্জন দিতে পারে, তবে নমনীয়তা প্রদান করে।
### বৈশিষ্ট্য
- C#-এ MediaPipe কোড লিখুন।
- ইউনিটিতে 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` চালান।
### সমর্থিত প্ল্যাটফর্ম
macOS এবং Windows-এ GPU মোড সমর্থিত নয়। সমর্থিত প্ল্যাটফর্মগুলির মধ্যে রয়েছে Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS এবং WebGL (সীমাবদ্ধতা সহ)।
### সমর্থিত সমাধান
প্লাগইনটি বেশ কয়েকটি MediaPipe টাস্কের জন্য C# API প্রয়োগ করে, যার মধ্যে রয়েছে:
- অবজেক্ট ডিটেকশন
- ইমেজ সেগমেন্টেশন
- হ্যান্ড ল্যান্ডমার্ক ডিটেকশন
- জেসচার রিকগনিশন
- ফেস ডিটেকশন
- ফেস ল্যান্ডমার্ক ডিটেকশন
- পোজ ল্যান্ডমার্ক ডিটেকশন
- অডিও ক্লাসিফিকেশন
MediaPipe ফ্রেমওয়ার্কের মাধ্যমে লিগ্যাসি সমাধানও উপলব্ধ তবে তাদের সমর্থন শেষ হয়েছে।
### ব্যবহার
`.unitypackage` বা `.tar.gz` ব্যবহার করে আপনার প্রকল্পে প্লাগইনটি আমদানি করুন।
#### অ্যান্ড্রয়েড নোট
অ্যান্ড্রয়েড বিল্ডের জন্য, নিশ্চিত করুন যে `libstdc++_shared.so` আপনার APK-তে অন্তর্ভুক্ত রয়েছে, অন্যথায় `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)। বিস্তারিত জানতে থার্ড পার্টি নোটিশ দেখুন।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.