درک محیط کاربر در iOS

یاد بگیرید که چگونه از Scene Semantics API در برنامه های خود استفاده کنید.

Scene Semantics API به توسعه دهندگان این امکان را می دهد که صحنه اطراف کاربر را با ارائه اطلاعات معنایی زمان واقعی مبتنی بر مدل ML درک کنند. با توجه به تصویری از یک صحنه در فضای باز، API یک برچسب برای هر پیکسل در مجموعه ای از کلاس های معنایی مفید، مانند آسمان، ساختمان، درخت، جاده، پیاده رو، وسیله نقلیه، شخص و موارد دیگر برمی گرداند. علاوه بر برچسب‌های پیکسل، Scene Semantics API همچنین مقادیر اطمینان را برای هر برچسب پیکسل و روشی آسان برای پرس و جو در مورد شیوع یک برچسب معین در یک صحنه در فضای باز ارائه می‌دهد.

از چپ به راست، نمونه‌هایی از یک تصویر ورودی، تصویر معنایی برچسب‌های پیکسل و تصویر اطمینان مربوطه:

نمونه ای از تصویر ورودی، تصویر معنایی و تصویر اطمینان معنایی.

پیش نیازها

قبل از ادامه، مطمئن شوید که مفاهیم اساسی AR و نحوه پیکربندی یک جلسه ARCore را درک کرده اید.

Scene Semantics را فعال کنید

در جلسه 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];

تصویر معنایی را بدست آورید

هنگامی که Semantics صحنه فعال شد، تصویر معنایی را می توان بازیابی کرد. تصویر معنایی یک تصویر 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 فریم از شروع جلسه بسته به دستگاه در دسترس باشند.

تصویر اعتماد به نفس را بدست آورید

علاوه بر تصویر معنایی، که یک برچسب برای هر پیکسل ارائه می کند، API همچنین یک تصویر اطمینان از مقادیر اطمینان پیکسل مربوطه ارائه می دهد. تصویر اطمینان یک تصویر 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];
}