فهم بيئة المستخدم على iOS

تعرَّف على كيفية استخدام Scene Semantics API في تطبيقاتك.

تتيح واجهة برمجة التطبيقات Scene Semantics API للمطوّرين فهم المشهد المحيط بالمستخدم من خلال توفير معلومات دلالية مستندة إلى نموذج تعلُّم الآلة في الوقت الفعلي. بالنظر إلى صورة لمشهد في الهواء الطلق، تعرض واجهة برمجة التطبيقات تصنيفًا لكل وحدة بكسل عبر مجموعة من الفئات الدلالية المفيدة، مثل السماء أو المبنى أو الشجرة أو الطريق أو الرصيف أو المركبة أو شخص أو غير ذلك. بالإضافة إلى تصنيفات البكسل، توفّر واجهة برمجة التطبيقات Scene Semantics API أيضًا قيم ثقة لكل تصنيف من وحدات البكسل وطريقة سهلة الاستخدام للاستعلام عن مدى انتشار تصنيف معيّن في المشهد الخارجي.

من اليمين إلى اليسار، أمثلة على صورة تم إدخالها والصورة الدلالية لتصنيفات وحدات البكسل وصورة الثقة المقابلة:

مثال على صورة إدخال وصورة دلالية وصورة ثقة دلالية

المتطلبات الأساسية

احرص على فهم مفاهيم الواقع المعزّز الأساسية. وكيفية ضبط جلسة ARCore قبل المتابعة.

تفعيل دلالات المشهد

في جلسة ARCore جديدة، تحقَّق مما إذا كان جهاز المستخدم يتوافق مع واجهة برمجة تطبيقات Scene Semantics API. بسبب قيود طاقة المعالجة، لا تتيح بعض الأجهزة المتوافقة مع ARCore استخدام واجهة برمجة التطبيقات Scene Semantics API.

لحفظ الموارد، يتم إيقاف Scene Semantics تلقائيًا على ARCore. عليك تفعيل الوضع الدلالي لكي يستخدم تطبيقك واجهة برمجة تطبيقات Scene Semantics API.

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
if ([self.garSession isSemanticModeSupported:GARSemanticModeEnabled]) {
    configuration.semanticMode = GARSemanticModeEnabled;
}

NSError *error;
[self.garSession setConfiguration:configuration error:&error];

الحصول على الصورة الدلالية

عند تفعيل دلالات المشهد، يمكن استرداد الصورة الدلالية. الصورة الدلالية هي صورة kCVPixelFormatType_OneComponent8، حيث تتوافق كل وحدة بكسل مع تصنيف دلالي محدّد من خلال GARSemanticLabel.

استخدِم GARFrame.semanticImage للحصول على الصورة الدلالية:

CVPixelBuffer semanticImage = garFrame.semanticImage;
if (semanticImage) {
    // Use the semantic image here
} else {
    // Semantic images are not available.
    // The output image may be missing for the first couple frames before the model has had a
    // chance to run yet.
}

يجب أن تتوفّر الصور الدلالية للإخراج بعد 1 إلى 3 إطارات تقريبًا من بداية الجلسة، حسب الجهاز.

الحصول على صورة الثقة

بالإضافة إلى الصورة الدلالية التي توفّر تصنيفًا لكل وحدة بكسل، توفّر واجهة برمجة التطبيقات أيضًا صورة ثقة لقيم الثقة المقابلة بالبكسل. صورة الثقة هي صورة kCVPixelFormatType_OneComponent8، حيث تتوافق كل وحدة بكسل مع قيمة في النطاق [0, 255]، وذلك مع الاحتمالية المرتبطة بالتصنيف الدلالي لكل وحدة بكسل.

استخدِم GARFrame.semanticConfidenceImage للحصول على صورة الثقة الدلالية:

CVPixelBuffer confidenceImage = garFrame.semanticConfidenceImage;
if (confidenceImage) {
    // Use the semantic image here
} else {
    // Semantic images are not available.
    // The output image may be missing for the first couple frames before the model has had a
    // chance to run yet.
}

يجب أن تكون الصور بدرجة دقة الإخراج متاحة بعد 1 إلى 3 إطارات تقريبًا من بداية الجلسة، حسب الجهاز.

إجراء طلب بحث عن أجزاء وحدات البكسل لتصنيف دلالي

يمكنك أيضًا الاستعلام عن جزء البكسل في الإطار الحالي الذي ينتمي إلى فئة معينة، مثل السماء. يعد هذا الاستعلام أكثر كفاءة من عرض الصورة الدلالية وإجراء بحث عن تصنيف معين بالبكسل. الكسر الذي يتم عرضه هو قيمة عائمة في النطاق [0.0, 1.0].

استخدام fractionForSemanticLabel: للحصول على الكسر لتصنيف معيّن:

// Ensure that semantic data is present for the GARFrame.
if (garFrame.semanticImage) {
    float fraction = [garFrame fractionForSemanticLabel:GARSemanticLabelSky];
}