- Stella v273.0.0.21 chứa một cơ chế nhận diện khuôn mặt trên thiết bị bên trong ứng dụng đồng hành kính thông minh Meta, kết nối phát hiện khuôn mặt, căn chỉnh, embedding, DB cục bộ, chỉ mục vector, đường dẫn lưu trữ và bề mặt thông báo
- Khi gọi trực tiếp các handler sẵn có bằng ảnh thử nghiệm, hệ thống đã chạy từ phát hiện khuôn mặt, tạo embedding sinh trắc học 2048 chiều, tìm kiếm chỉ mục cục bộ và khi khớp thì gửi thông báo Android
"Person recognized"
- Ba mô hình ExecuTorch gồm SCRFD, KPSAligner và SFace được tải xuống qua NMLML, trong đó SFace đảm nhiệm việc chuyển đổi khuôn mặt thành embedding gồm 2048 số
person_profiles/objects.db của RLDrive dùng tìm kiếm cosine trên vec0 float[2048], và nhánh không khớp sẽ lưu khuôn mặt đã crop cùng dấu vân tay .jpg và .emb vào NameTagsPending/
- Trên tài khoản mặc định chưa đăng ký, thẻ
"Connections" và màn hình hồ sơ mục tiêu không xuất hiện, đồng thời cũng không quan sát thấy việc Meta đẩy dữ liệu namespace khuôn mặt, nên việc có triển khai hay không và vào thời điểm nào vẫn là điểm chưa được xác nhận
Phạm vi và giới hạn
- Ứng dụng được phân tích là bản dựng Android
com.facebook.stella v273.0.0.21 của ứng dụng đồng hành kính thông minh Meta Stella
- Bên trong ứng dụng đồng thời có 3 mô hình khuôn mặt, schema DB cục bộ, chỉ mục vector cosine khớp với đầu ra mô hình, đường ghi chuẩn bị hồ sơ sinh trắc học lên đĩa, bề mặt thông báo và widget
"Connections" cho người dùng
- Khi gọi trực tiếp các handler hiện có bằng ảnh thử nghiệm, pipeline chạy đến cuối, phát hiện khuôn mặt, tạo embedding 2048 chiều rồi tra cứu chỉ mục cục bộ
- Trên tài khoản mặc định chưa đăng ký, UI cho người dùng không xuất hiện, màn hình mà deeplink thông báo mở ra cũng không có trong bản dựng v273, và trong tài khoản thử nghiệm cũng không quan sát thấy luồng Meta đẩy dữ liệu danh tính từ máy chủ vào DB liên quan
- Điểm mấu chốt là đây chưa phải bằng chứng cho thấy Meta đang âm thầm nhận diện người dùng phổ thông, mà là một cơ chế hoàn chỉnh có thể thực hiện chức năng đó đã được lắp sẵn trên thiết bị và hiện đang bị Meta chặn bằng gate
Stack mô hình
| Tên tài sản |
Tệp |
Kích thước |
Vai trò |
android_facerec_scrfd |
SCRFD.pte |
3.4 MB |
Phát hiện khuôn mặt trong ảnh |
android_facerec_kps_aligner |
KPSAligner.pte |
117 KB |
Crop và căn chỉnh khuôn mặt đã phát hiện |
android_facerec_sface |
SFace.pte |
96 MB |
Chuyển khuôn mặt thành embedding gồm 2048 số |
- Cả ba mô hình đều là tài sản ExecuTorch
.pte được tải từ Meta thông qua hệ thống phân phối tài sản NMLML của Meta
SCRFD là SCRFD của InsightFace, SFace là SFace của Zhong et al. 2021, còn KPSAligner thuộc nhóm mô hình căn chỉnh dựa trên keypoint
- Biến thể SFace của Meta có kích thước 96 MB và đầu ra 2048 chiều, lớn hơn bản tham chiếu công khai khoảng 40 MB và 128–512 chiều
- Việc có mô hình phát hiện khuôn mặt và embedding tự nó chưa phải bằng chứng cho tính năng nhận diện, vì phát hiện khuôn mặt trên thiết bị cũng có thể dùng cho framing hoặc autofocus
Chỉ mục khuôn mặt cục bộ và cấu trúc DB
- Pipeline thực thi được thiết kế để đọc DB SQLite sau
/data/user/0/com.facebook.stella/files/rldrive/person_profiles/objects.db
- DB này nằm dưới namespace
person_profiles trong framework đồng bộ đa thiết bị RLDrive của Meta, là một kênh được thiết kế để được điền dữ liệu từ xa
- Trên tài khoản thử nghiệm không quan sát thấy Meta trực tiếp đẩy dữ liệu vào
person_profiles, nên điều được xác nhận là sự tồn tại của kênh này
- Schema cốt lõi tách riêng thông tin người, thông tin khuôn mặt và bảng tìm kiếm vector 2048 chiều
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);
- Hàng
face trỏ tới person thông qua personUri, còn face.mediaPath đóng vai trò khóa chính cho face_mediaPath_vec
- Quá trình nhận diện diễn ra bằng cách tìm kiếm embedding 2048 số theo độ tương đồng cosine rồi join với
person.name để dùng trong nội dung thông báo
vec0 là phần mở rộng mã nguồn mở sqlite-vec biến SQLite thành công cụ tương đồng vector, và chiều float[2048] khớp chính xác với dạng đầu ra của mô hình embedding SFace được đóng gói trong ứng dụng
- Schema cho phép nhiều hàng
face cho một personUri, nhưng trên thiết bị chưa đăng ký không thể thấy triển khai thực tế dùng dạng 1:1 hay 1:N
Nhánh thực thi và tệp lưu trữ
- Trong thử nghiệm chạy toàn bộ pipeline hai lần, nhánh không khớp cho chỉ mục rỗng và nhánh khớp với một embedding được nạp trước đã tách biệt rõ ràng
- Nhánh không khớp ghi cặp
(uuid.jpg, uuid.emb) vào NameTagsPending/ và không gửi thông báo
- Nhánh khớp hiển thị thông báo Android trên kênh production
nametags_recognition, với tiêu đề "Person recognized", nội dung "Recognized Michel Foucault", và không thêm gì vào NameTagsPending/
- Khuôn mặt không được nhận diện được lưu tại đường dẫn sau
/data/user/0/com.facebook.stella/files/NameTagsPending/
- Mỗi khuôn mặt chưa được nhận diện tạo ra một cặp
.jpg và .emb với tên UUID mới, trong đó .jpg là khuôn mặt đã được crop và căn chỉnh từ đầu ra SCRFD và KPSAligner, còn .emb là dấu vân tay SFace 2048 số
- Thư mục có mode
0700, vẫn tồn tại sau khi khởi động lại, và thao tác ghi chỉ xảy ra ở nhánh không khớp
- Tệp
.emb đã được xác minh có kích thước 8,192 byte, cấu trúc 2048 × float32 big-endian, L2 norm 0.999999, giá trị min/max −0.092110 / +0.098950, mean +0.000292
- Cặp
(uuid.jpg, uuid.emb) là một hồ sơ sinh trắc học hoàn chỉnh với cùng định dạng và mã hóa như thứ mà chỉ mục cosine trong person_profiles/objects.db được thiết kế để đối chiếu
Thông báo và UI người dùng
- Stella định nghĩa kênh thông báo Android
nametags_recognition, có tên "NameTags recognition", mô tả "Notifications for recognized NameTags connections", và mức ưu tiên IMPORTANCE_HIGH kèm heads-up, âm thanh và badge
- Mẫu thông báo được hardcode trong handler nhận diện, với tiêu đề luôn là
"Person recognized", nội dung luôn có dạng "Recognized " + name, trong đó name đến từ bảng person trong person_profiles/objects.db
- Có thể chạm vào thông báo, và nó được cấu hình để mở màn hình hồ sơ người bên trong Stella bằng deeplink do Meta tạo có dạng
fb-viewapp://name_tags?face_id=<face_id>
- Trong v273 không tìm thấy màn hình đích tương ứng và nó cũng không có trong navigation graph, nên khi chạm vào thông báo sẽ chuyển tới tab mặc định của Stella
- Trong APK có một thẻ nằm dưới mục
"Connections", với chuỗi được hardcode là "See your connections" và "Remember the people you met and make new connections."
- Trên tài khoản mặc định chưa đăng ký, thẻ này không xuất hiện trong tab Glasses, nhưng trong quá trình thử nghiệm đã có lúc trở nên hiển thị
Tổng hợp
- Stella v273 chứa toàn bộ stack nhận diện khuôn mặt trên thiết bị, bao gồm phát hiện, căn chỉnh, embedding, chỉ mục vector, lưu trữ, đường ghi và bề mặt thông báo
- Pipeline được chạy đến cuối có thể gắn tên cho khuôn mặt đã biết và hiển thị qua thông báo, đồng thời chuẩn bị crop và dấu vân tay của khuôn mặt chưa biết trên đĩa
- Chiều của chỉ mục, dạng embedding và schema lưu trữ khớp với nhau, cho thấy đây không phải các mảnh mã chết rời rạc mà là một hệ thống nhất quán
- Thẻ
"Connections" mà người dùng sẽ thấy và màn hình hồ sơ đích của thông báo hoặc không có trong bản dựng, hoặc đang bị ẩn sâu hơn
- DB mà pipeline đang dùng nằm trong một namespace đồng bộ cùng với các namespace khác do Meta điền từ phía máy chủ, nhưng trên tài khoản thử nghiệm không quan sát thấy việc đẩy namespace khuôn mặt
- Điều chưa được xác nhận là liệu Meta hiện có nhận diện người lạ cho người dùng hay không, dữ liệu đăng ký có đang chảy hay không, và tính năng này có đang được bật trong production hay không
- Cơ chế được xây dựng, triển khai và nối dây đến mức có cả dấu vân tay khuôn mặt 2048 chiều và thông báo hardcode
"Person recognized" là một khoản đầu tư kỹ thuật đáng kể; việc nó có thực sự được áp dụng trong production hay từ thời điểm nào vẫn là câu hỏi Meta phải trả lời
1 bình luận
Ý kiến trên Hacker News
Giá mà tính năng này tồn tại hoàn toàn ngoại tuyến thì tốt biết mấy. Tôi bị chứng mù nhận diện khuôn mặt, nên nếu có thể đưa ảnh bạn bè vào một cơ sở dữ liệu ngoại tuyến để thiết bị nhận ra họ thì sẽ thực sự hữu ích
Khả năng tiếp cận không nên đòi hỏi phải đánh đổi quyền riêng tư
Gần đây tôi nghe được phép so sánh hay nhất để giải thích chứng mù nhận diện khuôn mặt: quả táo. Nếu đặt hai quả táo cạnh nhau thì bạn có thể thấy sự khác biệt, nhưng việc nhận ra một quả táo cụ thể giữa 50 quả táo tương tự lại là một vấn đề hoàn toàn khác
Cảm giác giống như một quả táo trên đường bước tới nói chuyện với bạn, và bạn phải nhớ xem mình đã gặp nó ở đâu; có cách đối phó vòng vo, nhưng rất phụ thuộc vào ngữ cảnh và thường xuyên sai. Bạn có thể biết quả táo có tóc đỏ và râu là đồng nghiệp ở văn phòng bên cạnh, nhưng lại không chắc nó có phải là quả táo đã vẫy tay với bạn hôm qua ở trung tâm thành phố hay không
Thay đổi kiểu tóc đặc biệt là một vấn đề lớn. Có lần vào giờ ăn trưa tôi tự hỏi đồng nghiệp mới là ai, rồi sau khi nghe người đó nói mới nhận ra qua giọng nói rằng đó là người đã làm việc với tôi 10 năm, chỉ đổi màu tóc thôi
Khi Google Glass lần đầu ra mắt vào năm 2012, tôi đang điều hành một startup công nghệ hội nghị và có cơ sở dữ liệu ảnh hồ sơ của diễn giả lẫn người tham dự, nên ý tưởng về một ứng dụng “để kính tìm giúp người mà bạn hẹn gặp trong một căn phòng đông đúc” đương nhiên xuất hiện
Nhưng điều khoản dành cho nhà phát triển của Google Glass nghiêm cấm điều đó, và chỉ cần nghĩ thêm một chút là hiểu ngay vì sao
Tôi muốn đeo thứ hoàn toàn ngược lại với cái này. Cần một thiết bị báo cho tôi biết nếu có ai đó gần đó đang đeo kính AI của Facebook để tôi tránh đi
Tôi đã nói rất rõ với người nhà là đừng chia sẻ ảnh bọn trẻ lên các nền tảng của Meta. Nếu những thiết bị như thế này bị áp đặt lên công chúng không quen biết, sẽ có người phản ứng dữ dội
Nó hoàn toàn khác với CCTV vốn đã được chấp nhận rộng rãi, hay việc ghi hình thủ công bằng camera và smartphone
Theo tôi, Meta là ví dụ tiêu biểu của xâm phạm quyền riêng tư trong lịch sử công nghệ. Lần này họ đã đi quá xa với kính thông minh, khi ghi hình mọi người trong nhà riêng, đôi khi còn ở trạng thái khỏa thân, mà không có sự đồng ý
Đây là nội dung cũng đã được thảo luận ở đây khoảng một tháng trước: Meta in row after workers who saw smart glasses users having sex lose jobs (https://news.ycombinator.com/item?id=47961838)
Có vẻ họ rất quyết tâm làm các luật sư ở Chicago giàu lên. [0]
[0]: https://en.wikipedia.org/wiki/Biometric_Information_Privacy_Act
Theo nội dung trong liên kết, BIPA yêu cầu các công ty kinh doanh tại Illinois phải tuân thủ các yêu cầu liên quan đến việc thu thập và lưu trữ thông tin sinh trắc học, phải có sự đồng ý nếu muốn thu thập hoặc tiết lộ định danh sinh trắc học của cá nhân, phải hủy đúng hạn và lưu trữ an toàn. Việc quản lý dữ liệu sinh trắc học cũng đòi hỏi một “tiêu chuẩn cẩn trọng hợp lý”
Ý tưởng startup: gắn LED cận hồng ngoại vào phần cầu nối và hai bên gọng kính thường, sao cho hiệu suất tốt và sáng, nhưng PWM với một xung nhịp không đều khoảng 10Hz
Nếu muốn chụp ảnh tôi thì hãy hỏi, hoặc dùng phim
Tôi không nghĩ ra nổi một trường hợp sử dụng thực tế nào giúp ích cho đời mình. Vì đã có nhận diện khuôn mặt cục bộ tích hợp ngay sau cặp kính rồi
Tôi nhớ được tên của một số người, và cuối cùng đi đến chỗ thấy rằng bản thân khả năng nhớ tên giỏi cũng không phải điều quá quan trọng. Tôi nhớ tên những người tôi thực sự quý mến.
Ngược lại, cũng đáng để nghĩ xem liệu người khác có thật sự bận tâm nếu ai đó quên tên họ hay không. Hồi nhỏ tôi có một người bạn trong đội hướng đạo lúc nào cũng đi cùng suốt cả năm, nhưng tôi không nhớ tên cậu ấy, mà cũng chẳng có vấn đề gì
Dù đã chơi với một nhóm đông gần 10 năm, tôi vẫn rất khó nhớ ai là ai, và tới thời đại dịch khi Zoom hiện tên mọi người thì tôi mới dần dần quen mặt trong vài tuần.
Khi dạy lặn scuba, trên đường lái xe tới cửa hàng tôi sẽ học thuộc danh sách tên học viên theo thứ tự càng ngẫu nhiên càng tốt để giảm gánh nặng nhận thức khi ghép mặt với tên. Khi điểm danh, tôi viết tất cả tên ra, rồi gọi hỏi từng người và dần dần cố làm mà không cần tờ ghi chú.
Nhưng một khi mọi người mặc đồ lặn vào, nhất là ở nơi ai cũng đội mũ trùm đầu, thì mọi thứ sụp đổ ngay. Chỉ cần hai người đàn ông da trắng khoảng 35 tuổi là tôi đã dễ nhầm. Nếu được xã hội chấp nhận, tôi muốn dùng thứ này như kính thuốc để giảm gánh nặng đó
Tôi không nghĩ Meta làm chuyện này vì mục tiêu hỗ trợ tiếp cận
Tất nhiên đó là một cuộc trò chuyện khá gượng gạo, nên tôi cũng có chiến lược là giới thiệu nửa vời rồi hy vọng mọi người sẽ tự giới thiệu lại đầy đủ với nhau, để lúc đó mình nhớ ra
Tôi tò mò về hướng đi này như một nguyên tắc chung: máy tính có thể tự động làm bao nhiêu việc cũng được miễn là không chạm tới ranh giới mạng, nhưng nếu muốn truy cập mạng thì nhất định phải được khởi phát bởi hành động rõ ràng của con người.
Nó hơi giống việc trong trình duyệt, thao tác bắt chuột hoặc vào toàn màn hình đòi hỏi một hành động người dùng đáng tin cậy, nhưng áp dụng rộng hơn. Phạm vi giao tiếp mạng cũng phải đủ rõ ràng để người dùng không thể hiểu nhầm.
Nếu quá phức tạp đến mức không thể giải thích cho người dùng mục tiêu, thì không nên làm thay họ. Điều này chủ yếu áp dụng cho sản phẩm tiêu dùng đại chúng chứ không phải triển khai nội bộ.
Nếu không dựng một ranh giới cứng như vậy, tôi nghĩ chúng ta sẽ đi tới Panopticon. Ngay cả khi không có sự thúc đẩy mạnh mẽ từ chính phủ, chỉ riêng động cơ lợi nhuận đơn thuần của thời đại số cũng đủ dẫn tới kết quả đó. Các quy tắc chi tiết trên lý thuyết có thể tốt hơn, nhưng khi có động cơ đủ mạnh thì con người không giỏi tuân thủ các quy tắc phức tạp
Tôi đang ở vị trí có thể đặt ra chính sách bảo mật tại nơi làm việc, và một trong số đó là cấm kính thông minh trong văn phòng. Tôi không thể để nhân viên chĩa kính Facebook vào màn hình đang hiện thông tin mật.
Tôi cũng hầu như không nghĩ ra hoàn cảnh nào có thể chấp nhận việc dùng nhận diện khuôn mặt với tôi. Nếu ở nhà hàng, chẳng có lý do gì Facebook phải biết tôi ăn ở đâu; nếu ở câu lạc bộ âm nhạc, họ cũng không cần biết tôi nghe gì. Những nơi như nhà vệ sinh công cộng thì tuyệt đối không được. Ngay cả trên vỉa hè công cộng, tôi cũng không muốn bị theo dõi xem mình đang nói chuyện với ai.
Tôi không thấy mình có thể chấp nhận dù chỉ một chút bất kỳ bối cảnh sử dụng nào của thứ này. Thành thật mà nói, ngoài việc bêu xấu công khai những người đeo loại spyware công cộng này, tôi còn mong sớm xuất hiện một bầu không khí khiến người ta phải thực sự sợ hãi về mặt thể chất nếu bị bắt gặp đeo nó ngoài đường.
Để trả lời phản biện quá dễ đoán là “ở chỗ làm anh cũng cấm camera điện thoại à”, thì có. Việc cầm camera điện thoại chĩa vào màn hình cả ngày để ghi lại công việc đương nhiên cũng sẽ bị cấm. Chúng tôi không chia sẻ thông tin mật cho bất kỳ ai ngoài các nhà cung cấp đã được thẩm định và ký hợp đồng, và nếu thấy ai đang ghi hình thì tôi sẽ gọi họ ra và giải thích rằng đó là một tình huống cực kỳ nguy hiểm
Tôi không muốn BigTech hay chính phủ theo dõi mọi tương tác của mình, nhưng việc camera hành trình trên xe nhà hàng xóm ghi cục bộ chuyện tôi đi ngang qua lối xe vào nhà họ thì vẫn chấp nhận được, miễn là không tải lên cho bên thứ ba.
Tất nhiên, đa số mọi người không muốn tự host, và đa số dịch vụ cũng không mã hóa đầu cuối, nên khó mà nói đây là điều quan trọng về mặt thực tiễn ngay lúc này. Dù vậy, nếu nghĩ về quy định và về thế giới mà chúng ta muốn có, thì đây vẫn là một phân biệt có liên quan
Có một logic kiểu Tu chính án thứ hai ở đây, và khá khó phản bác. Ít nhất thì thứ này không giết người. Tôi muốn mọi cảnh sát luôn bị bao quanh bởi 5-6 thiết bị ghi hình mà họ không kiểm soát được. Đó là lựa chọn ít tệ hơn.
Tất nhiên tôi không thích cấu trúc mà mọi thứ đều đổ về Facebook, và hy vọng chúng ta sẽ vượt qua giai đoạn đó
Sẽ ra sao nếu Meta, Flock và Palantir hợp sức? Có vẻ có thể tạo ra một combo tà ác kiểu gói cổ phiếu bó của Musk