- Stella v273.0.0.21 में Meta स्मार्ट ग्लासेस companion app के भीतर on-device facial recognition की ऐसी व्यवस्था मौजूद है, जो face detection, alignment, embedding, local DB, vector index, storage path और notification surface को जोड़ती है
- मौजूदा handler को test photos के साथ सीधे call करने पर face detection, 2048-dimensional biometric embedding बनाना, local index search, और match मिलने पर Android notification
"Person recognized" भेजना—सब काम करता है
- SCRFD, KPSAligner, और SFace सहित तीन ExecuTorch models NMLML के जरिए डाउनलोड होते हैं, और SFace चेहरे को 2048-number embedding में बदलने का काम करता है
- RLDrive का
person_profiles/objects.db vec0 float[2048] cosine search का उपयोग करता है, और no match path NameTagsPending/ में cropped face .jpg और .emb fingerprint सहेजता है
- डिफ़ॉल्ट non-enrolled account में
"Connections" card और target profile screen दिखाई नहीं देते, और Meta की face namespace data push भी नहीं दिखी, इसलिए deployment हुआ है या कब होगा यह अब भी मुख्य अनिश्चितता है
दायरा और सीमाएँ
- लक्ष्य app Meta स्मार्ट ग्लासेस companion app Stella का Android build
com.facebook.stella v273.0.0.21 है
- app के भीतर 3 face models, local DB schema, model outputs से मेल खाता cosine-similarity vector index, biometric records को disk पर तैयार करने वाला write path, notification surface, और user-facing
"Connections" widget साथ मौजूद हैं
- test photos के साथ मौजूदा handler को सीधे call करने पर pipeline अंत तक चली, चेहरा detect किया, 2048-dimensional embedding बनाया, और फिर local index search किया
- डिफ़ॉल्ट non-enrolled account में user-facing UI नहीं दिखा, notification deep link से खुलने वाली screen भी v273 build में नहीं थी, और संबंधित DB में Meta द्वारा server push से identity data भेजने का flow भी test account पर नहीं दिखा
- मुख्य बात यह है कि यह अभी इस बात का प्रमाण नहीं है कि Meta आम users के लिए चुपचाप लोगों की पहचान कर रहा है; बल्कि यह कि ऐसा feature चलाने के लिए पूरा तंत्र device पर assembled है और Meta ने उसे gate करके रोका हुआ है
मॉडल स्टैक
| एसेट नाम |
फ़ाइल |
आकार |
भूमिका |
android_facerec_scrfd |
SCRFD.pte |
3.4 MB |
image से face detect करना |
android_facerec_kps_aligner |
KPSAligner.pte |
117 KB |
detected face को crop और align करना |
android_facerec_sface |
SFace.pte |
96 MB |
चेहरे को 2048-number embedding में बदलना |
- ये तीनों models Meta के asset delivery system NMLML के जरिए Meta से डाउनलोड होने वाले ExecuTorch
.pte assets हैं
SCRFD InsightFace का SCRFD है, SFace Zhong et al. 2021 का SFace है, और KPSAligner keypoint-based alignment परिवार से जुड़ा model है
- Meta का SFace variant 96 MB आकार और 2048-dimensional output के साथ आता है, जो public reference के लगभग 40 MB और 128–512 dimensions से बड़ा दिखता है
- सिर्फ face detection और embedding models की मौजूदगी अपने-आप recognition feature का प्रमाण नहीं है, क्योंकि on-device face detection का उपयोग framing या autofocus में भी हो सकता है
लोकल face index और DB संरचना
- execution pipeline नीचे दिए गए SQLite DB को पढ़ती है
/data/user/0/com.facebook.stella/files/rldrive/person_profiles/objects.db
- यह DB Meta के cross-device sync framework RLDrive के अंतर्गत
person_profiles namespace में स्थित है, यानी यह remote data से भरे जाने के लिए डिज़ाइन किया गया channel है
- test account में Meta द्वारा
person_profiles में data push करते हुए कोई transfer नहीं दिखा, इसलिए यहाँ जो देखा गया वह channel का अस्तित्व है
- मुख्य schema में person information, face information, और 2048-dimensional vector search table अलग-अलग रखे गए हैं
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 row, personUri के जरिए person को refer करती है, और face.mediaPath face_mediaPath_vec की primary key की भूमिका निभाता है
- recognition flow 2048-number embedding को cosine similarity से search करता है, फिर
person.name से join करके notification text में उपयोग करता है
vec0 open source sqlite-vec extension है, जो SQLite को vector similarity engine में बदल देता है, और float[2048] dimensions app में शामिल SFace embedder के output से बिल्कुल मेल खाते हैं
- schema एक
personUri के लिए कई face rows की अनुमति देता है, लेकिन वास्तविक deployment में 1:1 या 1:N में से कौन-सा pattern उपयोग होगा, यह non-enrolled device पर स्पष्ट नहीं है
execution branches और stored files
- पूरी pipeline को दो बार चलाने वाले test में empty index के लिए no match branch और पहले से एक embedding डालकर match branch अलग हुई
- no match branch
NameTagsPending/ में (uuid.jpg, uuid.emb) pair लिखती है और notification नहीं भेजती
- match branch production
nametags_recognition channel पर Android notification दिखाती है, जिसका title "Person recognized" और body "Recognized Michel Foucault" था, और NameTagsPending/ में कुछ भी नहीं जोड़ा गया
- unrecognized faces नीचे दिए गए path में store किए जाते हैं
/data/user/0/com.facebook.stella/files/NameTagsPending/
- हर unrecognized face एक नए UUID नाम के
.jpg और .emb pair बनाता है; .jpg SCRFD और KPSAligner output से निकला cropped और aligned face है, और .emb 2048-number SFace fingerprint है
- directory mode
0700 है और reboot के बाद भी बना रहता है, और write सिर्फ no match branch में होती है
- verify की गई
.emb file का size 8,192 bytes था, संरचना 2048 × float32 big-endian, L2 norm 0.999999, min/max −0.092110 / +0.098950, और mean +0.000292 था
(uuid.jpg, uuid.emb) pair उसी format और encoding में पूरा biometric record है, जैसा person_profiles/objects.db का cosine index compare करने के लिए डिज़ाइन किया गया है
notifications और user UI
- Stella
nametags_recognition नाम का Android notification channel define करता है, जिसका नाम "NameTags recognition", description "Notifications for recognized NameTags connections", और importance heads-up, sound, और badge के साथ IMPORTANCE_HIGH है
- notification template recognition handler के भीतर hardcoded है; title हमेशा
"Person recognized" और body हमेशा "Recognized " + name के रूप में होती है, जहाँ name person_profiles/objects.db की person table से आता है
- notification tap की जा सकती है, और यह
fb-viewapp://name_tags?face_id=<face_id> जैसे Meta-authored deep link से Stella के भीतर व्यक्ति की profile screen खोलने के लिए configured है
- v273 में वह target screen नहीं मिली और navigation graph में भी नहीं थी, इसलिए notification tap करने पर Stella के default tab पर जाया गया
- APK के भीतर
"Connections" section के नीचे एक card मौजूद है, जिसमें "See your connections" और "Remember the people you met and make new connections." strings hardcoded हैं
- डिफ़ॉल्ट non-enrolled account में यह card Glasses tab में नहीं दिखा, लेकिन testing के दौरान यह visible state में आ गया
निष्कर्ष
- Stella v273 में face detection, alignment, embedding, vector index, storage, write path, और notification surface तक जुड़ा पूरा on-device facial recognition stack मौजूद है
- end-to-end चली pipeline known faces को नाम के साथ notification में दिखाती है, और unknown faces के लिए crop और fingerprint को disk पर तैयार करती है
- index dimensions, embedding format, और storage schema एक-दूसरे से मेल खाते हैं, इसलिए यह बिखरा हुआ dead code नहीं बल्कि एक coherent system है
- user-facing
"Connections" card और notification target profile screen या तो build में नहीं हैं या और गहराई में छिपे हुए हैं
- live pipeline जिस DB का उपयोग करती है, वह Meta के server-side से भरे जाने वाले दूसरे namespaces के साथ sync namespace में मौजूद है, लेकिन test account में face namespace push नहीं दिखी
- जो बातें अब भी अपुष्ट हैं, वे हैं: क्या Meta अभी users के लिए अजनबियों की पहचान कराता है, enrollment data वास्तव में flow होती है या नहीं, और यह feature production में enabled है या नहीं
- 2048-dimensional face fingerprint और hardcoded
"Person recognized" notification तक बनाया, deploy किया और जोड़ा गया यह तंत्र एक बड़ा engineering investment दिखाता है; वास्तविक production use और उसका समय Meta को स्पष्ट करना होगा
1 टिप्पणियां
Hacker News की राय
काश ऐसी सुविधा पूरी तरह offline मौजूद होती। मुझे prosopagnosia है, इसलिए अगर दोस्तों की तस्वीरें किसी offline database में डालकर उन्हें पहचानने दिया जा सके तो यह सच में बहुत उपयोगी होगा
accessibility के लिए privacy छोड़ना ज़रूरी नहीं होना चाहिए
हाल ही में prosopagnosia समझाने के लिए सबसे अच्छा उदाहरण सुना: सेब। दो सेब साथ रखो तो फर्क दिखता है, लेकिन 50 मिलते-जुलते सेबों में किसी एक खास सेब को पहचान पाना बिल्कुल अलग समस्या है
अगर सड़क पर कोई सेब आकर बात करे, तो क्या तुम्हें याद रहेगा कि उसे कहाँ देखा था? कुछ workaround होते हैं, लेकिन वे context पर निर्भर होते हैं और अक्सर गलतियाँ होती हैं। लाल बालों और दाढ़ी वाला सेब बगल वाले office का सहकर्मी है, यह समझ आ सकता है, लेकिन क्या वही सेब है जिसने कल शहर में हाथ हिलाया था, यह उलझा देता है
hairstyle में बदलाव खास तौर पर बड़ी समस्या है। एक बार lunch के समय मैं सोच रहा था कि नया सहकर्मी कौन है, फिर उसने बोलना शुरू किया और मैंने आवाज़ से पहचाना कि वह वही इंसान था जिसके साथ मैं 10 साल से काम कर रहा था, बस उसने बालों का रंग बदल लिया था
जब 2012 में Google Glass पहली बार आया था, तब मैं conference tech startup चला रहा था, और हमारे पास वक्ताओं व attendees की profile photo database थी, इसलिए “भीड़ भरे कमरे में मिलने वाले व्यक्ति को चश्मा ढूँढकर दे” वाला app तुरंत दिमाग में आया
लेकिन Google Glass developer terms ने उसे सख्ती से मना किया था, और ज़रा और सोचते ही तुरंत समझ आ गया कि क्यों
मैं इसका ठीक उल्टा पहनना चाहूँगा। कोई ऐसा device चाहिए जो मुझे alert दे सके कि पास में कोई Facebook के AI glasses पहने हुए है, ताकि मैं उससे बच सकूँ
मैंने पहले ही परिवार वालों से साफ कह दिया है कि बच्चों की तस्वीरें Meta platforms पर share न करें। अगर ऐसे devices अनजान आम लोगों पर थोपे गए, तो कुछ लोग हिंसक प्रतिक्रिया भी दे सकते हैं
यह आम तौर पर स्वीकार की गई CCTV या camera/smartphone की manual recording से बिल्कुल अलग है
मेरे हिसाब से Meta तकनीक के इतिहास में privacy उल्लंघन का सबसे बड़ा उदाहरण है। इस बार के smart glasses ने लोगों को उनके घरों के अंदर, कभी-कभी नग्न अवस्था में भी, बिना consent रिकॉर्ड करके हद पार कर दी है
लगभग एक महीने पहले यहाँ इस पर चर्चा भी हुई थी: Meta in row after workers who saw smart glasses users having sex lose jobs (https://news.ycombinator.com/item?id=47961838)
लगता है कि Chicago के वकीलों को अमीर बनाने की पूरी मंशा है। [0]
[0]: https://en.wikipedia.org/wiki/Biometric_Information_Privacy_Act
लिंक के अनुसार BIPA, Illinois में business करने वाली कंपनियों से biometric information के collection और storage से जुड़ी आवश्यकताएँ पूरी करने को कहता है; किसी व्यक्ति के biometric identifier को collect या disclose करने से पहले consent लेना, समय पर नष्ट करना, और सुरक्षित रूप से store करना जरूरी है। biometric information के प्रबंधन में “reasonable standard of care” भी चाहिए
startup idea: सामान्य glasses frame के bridge और किनारों पर near-infrared LED लगाओ, और उन्हें लगभग 10Hz की अनियमित clock पर PWM के साथ चलाओ, ताकि वे efficient भी हों और bright भी
अगर मेरी तस्वीर लेनी है, तो पूछ लो या film इस्तेमाल करो
मुझे ऐसा कोई भी व्यावहारिक उपयोग नहीं सूझता जो मेरी ज़िंदगी में मदद करे, क्योंकि चश्मे के ठीक पीछे पहले से ही local facial recognition built-in है
मैं कुछ लोगों के नाम याद रखता हूँ, और आखिरकार मुझे लगने लगा है कि नाम याद रखने की क्षमता अपने आप में बहुत मायने नहीं रखती। जिन लोगों को मैं सच में पसंद करता हूँ, उनके नाम मुझे याद रहते हैं
उल्टा यह भी सोचने लायक है कि अगर कोई मेरा नाम भूल जाए तो क्या मुझे सच में फ़र्क पड़ता है। बचपन में Scouts में एक दोस्त था जिसके साथ मैं पूरे एक साल चिपका रहा, लेकिन उसका नाम याद नहीं रहा, और फिर भी कोई बड़ी समस्या नहीं हुई
लगभग 10 साल तक मैं एक बड़े समूह के साथ घुलता-मिलता रहा, फिर भी कौन कौन है यह ठीक से याद नहीं रख पाया, और pandemic के दौरान Zoom में नाम दिखने लगे तो कुछ हफ्तों में धीरे-धीरे सीख पाया
जब मैं scuba सिखाता हूँ, तो shop तक गाड़ी चलाते समय छात्रों के नामों की सूची को जितना हो सके random order में याद करता हूँ ताकि चेहरे और नाम जोड़ने का cognitive load कम हो। attendance लेते समय मैं सारे नाम लिख लेता हूँ, और सवाल पूछते हुए धीरे-धीरे cheat sheet के बिना करने की कोशिश करता हूँ
लेकिन जैसे ही equipment पहन लेते हैं, खासकर उन इलाकों में जहाँ hood भी पहना जाता है, सब तुरंत टूट जाता है। अगर 35 साल के आसपास के दो श्वेत पुरुष हों तो मैं गड़बड़ा जाता हूँ। अगर सामाजिक रूप से स्वीकार्य हो, तो मैं बोझ कम करने के लिए इसे prescription glasses की तरह पहनना चाहूँगा
मुझे नहीं लगता कि Meta यह accessibility के लिए कर रहा है
बेशक यह काफ़ी awkward बातचीत है, इसलिए मेरी एक रणनीति यह भी होती है कि आधा परिचय कराऊँ और उम्मीद करूँ कि सामने वाले लोग खुद पूरी तरह अपना परिचय दें, ताकि उसी समय मुझे याद आ जाए
एक सामान्य सिद्धांत के तौर पर मुझे यह दिशा कैसी लगेगी, यह सोच रहा हूँ: कंप्यूटर अपने आप जितना चाहे काम करे, जब तक वह network boundary को नहीं छूता; लेकिन network access हमेशा किसी इंसान की स्पष्ट कार्रवाई से ही शुरू होना चाहिए
यह कुछ वैसा है जैसे browser में mouse capture या fullscreen में जाने के लिए trusted user action चाहिए होता है, लेकिन इसे और व्यापक रूप से लागू किया जाए। network communication की सीमा भी इतनी स्पष्ट होनी चाहिए कि user के गलत समझने की गुंजाइश न रहे
अगर वह इतना जटिल है कि target user को समझाया ही नहीं जा सकता, तो उसकी ओर से वह काम नहीं किया जाना चाहिए। यह ज़्यादातर internal deployment के लिए नहीं बल्कि mass consumer products पर लागू होता है
अगर हम ऐसी ठोस सीमाएँ तय नहीं करेंगे, तो मुझे लगता है हम panopticon की तरफ बढ़ेंगे। सरकार की सक्रिय पहल को छोड़ भी दें, तो digital era का साधारण profit motive ही हमें वहाँ ले जाने के लिए काफ़ी है। बारीक नियम सिद्धांततः बेहतर हो सकते हैं, लेकिन जब प्रोत्साहन बहुत मज़बूत हों तो लोग जटिल नियमों का पालन अच्छी तरह नहीं करते
मैं ऐसी स्थिति में हूँ जहाँ काम पर security policy बना सकता हूँ, और उनमें से एक है office के अंदर smart glasses ban। मैं कर्मचारियों को ऐसा नहीं करने दे सकता कि वे confidential information दिखाने वाली screen पर Facebook glasses तान दें
मुझे लगभग कोई भी ऐसी स्थिति नहीं सूझती जहाँ मैं facial recognition के उपयोग की अनुमति दूँ। अगर मैं किसी restaurant में हूँ, तो Facebook को यह जानने की क्या ज़रूरत है कि मैं कहाँ खा रहा हूँ? अगर music club में हूँ, तो उसे यह जानने की क्या ज़रूरत है कि मैं क्या सुन रहा हूँ? public restroom जैसी जगहें तो बिल्कुल नहीं। सार्वजनिक फुटपाथ पर भी मैं यह नहीं चाहता कि कोई ट्रैक करे कि मैं किससे बात कर रहा हूँ
मुझे नहीं लगता कि मैं इसके इस्तेमाल की किसी भी स्थिति को ज़रा भी स्वीकार कर पाऊँगा। सच कहूँ तो ऐसे public spyware पहनने वाले लोगों को लेकर सिर्फ़ सार्वजनिक शर्मिंदा करने से आगे बढ़कर, मैं चाहता हूँ कि जल्दी ही ऐसा माहौल बने जहाँ बाहर इसे पहनकर पकड़े जाने पर लोग शारीरिक रूप से डर महसूस करें
और जो अनुमानित जवाब आता है, “क्या आप workplace में phone camera भी ban करते हैं?”, उसका जवाब है: हाँ। अगर कोई पूरे दिन phone camera स्क्रीन की ओर करके काम रिकॉर्ड करे, तो वह भी निश्चित रूप से मना होगा। हम जिन vendors की समीक्षा कर चुके हैं और जिनसे contract है, उनके अलावा किसी के साथ confidential information साझा नहीं करते, और अगर मैं किसी को रिकॉर्ड करते देखूँ तो उसे बुलाकर समझाऊँगा कि यह बहुत खतरनाक स्थिति है
मैं नहीं चाहता कि BigTech या सरकार मेरी हर interaction को track करे, लेकिन अगर पड़ोसी की कार का dashcam बस यह local रूप से रिकॉर्ड करे कि मैं उसके driveway के सामने से गुज़रा था, तो जब तक वह किसी third party को upload न हो, मुझे उससे दिक्कत नहीं है
बेशक ज़्यादातर लोग self-hosting नहीं चाहेंगे, और ज़्यादातर services end-to-end encrypted भी नहीं हैं, इसलिए इसे मौजूदा व्यवहारिक संदर्भ में बहुत महत्वपूर्ण बताना कठिन है। फिर भी regulation और उस दुनिया के बारे में सोचते समय जो हम चाहते हैं, यह एक प्रासंगिक फ़र्क है
इसमें Second Amendment जैसी तर्क-रेखा है, और इसका जवाब देना काफ़ी कठिन है। कम से कम यह लोगों को मारता तो नहीं। मैं चाहता हूँ कि हर police officer हमेशा 5-6 ऐसे recording devices से घिरा रहे जिन्हें वह नियंत्रित न कर सके। वह कम बुरा विकल्प है
बेशक मुझे यह ढाँचा पसंद नहीं कि सब कुछ Facebook तक जाए, और उम्मीद है कि हम उस चरण से आगे निकल जाएँगे
अगर Meta, Flock, और Palantir हाथ मिला लें तो क्या होगा? लगता है Musk-शैली की bundled stock जैसी evil combo बन सकती है