SmileID,CameraX ile Kimlik Doğrulamayı 18.000'den Fazla Android Cihaz Türüne Nasıl Ölçeklendirdi?
Okuma süresi: 4 dk.
Bankacılık ve SIM kaydı için kimlik doğrulama uygulamaları, sahtekarlığı ve deepfake'leri tespit etmek amacıyla net, yüksek çözünürlüklü yüz fotoğrafları gerektirir. Canlılık ve sahtekarlık önleme kontrolleri için yeterince net kareler yakalamak ve bunu yaparken düşük bellekli cihazların kilitlenmesini önlemek, Android kamera geliştiricilerinin sıkça karşılaştığı bir zorluktur.
Afrika'nın önde gelen kimlik doğrulama SDK'larından biri olan SmileID için bu zorluk, çeşitli donanım ekosistemleri nedeniyle iki katına çıkıyor. Android, SmileID'nin hedef cihaz pazar payının %85'ini temsil ediyor. Bu paya, işlemcileri son derece kısıtlı olan giriş seviyesi akıllı telefonlar, bilinmeyen bölgesel modeller ve dayanıklı özel satış noktası (POS) terminalleri de dahil.
SmileID, CameraX'i kullanmaya başlamadan önce standart ancak zorlu kamera mühendisliği engelleriyle karşılaştı: uzatılmış önizleme feed'leri, döndürülmüş sensör yönleri, bellek yetersizliği (OOM) kilitlenmeleri ve özel özgün donanım üreticisi (OEM) hataları. SmileID, temel Android SDK'larını CameraX'e taşıyarak bu zorlukları önemli bir iş avantajına dönüştürdü.
SmileID'ye göre, Android SDK'larını CameraX'e taşımak aşağıdaki sonuçları sağladı:
| Metrik | CameraX'e Geçişin Etkisi |
|---|---|
| SDK Kullanımındaki Artış | 2. yılda 20 kat (CameraX'ten önce 2-3 kat) |
| Doğrulama Başarı Oranları | SmileID'nin SDK'larını kullanan uygulamalarda %20 artış |
| Yakalama Çözünürlüğü | Sıfır ağ ek yüküyle selfie/canlılık piksellerinde 4 kat artış |
| Cihaz Modeli Uyumluluğu | 18.000'den fazla Android cihaz türü desteklenir |
| Ölçeklendirilmiş Toplam Doğrulama Sayısı | 160 milyondan fazla kimlik doğrulama işlemi gerçekleştirildi |
Zorluk: Parçalı Donanım ve Eski API Sorunları
SmileID'nin SDK'sı, kullanıcının kimliğini doğrulamak için cihaz üzerinde canlılık kontrolleri ve bulut tabanlı deepfake algılama için yüksek çözünürlüklü selfie kareleri yakalamalıdır.
Eski Camera1 ve alt düzey Camera2 API uygulamalarında bunu tutarlı bir şekilde yapmak birkaç nedenden dolayı zordu:
- OEM Özelleştirmeleri ve Tuhaflıkları: Farklı üreticilerin cihazları, fiziksel kamera sensörü yönlerini farklı şekilde bildirerek döndürülmüş önizlemelere veya yanlış yönlendirilmiş yüz çekimlerine neden oluyordu.
- En-boy oranı bozulmaları: Bütçe dostu cihazlarda belirli bir kare boyutu istendiğinde kamera önizlemesi genellikle dikey veya yatay olarak uzayarak kullanıcının yüzünü bozuyor ve biyometrik doğrulamayı kullanılamaz hale getiriyordu.
- Yetersiz Bellek (OOM) Kilitlenmeleri: Düşük RAM'e (genellikle 1 GB veya daha az) sahip cihazlarda ham yüksek çözünürlüklü görüntülerin işlenmesi, genellikle önemli bellek ayırma kilitlenmelerine neden oluyordu.
Bu sorunlar nedeniyle SmileID'nin SDK kullanımındaki yıllık büyüme 2-3 kat ile sınırlı kaldı ve birçok doğrulama işlemi, cihaz üzerinde gerçek zamanlı canlılık kontrolleri yapmak yerine yüksek gecikmeli bir REST API üzerinden statik fotoğraflar yüklemeye geri dönmek zorunda kaldı.
Çözüm: CameraX ile Tutarlı Ardışık Düzenler
SmileID, mobil SDK'larını CameraX'i kullanarak baştan tasarladı. CameraX, temel cihaz ekosisteminin karmaşıklığını ortadan kaldırmak ve tutarlı, yerel olarak yaşam döngüsüne duyarlı bir geliştirici arayüzü sağlamak için özel olarak tasarlanmıştır.
SmileID, CameraX'in temel kullanım alanlarını (özellikle Preview ve ImageAnalysis) kullanarak sağlam ve çift amaçlı bir kamera ardışık düzeni oluşturdu:
- Önizleme: Kullanıcıya rehberlik etmek için kamera feed'inin mükemmel orantılı, gerçek zamanlı bir önizlemesini oluşturur.
- ImageAnalysis: Otomatik canlılık ve kadrajda yüz algılama işlemlerini yürütmek ve doğrulanmış selfie karesini çıkarmak için kareleri yerel olarak gerçek zamanlı şekilde sürekli işler.
SmileID, bellek yetersizliği nedeniyle kilitlenmelere yol açmadan deepfake algılama için son derece net ayrıntılar yakalamak amacıyla CameraX'in modern ResolutionSelector API'sini doğrudan ImageAnalysis yapılandırmasına ekledi. Bu sayede geliştiriciler, hedef çözünürlük isteyebilir ve cihaz bu boyutu desteklemediğinde yedek kural seçebilir. Örneğin, aşağıdaki diyagram ve örnek yapılandırmada, ResolutionSelector'ın 1200x900 hedefi etrafındaki aday boyutları nasıl değerlendirdiği gösterilmektedir:
Aşağıda, kendi uygulamanızda ResolutionSelector'ı STRATEGY_KEEP_ONLY_LATEST ile nasıl eşleyebileceğinizi gösteren örnek kod verilmiştir (netliğe öncelik vermek için FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER, bellek kullanımını sınırlamak için FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER kullanın):
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, yüksek yoğunluklu piksel kareleri isteyip bunları yerel olarak işleyerek çekilen selfie çözünürlüğünde 4 kat artış elde etti. SmileID, kırpılan yüz bölgesini cihazda sıkıştırarak ağ yükleme boyutunun önceki sistemleriyle aynı kalmasını da sağladı. Bu mimari, kullanıcıların hücresel veri maliyetlerini artırmadan makine öğrenimi modelleri için daha net veriler elde edilmesini sağladı.
CameraX, Donanım Farklılıklarını Nasıl Çözer?
SmileID, CameraX'i standartlaştırarak SDK'sını cihazlar arasında kararlı tutmak için iki katmanlı uyumluluk mühendisliğinden yararlanabildi:
1. Google'ın Kamera ve Medya Test Laboratuvarı
CameraX'in uyumluluğu, sürekli ve fiziksel donanım doğrulamasıyla desteklenir. Google'ın özel Kamera ve Medya Test Laboratuvarı'nda, her gün 190'dan fazla fiziksel Android cihaz modelinden oluşan devasa ve dönüşümlü bir matris üzerinde otomatik bir test paketi çalıştırılır. Farklı yonga setlerini, işletim sistemi sürümlerini ve donanım özelliklerini temsil eden cihazlar buna dahildir.
Google'ın Kamera ve Medya Test Laboratuvarı, popüler cihazlarda daha tutarlı bir davranış elde etmek için kitaplık regresyonlarını üretim kodunuzu etkilemeden önce otomatik olarak yakalar.
2. Cihazlardaki Sorunlar İçin Otomatik Geçici Çözümler
Farklı Android cihazların farklı fiziksel sınırlamaları vardır. Bazıları özel pozlama ayarlarını yapamayabilir, bazıları ise belirli en boy oranlarını kullanırken ters çevrilmiş görüntü verileri bildirebilir. CameraX, geliştiricilerin kod tabanlarını cihaz üreticisine ve modeline göre karmaşık koşullu bloklarla kirletmesini önlemek için camera-camera2'de (DeviceQuirksLoader.kt) DeviceQuirks ve CameraQuirks gibi dahili cihaz özellikleri sınıflarını kullanır. CameraX, bilinen bir sorunu olan bir cihaz algıladığında otomatik olarak özel bir geçici çözüm uygular. SmileID, bu sayede SDK'sını kod tabanında cihaza özel yamalar kullanmadan 18.000'den fazla Android cihaz türünde güvenilir bir şekilde çalıştırabildi.
160 milyondan fazla doğrulama işlemi gerçekleştirildi
SmileID, CameraX'e geçerek harici uygulama geliştiricileri için SDK entegrasyonunu basitleştirdi.
En boy oranı bozulmalarını, gecikmeli önizlemeleri ve ani OOM kilitlenmelerini ortadan kaldırmak, SDK'larını kullanan hizmetlerde doğrulama geçiş oranlarında %20 artış sağladı. Afrika'daki finans kurumları ve mobil para uygulamaları için geçiş oranlarında %20'lik bir artış, yüz binlerce meşru kullanıcının uygulamayı bırakmak yerine başarılı bir şekilde oryantasyon sürecini tamamlaması anlamına geliyor.
Geliştiriciler bu durumu fark etti. CameraX tabanlı SDK'nın kolayca entegre edilebilmesi, ilk yıl kullanımda 15 kat artış sağladı ve bu oran ikinci yılda 20 kata ulaştı. SmileID, CameraX'i kullanarak bugüne kadar 160 milyondan fazla kimlik doğrulama işlemini başarıyla gerçekleştirdi.
CameraX becerisiyle uyumluluk hikayenizi oluşturma
Kameralar için geliştirme yapmak zor olmak zorunda değil. Android, ekibinizin SmileID'nin kullandığı CameraX kalıplarını benimsemesine yardımcı olmak için yapay zeka kodlama temsilcilerine yönelik CameraX becerisini kullanıma sundu.
Geliştirme ortamınızda CameraX Skill'i kullandığınızda Gemini gibi yapay zeka kodlama asistanları; taşıma, yaşam döngüsü bağlama, ConcurrentCamera ve MlKitAnalyzer için mevcut CameraX kalıplarını uygular. İster çift kamera feed'i ayarlayın, ister PreviewView veya CameraXViewfinder ile önizleme yapılandırın ya da gerçek zamanlı makine öğrenimi (ML) analizini yönetin, CameraX becerisi temsilcinizi hassas ve üretime hazır kod oluşturmaya yönlendirir.
- CameraX becerisini keşfedin: Android Developer Skills Directory'yi ziyaret edin veya Android KSA ile
android skills add cameraxkomutunu çalıştırarak beceriyi yapay zeka kodlama aracınıza ekleyin. - CameraX'i kullanmaya başlama: Resmi CameraX belgelerine göz atın ve kamera deneyiminizi her yerde çalışır hale getirin.
-
Başarılı ÖrneklerGüneydoğu Asya'nın önde gelen süper uygulaması Grab, tek bir uygulama üzerinden sekiz ülkedeki milyonlarca kullanıcıya teslimat, mobilite ve finansal hizmetler sunuyor.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Okuma süresi: 5 dk. -
Başarılı ÖrneklerEkip, orijinal uygulamadan %50 daha küçük olan yapay zeka tabanlı bir kullanıcı arayüzü kod tabanı oluşturdu. Bu sayede yapay zeka ajanı yürütme süresinde %35, mühendis-ajan etkileşimlerinde %32 ve jeton maliyetinde %33 azalma sağlandı.
Pavlo Stavytskyi, Rebecca Franks • Okuma süresi: 11 dk. -
Başarılı ÖrneklerWhatsApp, dünya genelinde milyarlarca kullanıcıya hizmet veren, dünyanın en büyük mesajlaşma platformudur. Farklı bölgelerdeki kullanıcılar için varsayılan iletişim aracı olan WhatsApp, özel, güvenilir ve güvenli mesajlaşma yoluyla kullanıcıları birbirine bağlar.
Niharika Arora, Tracy Agyemang, Mayank Jain • Okuma süresi: 8 dk.
Android geliştiriciliğiyle ilgili en son analizleri haftalık olarak gelen kutunuza alın.