چگونه SmileID درستیسنجی هویت را با CameraX به بیشاز ۱۸٬۰۰۰ نوع دستگاه Android مقیاسبندی کرد
زمان خواندن: ۴ دقیقه
برنامههای درستیسنجی هویت برای امور بانکی و ثبت سیمکارت به عکسهای واضح و با وضوح بالا از چهره نیاز دارند تا بتوانند جعل هویت و جعل عمیق را تشخیص دهند. ضبط قابهایی که بهاندازه کافی برای بررسیهای زنده بودن و ضدجعل واضح باشند، بدون اینکه دستگاههای با حافظه کم ازکار بیفتند، چالشی رایج برای توسعهدهندگان دوربین Android است.
برای SmileID، یک کیت توسعه نرمافزار پیشرو درستیسنجی هویت در آفریقا، این چالش بهدلیل بومسازگان سختافزاری متنوع دوبرابر میشود. Android ۸۵٪ از سهم بازار دستگاههای هدف SmileID را تشکیل میدهد، ازجمله تلفنهای هوشمند سطح پایه با پردازندههای بسیار محدود، مدلهای منطقهای ناشناخته، و پایانههای فروش (POS) سفارشی مقاومشده.
SmileID پیشاز استفاده از CameraX با موانع مهندسی دوربین استاندارد اما دلهرهآوری مواجه بود: فیدهای پیشنمایش کشیدهشده، جهتهای حسگر چرخیدهشده، خرابیهای کمبود حافظه (OOM)، و اشکالهای سفارشی سازنده تجهیزات اصلی (OEM). SmileID با انتقال کیتهای توسعه نرمافزار Android اصلی خود به CameraX، این چالشها را به یک مزیت تجاری بزرگ تبدیل کرد.
طبق گفته SmileID، انتقال کیتهای توسعه نرمافزار Android آنها به CameraX نتایج زیر را بههمراه داشت:
| متریک | تأثیر انتقال به CameraX |
|---|---|
| رشد استفاده از کیت توسعه نرمافزار | ۲۰ برابر تا سال دوم (افزایش از ۲ تا ۳ برابر قبلاز CameraX) |
| نرخ قبولی درستیسنجی | ٪۲۰ افزایش برای برنامههایی که از کیتهای توسعه نرمافزار SmileID استفاده میکنند |
| وضوح ضبط | افزایش ۴ برابری در پیکسلهای سلفی/زنده بودن بدون سربار شبکه |
| سازگاری مدل دستگاه | بیشاز ۱۸٬۰۰۰ نوع دستگاه Android پشتیبانی میشود |
| کل درستیسنجیهای مقیاسبندیشده | بیشاز ۱۶۰ میلیون درستیسنجی هویت پردازش شده است |
چالش: سختافزار تکهتکه و دردسر API قدیمی
برای تأیید اینکه کاربر همان کسی است که ادعا میکند، کیت توسعه نرمافزار SmileID باید قابهای سلفی با وضوح بالا را برای بررسیهای زنده بودن دروندستگاهی و تشخیص جعل عمیق مبتنی بر ابر ضبط کند.
تحت پیادهسازیهای Camera1 قدیمی و Camera2 API سطح پایین، دستیابی به این امر بهطور مداوم به چند دلیل دشوار بود:
- سفارشیسازیها و ویژگیهای خاص OEM: دستگاههای سازندگان مختلف جهتهای حسگر دوربین فیزیکی را بهطور متفاوتی گزارش میکردند که منجر به پیشنمایشهای چرخیده یا ضبط چهره با جهت نادرست میشد.
- اعوجاج نسبت ابعادی: درخواست اندازه قاب خاص در دستگاههای ارزانقیمت اغلب باعث میشد پیشنمایش دوربین بهصورت عمودی یا افقی کشیده شود، چهره کاربر را دچار اعوجاج کند، و درستیسنجی زیستسنجشی را بیفایده کند.
- خرابیهای ناشی از کمبود حافظه (OOM): پردازش تصاویر خام با وضوح بالا در دستگاههایی با حافظه دسترسی تصادفی (RAM) کم (اغلب ۱ گیگابایت یا کمتر) مکرراً منجر به خرابیهای مهلک در تخصیص حافظه میشد.
بهدلیل این نقاط اصطکاک، رشد سالبهسال پذیرش کیت توسعه نرمافزار SmileID به ۲ تا ۳ برابر محدود شد و بسیاری از درستیسنجیها مجبور بودند بهجای اجرای بررسیهای زنده بودن همزمان در دستگاه، به بارگذاری عکسهای ثابت ازطریق میانای برنامهسازی کاربردی REST با تأخیر بالا برگردند.
راهحل: خطوط لوله سازگار با CameraX
SmileID کیتهای توسعه نرمافزار تلفن همراه خود را از ابتدا بااستفاده از CameraX بازطراحی کرد که بهطور خاص برای انتزاع پیچیدگی بومسازگان دستگاه زیربنایی و ارائه یک میانای توسعهدهنده سازگار و آگاه از چرخه حیات بومی ساخته شده است.
SmileID بااستفاده از موارد استفاده اصلی CameraX (بهویژه Preview و ImageAnalysis) یک خط لوله دوربین دومنظوره و قدرتمند ساخت:
- پیشنمایش: پیشنمایش همزمان و کاملاً متناسبی از فید دوربین را برای راهنمایی کاربر ارائه میدهد.
- ImageAnalysis: بهطور مداوم فریمها را بهصورت محلی و همزمان پردازش میکند تا تشخیص خودکار زنده بودن و چهره در قاب را اجرا کند و فریم سلفی درستیسنجیشده را استخراج کند.
برای ثبت جزئیات بسیار واضح برای تشخیص جعل عمیق بدون ایجاد ازکارافتادگیهای ناشی از کمبود حافظه، SmileID میانای برنامهسازی کاربردی مدرن ResolutionSelector CameraX را مستقیماً به پیکربندی ImageAnalysis خود اضافه کرد. این ویژگی به توسعهدهندگان امکان میدهد وضوح هدف را درخواست کنند و درصورتیکه دستگاه از آن اندازه دقیق پشتیبانی نکند، قانون بازگشت را انتخاب کنند. برای مثال، نمودار و پیکربندی نمونه زیر نشان میدهد که ResolutionSelector چگونه اندازههای نامزد را در اطراف هدف ۱۲۰۰×۹۰۰ ارزیابی میکند:
در اینجا کد نمونه مربوطه نشان میدهد که چگونه میتوانید ResolutionSelector را با STRATEGY_KEEP_ONLY_LATEST در برنامه خود جفت کنید (از FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER برای اولویتبندی وضوح یا FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER برای محدود کردن استفاده از حافظه استفاده کنید):
import android.util.Size import androidx.camera.core.CameraSelector import androidx.camera.core.ImageAnalysis import androidx.camera.core.Preview import androidx.camera.core.resolutionselector.AspectRatioStrategy import androidx.camera.core.resolutionselector.ResolutionSelector import androidx.camera.core.resolutionselector.ResolutionStrategy import androidx.camera.lifecycle.ProcessCameraProvider import androidx.lifecycle.LifecycleOwner fun configureCameraX(cameraProvider: ProcessCameraProvider, lifecycleOwner: LifecycleOwner, surfaceProvider: Preview.SurfaceProvider, executor: java.util.concurrent.Executor, analyzer: ImageAnalysis.Analyzer) { // 1. Define a resolution strategy requesting high quality (for example, 1200x900px) // and selecting the closest higher (or, if unavailable, lower) resolution. val resolutionSelector = ResolutionSelector.Builder() .setResolutionStrategy( ResolutionStrategy( Size(1200, 900), ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER ) ) .setAspectRatioStrategy(AspectRatioStrategy.RATIO_4_3_FALLBACK_AUTO_STRATEGY) .build() // 2. Configure the ImageAnalysis use case with the resolution selector // and a backpressure strategy that keeps the UI responsive on slow processors. val imageAnalysis = ImageAnalysis.Builder() .setResolutionSelector(resolutionSelector) // Drops older frames if the device's CPU is still busy analyzing the previous one .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() // 3. Set up the preview stream and attach the Analyzer and SurfaceProvider imageAnalysis.setAnalyzer(executor, analyzer) val preview = Preview.Builder().build().also { it.surfaceProvider = surfaceProvider } // 4. Bind both use cases concurrently to the lifecycle provider try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle( lifecycleOwner, CameraSelector.DEFAULT_FRONT_CAMERA, preview, imageAnalysis ) } catch (exc: Exception) { // Handle binding failure safely } }
SmileID با درخواست فریمهای پیکسل با تراکم بالا و پردازش محلی آنها، به افزایش ۴ برابری در وضوح سلفیهای گرفتهشده دست یافت. SmileID همچنین ناحیه برشخورده صورت را در دستگاه فشرده کرد تا اندازه بارگذاری شبکه با سیستم قبلی آنها یکسان بماند. این معماری دادههای دقیقتری را برای مدلهای یادگیری ماشین آنها تضمین کرد، بدون اینکه هزینههای داده تلفن همراه را برای کاربرانشان افزایش دهد.
نحوه حل تفاوتهای سختافزاری توسط CameraX
استانداردسازی در CameraX به این معنی بود که SmileID میتوانست به دو لایه مهندسی سازگاری تکیه کند تا SDK خود را در دستگاههای مختلف پایدار نگه دارد:
۱. آزمایشگاه تست دوربین و رسانه Google
سازگاری CameraX با درستیسنجی سختافزاری فیزیکی و مداوم پشتیبانی میشود. در آزمایشگاه تست رسانه و دوربین اختصاصی Google، یک مجموعه آزمون خودکارشده بهطور روزانه در یک ماتریس چرخشی عظیم از بیشاز ۱۹۰ مدل دستگاه Android فیزیکی اجرا میشود. این شامل دستگاههایی میشود که مجموعه تراشهها، نسخههای سیستمعامل، و قابلیتهای سختافزاری مختلفی دارند.
برای حرکت بهسمت رفتار سازگارتر در دستگاههای پرطرفدار، «آزمایشگاه آزمایش رسانه و دوربین» Google بهطور خودکار پسرفتهای کتابخانه را قبلاز اینکه بتوانند بر کد تولید شما تأثیر بگذارند، شناسایی میکند.
۲. راهحلهای خودکار برای مشکلات دستگاه
دستگاههای Android مختلف محدودیتهای فیزیکی متفاوتی دارند. برخیاز آنها ممکن است نتوانند تنظیمات نوردهی سفارشی را اعمال کنند، درحالیکه برخی دیگر ممکن است هنگام استفاده از نسبتهای ابعادی خاص، دادههای تصویر وارونه را گزارش کنند. برای جلوگیری از آلوده شدن پایگاههای کد توسعهدهندگان با بلوکهای شرطی پیچیده براساس سازنده و مدل دستگاه، CameraX کلاسهای داخلی ناهنجاری دستگاه مانند DeviceQuirks و CameraQuirks را در camera-camera2 (DeviceQuirksLoader.kt) حفظ میکند. وقتی CameraX دستگاهی را با مشکل شناختهشدهای شناسایی میکند، بهطور خودکار راهحل سفارشیشدهای را تزریق میکند. برای SmileID، این به این معنی بود که کیت توسعه نرمافزار آنها میتوانست بهطور قابلاعتماد در بیشاز ۱۸٬۰۰۰ نوع دستگاه Android بدون نیاز به وصلههای خاص دستگاه در پایگاه کد آنها کار کند.
افزایش مقیاس به بیشاز ۱۶۰ میلیون درستیسنجی
SmileID با انتقال به CameraX، ادغام کیت توسعه نرمافزار را برای توسعهدهندگان نرمافزار خارجی ساده کرد.
حذف اعوجاج نسبت ابعادی، پیشنمایشهای با تأخیر، و ازکارافتادنهای ناگهانی بهدلیل کمبود حافظه باعث افزایش ۲۰ درصدی نرخ قبولی در درستیسنجی برای سرویسهایی شد که از کیتهای توسعه نرمافزار آنها استفاده میکنند. برای مؤسسههای مالی و برنامههای پول همراه در سراسر آفریقا، افزایش ۲۰ درصدی در نرخ قبولی بهمعنای صدها هزار کاربر قانونی است که بهجای ریزش، با موفقیت وارد سیستم میشوند.
توسعهدهندگان متوجه شدند. سهولت ادغام کیت توسعه نرمافزار مبتنی بر CameraX باعث شد استفاده از آن در سال اول ۱۵ برابر افزایش یابد و در سال دوم به ۲۰ برابر برسد. تاکنون، SmileID بااستفاده از CameraX بیشاز ۱۶۰ میلیون درستیسنجی هویت را با موفقیت پردازش کرده است.
Build Your Compatibility Story with the CameraX Skill
توسعه برای دوربینها نباید سخت باشد. برای کمک به تیم شما در اتخاذ همان الگوهای CameraX که SmileID استفاده کرده است، Android مهارت CameraX را برای نمایندگان کدنویسی هوش مصنوعی راهاندازی کرده است.
وقتی از CameraX Skill در محیط توسعه نرمافزار خود استفاده میکنید، عوامل کدنویسی هوش مصنوعی مانند Gemini الگوهای فعلی CameraX را برای انتقال، اتصال چرخه حیات، ConcurrentCamera، و MlKitAnalyzer اعمال میکنند. چه درحال راهاندازی فیدهای دوربین دوگانه باشید، چه درحال پیکربندی پیشنمایش با PreviewView یا CameraXViewfinder باشید، یا درحال مدیریت تجزیهوتحلیل یادگیری ماشین (ML) همزمان باشید، «مهارت CameraX» نماینده شما را برای تولید کد دقیق و آماده تولید راهنمایی میکند.
- کاوش مهارت CameraX: به فهرست راهنمای مهارتهای توسعهدهنده Android بروید یا
android skills add cameraxرا با Android CLI اجرا کنید تا این مهارت را به ابزار کدنویسی هوش مصنوعی خود اضافه کنید. - شروع به کار با CameraX: به اسناد رسمی CameraX بروید و تجربه دوربین خود را در هر جایی اجرا کنید.
-
مطالعات موردیGrab اَبَربرنامه پیشرو در آسیای جنوب شرقی است که خدمات ارسال، جابهجایی، و مالی را ازطریق یک برنامه به میلیونها کاربر در هشت کشور ارائه میدهد.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • ۵ دقیقه برای خواندن -
مطالعات موردیتیم یک پایگاه کد میانای کاربر مبتنی بر هوش مصنوعی ساخت که ۵۰٪ کوچکتر از پیادهسازی اصلی است، درحالیکه زمان اجرای عامل هوش مصنوعی را ۳۵٪ کاهش میدهد، تبادلات مهندس-عامل را ۳۲٪ کمتر میکند، و هزینه توکن را ۳۳٪ کاهش میدهد.
Pavlo Stavytskyi, Rebecca Franks • زمان خواندن: ۱۱ دقیقه -
مطالعات موردیواتساپ بزرگترین پلاتفرم پیامرسانی در جهان است که به میلیاردها کاربر در سراسر جهان خدمات ارائه میدهد. این برنامه ابزار ارتباطی پیشفرض برای افراد در مناطق مختلف است و کاربران را ازطریق پیامرسانی خصوصی، قابلاعتماد، و امن به یکدیگر متصل میکند.
Niharika Arora, Tracy Agyemang, Mayank Jain • ۸ دقیقه خواندن
جدیدترین اطلاعات آماری توسعه Android را بهصورت هفتگی در صندوق ورودیتان دریافت کنید.