- Stella v273.0.0.21, Meta akıllı gözlük yardımcı uygulamasının içinde yüz algılama, hizalama, embedding, yerel DB, vektör indeksi, depolama yolu ve bildirim yüzeyini birbirine bağlayan cihaz üzerinde yüz tanıma düzeneğini barındırıyor
- Mevcut handler test fotoğrafıyla doğrudan çağrıldığında yüz algılama, 2048 boyutlu biyometrik embedding üretimi, yerel indeks araması ve eşleşme olduğunda Android bildirimi
"Person recognized" gönderimine kadar çalışıyor
- SCRFD, KPSAligner, SFace olmak üzere üç ExecuTorch modeli NMLML ile indiriliyor; SFace ise yüzü 2048 sayıdan oluşan embedding'e dönüştürme görevini üstleniyor
- RLDrive içindeki
person_profiles/objects.db, vec0 ile float[2048] cosine araması kullanıyor; eşleşme yok yolunda ise kesilmiş yüz .jpg ve .emb parmak izini NameTagsPending/ içine kaydediyor
- Varsayılan kayıt dışı hesaplarda
"Connections" kartı ve hedef profil ekranı görünmüyor; ayrıca Meta'nın yüz namespace verisini push ettiğine dair gözlem de yok, bu yüzden dağıtılıp dağıtılmadığı ve ne zaman dağıtılacağı temel belirsizlik olarak kalıyor
Kapsam ve sınırlamalar
- Hedef uygulama, Meta akıllı gözlük yardımcı uygulaması Stella'nın Android derlemesi
com.facebook.stella v273.0.0.21
- Uygulamanın içinde 3 yüz modeli, yerel DB şeması, model çıktılarıyla uyumlu cosine similarity vektör indeksi, biyometrik kayıtları diske hazırlayan yazma yolu, bildirim yüzeyi ve kullanıcıya dönük
"Connections" widget'ı birlikte bulunuyor
- Mevcut handler test fotoğrafıyla doğrudan çağrıldığında pipeline sonuna kadar çalıştı; yüzü algıladı, 2048 boyutlu embedding oluşturdu ve ardından yerel indeksi aradı
- Varsayılan kayıt dışı hesaplarda kullanıcı arayüzü görünmedi, bildirim deeplink'inin açtığı ekran da v273 derlemesinde yoktu; ayrıca ilgili DB'ye Meta'nın kimlik verisini sunucudan push ettiği akış da test hesabında gözlemlenmedi
- Buradaki temel ayrım şu: Bu durum, Meta'nın şu anda genel kullanıcılara gizlice kişi tanımladığına dair kanıt değil; buna karşılık bu işlevi yerine getirebilecek tamamlanmış düzeneğin cihaz üzerinde bir araya getirilmiş olduğu ve Meta'nın bunu bir gate ile kapattığı görülüyor
Model yığını
| Varlık adı |
Dosya |
Boyut |
Rol |
android_facerec_scrfd |
SCRFD.pte |
3.4 MB |
Görüntüde yüz algılama |
android_facerec_kps_aligner |
KPSAligner.pte |
117 KB |
Algılanan yüzü crop etme ve hizalama |
android_facerec_sface |
SFace.pte |
96 MB |
Yüzü 2048 sayıdan oluşan embedding'e dönüştürme |
- Bu üç model, Meta'nın varlık dağıtım sistemi NMLML üzerinden Meta'dan indirilen ExecuTorch
.pte varlıkları
SCRFD, InsightFace'in SCRFD modeline; SFace, Zhong et al. 2021'in SFace modeline; KPSAligner ise anahtar nokta tabanlı hizalama sınıfındaki modellere karşılık geliyor
- Meta'nın SFace türevi, 96 MB boyut ve 2048 boyutlu çıktı ile, kamuya açık referanslardaki yaklaşık 40 MB ve 128–512 boyutlu sürümlerden daha büyük görünüyor
- Yüz algılama ve embedding modellerinin uygulamada yer alması tek başına tanıma işlevinin kanıtı değil; cihaz üzerindeki yüz algılama kadrajlama veya otomatik odaklama için de kullanılabilir
Yerel yüz indeksi ve DB yapısı
- Çalışma pipeline'ı aşağıdaki SQLite DB'yi okuyacak şekilde tasarlanmış
/data/user/0/com.facebook.stella/files/rldrive/person_profiles/objects.db
- Bu DB, Meta'nın cihazlar arası senkronizasyon çerçevesi RLDrive altında
person_profiles namespace'inde yer alıyor; yani uzaktan doldurulacak bir kanal olarak tasarlanmış
- Test hesabında Meta'nın
person_profiles içine doğrudan veri push ettiği bir aktarım gözlemlenmedi; gözlemlenen şey bu kanalın varlığı oldu
- Ana şema, kişi bilgisi, yüz bilgisi ve 2048 boyutlu vektör arama tablosunu ayrı ayrı tutuyor
CREATE TABLE person (
nodeid INTEGER PRIMARY KEY,
name TEXT,
uri TEXT,
blob BLOB,
deleted INTEGER,
version BLOB
);
CREATE TABLE face (
nodeid INTEGER PRIMARY KEY,
mediaPath TEXT,
personUri TEXT,
blob BLOB,
deleted INTEGER,
uri TEXT,
version BLOB
);
CREATE VIRTUAL TABLE face_mediaPath_vec
USING vec0(mediaPath float[2048] distance_metric=cosine);
face satırları personUri ile person tablosunu işaret ediyor; face.mediaPath ise face_mediaPath_vec için birincil anahtar rolünü üstleniyor
- Tanıma akışı, 2048 sayıdan oluşan embedding'i cosine similarity ile aradıktan sonra sonucu
person.name ile join ediyor ve bunu bildirim metninde kullanıyor
vec0, SQLite'ı bir vektör benzerliği motoruna dönüştüren açık kaynak sqlite-vec eklentisi; float[2048] boyutu ise uygulamada birlikte gelen SFace embedder'ının çıktı biçimiyle birebir örtüşüyor
- Şema, bir
personUri için birden fazla face satırına izin veriyor; ancak gerçek dağıtımda 1:1 mi yoksa 1:N mi kullanıldığı kayıt dışı cihazlarda görünmüyor
Çalışma dalları ve kaydedilen dosyalar
- Tüm pipeline'ın iki kez çalıştırıldığı testlerde, boş indeks için eşleşme yok dalı ile tek embedding önceden eklenmiş eşleşme dalı birbirinden ayrıldı
- Eşleşme yok dalı,
NameTagsPending/ içine (uuid.jpg, uuid.emb) çifti yazıyor ve bildirim göndermiyor
- Eşleşme dalı, üretimdeki
nametags_recognition kanalı üzerinden Android bildirimi gösteriyor; başlık "Person recognized", gövde ise "Recognized Michel Foucault" oldu ve NameTagsPending/ içine hiçbir şey eklenmedi
- Tanınmayan yüzler şu yola kaydediliyor
/data/user/0/com.facebook.stella/files/NameTagsPending/
- Tanınmayan her yüz için yeni UUID adlı
.jpg ve .emb çifti oluşturuluyor; .jpg, SCRFD ve KPSAligner çıktısı olan kesilmiş ve hizalanmış yüzü, .emb ise 2048 sayıdan oluşan SFace parmak izini içeriyor
- Dizin modu
0700 ve yeniden başlatma sonrasında da korunuyor; yazma işlemi yalnızca eşleşme yok dalında gerçekleşiyor
- Doğrulanan
.emb dosyası 8,192 bayt boyutunda, 2048 × float32 big-endian yapısında; L2 norm 0.999999, min/max −0.092110 / +0.098950, mean ise +0.000292
- Bu
(uuid.jpg, uuid.emb) çiftleri, person_profiles/objects.db içindeki cosine indeksinin karşılaştırması için tasarlanmış biçim ve kodlamayla tamamen uyumlu biyometrik kayıtlar
Bildirimler ve kullanıcı arayüzü
- Stella,
nametags_recognition adlı bir Android bildirim kanalı tanımlıyor; adı "NameTags recognition", açıklaması "Notifications for recognized NameTags connections", önem seviyesi ise heads-up, ses ve rozet içeren IMPORTANCE_HIGH
- Bildirim şablonu tanıma handler'ı içinde hardcode edilmiş; başlık her zaman
"Person recognized", gövde ise her zaman "Recognized " + name biçiminde ve name, person_profiles/objects.db içindeki person tablosundan geliyor
- Bildirime dokunulabiliyor ve
fb-viewapp://name_tags?face_id=<face_id> biçimindeki Meta tarafından oluşturulmuş deeplink ile Stella içindeki kişi profil ekranını açacak şekilde ayarlanmış
- v273'te ilgili hedef ekran bulunamıyor ve navigation graph içinde de yer almıyor; bu yüzden bildirime dokunulduğunda Stella'nın varsayılan sekmesine gidiliyor
- APK içinde
"Connections" bölümü altında bir kart bulunuyor; "See your connections" ve "Remember the people you met and make new connections." dizeleri hardcode edilmiş durumda
- Varsayılan kayıt dışı hesaplarda bu kart Glasses sekmesinde görünmedi; test sırasında görünür hale geldi
Sonuç
- Stella v273 içinde yüz algılama, hizalama, embedding, vektör indeksi, depolama, yazma yolu ve bildirim yüzeyine kadar uzanan eksiksiz bir cihaz üstü yüz tanıma yığını bulunuyor
- Uçtan uca çalıştırılan pipeline, bilinen yüzleri adlandırıp bildirim olarak gösteriyor; bilinmeyen yüzler içinse crop ve parmak izini diske hazırlıyor
- İndeks boyutu, embedding biçimi ve depolama şeması birbiriyle tutarlı olduğundan bunun dağınık ve ölü kod değil, uyumlu bir sistem olduğu anlaşılıyor
- Kullanıcının göreceği
"Connections" kartı ile bildirimin hedeflediği profil ekranı derlemede yok ya da daha derine gizlenmiş durumda
- Canlı pipeline'ın kullandığı DB, Meta'nın sunucu tarafında doldurduğu diğer namespace'lerle birlikte senkronizasyon namespace'i içinde yer alıyor; ancak test hesabında yüz namespace'ine yönelik push gözlemlenmedi
- Doğrulanmamış noktalar; Meta'nın şu anda kullanıcılara yabancı kişileri tanımlayıp tanımlamadığı, kayıt verisinin akıp akmadığı ve bu özelliğin üretimde açık olup olmadığı
- 2048 boyutlu yüz parmak izi ve hardcode edilmiş
"Person recognized" bildirimine kadar kurulmuş, dağıtılmış ve birbirine bağlanmış bu düzenek önemli bir mühendislik yatırımı gösteriyor; bunun gerçek üretim kullanımı ve zamanlaması ise Meta'nın yanıtlaması gereken soru olarak kalıyor
1 yorum
Hacker News görüşleri
Keşke böyle bir özellik tamamen çevrimdışı olarak var olsaydı. Yüz körlüğüm var; arkadaşlarımın fotoğraflarını çevrimdışı bir veritabanına koyup onları tanımamı sağlayabilse gerçekten çok faydalı olurdu
Erişilebilirlik, mahremiyetten vazgeçmeyi gerektirmemeli
Yakın zamanda yüz körlüğünü anlatan en iyi benzetmeyi duydum: elma. İki elmayı yan yana koyarsanız farklarını görebilirsiniz ama 50 benzer elma arasından belirli bir elmayı tanıyıp tanıyamayacağınız bambaşka bir meseledir
Sokakta bir elma size konuşsa, onu daha önce nerede gördüğünüzü hatırlayabilir misiniz gibi bir his; bazı dolaylı yöntemler var ama bağlama çok bağlılar ve sık sık hata veriyorlar. Kızıl saçlı ve sakallı bir elmanın yan ofisteki iş arkadaşı olduğunu anlayabiliyorum ama dün şehir merkezinde bana el sallayan elmayla aynı elma olup olmadığından emin olamıyorum
Saç stili değişiklikleri özellikle büyük sorun. Bir keresinde öğle arasında yeni meslektaşın kim olduğunu merak ediyordum, konuşmasını duyunca sesinden tanıdım; meğer 10 yıldır birlikte çalıştığım biriymiş, sadece saç rengini değiştirmiş
Google Glass ilk çıktığında, 2012'de, konferans odaklı bir teknoloji girişimi işletiyordum ve elimizde konuşmacı ve katılımcı profil fotoğraflarından oluşan bir veritabanı vardı; bu yüzden “kalabalık bir odada buluşmayı planladığınız kişiyi gözlüğün bulması” uygulaması doğal olarak akla geldi
Ama Google Glass geliştirici şartları bunu kesin biçimde yasaklıyordu ve biraz daha düşününce nedenini hemen anlıyordunuz
Bunun tam zıddını takmak istiyorum. Yakınımda biri Facebook'un yapay zeka gözlüğünü takıyorsa bana haber verip kaçınmamı sağlayacak bir cihaza ihtiyaç var
Aileme çocukların fotoğraflarını Meta platformlarında paylaşmamalarını zaten açıkça söyledim. Böyle cihazların habersiz insanlara dayatılması durumunda şiddetli tepki verenler de çıkabilir
Bu, genel olarak kabul gören CCTV ya da kamera/akıllı telefonlarla yapılan pasif olmayan kayıtla tamamen aynı şey değil
Bence Meta, teknoloji tarihindeki mahremiyet ihlallerinin en önde gelen örneği. Bu akıllı gözlükler, insanları evlerinin içinde, bazen çıplakken, rızaları olmadan kaydederek çizgiyi fazlasıyla aştı
Yaklaşık bir ay önce burada da konuşulmuştu: Meta in row after workers who saw smart glasses users having sex lose jobs (https://news.ycombinator.com/item?id=47961838)
Chicago'lu avukatları zengin etmeye kararlı görünüyor. [0]
[0]: https://en.wikipedia.org/wiki/Biometric_Information_Privacy_Act
Bağlantıdaki açıklamaya göre BIPA, Illinois'te iş yapan şirketlerin biyometrik veri toplama ve saklamayla ilgili şartlara uymasını zorunlu kılıyor; bir kişinin biyometrik tanımlayıcılarını toplamak veya ifşa etmek için onay alınması, zamanında imha edilmesi ve güvenli biçimde saklanması gerekiyor. Biyometrik verilerin yönetiminde ayrıca “makul özen standardı” da aranıyor
Girişim fikri: normal gözlük çerçevelerinin köprüsüne ve saplarına yakın kızılötesi LED takmak; verimli ve parlak olacak ama yaklaşık 10Hz'lik düzensiz bir saatle PWM çalıştıracak
Fotoğrafımı çekmek istiyorsan sor ya da film kullan
Hayatımda işime yarayacak tek bir pratik kullanım alanı bile aklıma gelmiyor. Çünkü gözlüğün hemen arkasında zaten yerleşik yerel yüz tanıma var
Bazı insanların isimlerini hatırlıyorum ve sonunda isimleri iyi hatırlama becerisinin başlı başına çok da anlamlı olmadığı sonucuna vardım. Gerçekten sevdiğim insanların isimlerini hatırlıyorum
Tersinden bakınca, birinin benim ismimi unutmasını gerçekten ne kadar önemsediğimi de düşünmek lazım. Çocukken izcilerde bir yıl boyunca sürekli birlikte olduğum bir arkadaşım vardı ama adını hatırlamıyorum; yine de ortada ciddi bir sorun yoktu
Neredeyse 10 yıl boyunca büyük bir grupla takıldım ama kimin kim olduğunu pek öğrenemedim; pandemide Zoom'da isimler görünmeye başlayınca birkaç hafta içinde yavaş yavaş öğrendim
Tüplü dalış eğitimi verirken mağazaya giderken kursiyer isim listesini olabildiğince rastgele sırayla ezberliyorum; böylece yüzle ismi eşleştirmenin bilişsel yükü azalıyor. Yoklama alırken tüm isimleri yazıyorum, soru sordukça da yavaş yavaş kopya kağıdı olmadan yapmaya çalışıyorum
Ama ekipman takılınca, özellikle kapüşon kullanılan bölgelerde, bu hemen çöküyor. Yaklaşık 35 yaşlarında iki beyaz erkek varsa birbirine karıştırıyorum. Sosyal olarak kabul edilse reçeteli gözlük olarak takıp bu yükü azaltmak isterdim
Meta'nın bunu erişilebilirlik için yaptığını sanmıyorum
Tabii bu epey tuhaf bir konuşma olur; bu yüzden bazen yarım yamalak tanıştırıp insanların birbirine tam olarak kendini tanıtmasını umma ve o anda hatırlama stratejisini de kullanıyorum
Genel bir ilke olarak şu yönelim nasıl olur diye merak ediyorum: bilgisayarlar ağ sınırına dokunmadıkları sürece istedikleri kadar otomatik işlem yapabilmeli, ama ağa erişmeleri gerekiyorsa bu mutlaka insanın açık bir eylemiyle başlamalı
Tarayıcıda fare yakalama ya da tam ekrana geçmenin güvenilir bir kullanıcı eylemi gerektirmesine benziyor ama daha geniş uygulanmış hali gibi. Ağ iletişiminin kapsamı da kullanıcının yanlış anlamasına yer bırakmayacak kadar net olmalı
Hedef kullanıcıya açıklayamayacağın kadar karmaşıksa, o kullanıcının yerine bunu yapmamalısın. Bu daha çok kurum içi dağıtım için değil, kitlesel tüketici ürünleri için geçerli
Böyle sağlam sınırlar koymazsak işin sonu panoptikona gider gibi geliyor. Devletin aktif biçimde itmesi olmasa bile, dijital çağın basit kâr güdüsü bile buna yol açar. Daha ayrıntılı kurallar teoride daha iyi olabilir ama güçlü teşvikler varken insanlar karmaşık kurallara iyi uyamıyor
İş yerinde güvenlik politikaları belirleyebilen bir konumdayım ve bunlardan biri de ofiste akıllı gözlük yasağı. Çalışanların gizli bilgilerin göründüğü ekranları Facebook gözlüğüne doğrultmasına izin veremeyiz
Bana göre yüz tanımanın kullanılmasına izin verilebilecek neredeyse hiçbir durum yok. Restorandaysam Facebook'un nerede yemek yediğimi bilmesi için bir neden yok; müzik kulübündeysem ne dinlediğimi bilmesine de gerek yok. Umumi tuvalet benzeri alanlar ise kesinlikle olmaz. Kamuya açık kaldırımlarda bile kiminle konuştuğumun izlenmesini istemem
Bunun kullanıldığı herhangi bir durumu azıcık bile kabul edebileceğimi sanmıyorum. Dürüst olmak gerekirse, böyle kamusal casus yazılımı üstünde taşıyan insanlara yönelik aleni utandırmanın da ötesinde, dışarıda bunları takarken yakalanmanın fiziksel olarak korkutucu olduğu bir ortamın hızla oluşmasını isterdim
“İş yerinde telefon kamerasını da mı yasaklıyorsunuz?” şeklindeki bariz itiraza yanıt olarak: evet. Gün boyu telefon kamerasını ekrana tutup işi kaydetmek de elbette yasak olurdu. Gizli bilgileri, inceleyip sözleşme yaptığımız tedarikçiler dışında kimseyle paylaşmıyoruz; birinin kayıt aldığını görsem onu çağırır ve bunun çok tehlikeli bir durum olduğunu anlatırdım
BigTech'in ya da devletin tüm etkileşimlerimi takip etmesini istemem ama komşunun arabasındaki araç kamerasının evinin girişinden geçtiğimi yerelde kaydetmesi, bunu üçüncü taraflara yüklemediği sürece benim için sorun değil
Tabii çoğu insan kendi sunucusunu barındırmak istemiyor ve çoğu hizmet de uçtan uca şifreli değil; bu yüzden bunu bugünün pratiğinde büyük önem taşıyormuş gibi sunmak zor. Yine de düzenleme ve nasıl bir dünya istediğimiz açısından bu ilgili bir ayrım
Burada ABD Anayasası İkinci Değişikliği benzeri bir mantık var ve buna karşı çıkmak oldukça zor. En azından bu insan öldürmüyor. Her polisin, kontrol edemediği 5-6 kayıt cihazıyla sürekli çevrili olmasını isterim. Daha az kötü seçenek bu gibi görünüyor
Elbette her şeyin Facebook'a aktığı bir yapıyı sevmiyorum ve umarım o aşama aşılır
Meta, Flock ve Palantir güçlerini birleştirirse ne olur? Musk tarzı paket hisseler gibi bir kötülük kombosu ortaya çıkabilir sanki