1 pontos por GN⁺ 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Stella v273.0.0.21 inclui, dentro do app companheiro dos óculos inteligentes da Meta, um mecanismo de reconhecimento facial no dispositivo que conecta detecção de rosto, alinhamento, embedding, banco de dados local, índice vetorial, caminho de armazenamento e superfície de notificações
  • Ao chamar diretamente os handlers existentes com uma foto de teste, o fluxo executou detecção de rosto, geração de embedding biométrico de 2048 dimensões, busca no índice local e, em caso de correspondência, envio da notificação Android "Person recognized"
  • Três modelos ExecuTorch — SCRFD, KPSAligner e SFace — são baixados via NMLML, e o SFace é responsável por converter um rosto em um embedding de 2048 números
  • O person_profiles/objects.db do RLDrive usa busca por cosseno em vec0 float[2048], e o caminho de sem correspondência salva o rosto recortado .jpg e a impressão .emb em NameTagsPending/
  • Em contas padrão não registradas, o cartão "Connections" e a tela de perfil de destino não aparecem, e também não foi observado push de dados do namespace facial da Meta, então se isso será distribuído e quando continua sendo a principal incógnita

Escopo e limitações

  • O app analisado é a build Android com.facebook.stella v273.0.0.21 do app companheiro dos óculos inteligentes da Meta, Stella
  • Dentro do app coexistem 3 modelos faciais, esquema de banco de dados local, índice vetorial de similaridade por cosseno compatível com a saída dos modelos, caminho de escrita que prepara registros biométricos em disco, superfície de notificações e o widget voltado ao usuário "Connections"
  • Ao chamar diretamente os handlers existentes com uma foto de teste, o pipeline foi executado até o fim, detectando o rosto, criando um embedding de 2048 dimensões e consultando o índice local
  • Em uma conta padrão não registrada, a UI voltada ao usuário não apareceu, a tela aberta pelo deeplink da notificação também não existia na build v273, e o fluxo em que a Meta enviaria dados de identidade do servidor para o banco relacionado não foi observado na conta de teste
  • O ponto central é distinguir isso de uma prova de que a Meta já identifica pessoas secretamente para usuários comuns: o que existe é um mecanismo completo para essa função montado no dispositivo e bloqueado por gates da Meta

Pilha de modelos

Nome do ativo Arquivo Tamanho Função
android_facerec_scrfd SCRFD.pte 3.4 MB Detecta rostos na imagem
android_facerec_kps_aligner KPSAligner.pte 117 KB Recorta e alinha o rosto detectado
android_facerec_sface SFace.pte 96 MB Converte o rosto em um embedding de 2048 números
  • Os três modelos são ativos .pte do ExecuTorch baixados da Meta por meio do sistema de entrega de ativos NMLML
  • SCRFD corresponde ao SCRFD do InsightFace, SFace ao SFace de Zhong et al. 2021, e KPSAligner pertence à família de modelos de alinhamento baseado em keypoints
  • A variante de SFace da Meta, com 96 MB e saída de 2048 dimensões, parece maior que a referência pública, que fica em torno de 40 MB e 128–512 dimensões
  • O simples fato de incluir modelos de detecção de rosto e embedding não prova por si só a existência de reconhecimento, já que detecção facial no dispositivo também pode ser usada para enquadramento ou autofoco

Índice facial local e estrutura do banco de dados

  • O pipeline em execução lê o seguinte banco SQLite
/data/user/0/com.facebook.stella/files/rldrive/person_profiles/objects.db
  • Esse banco fica no namespace person_profiles do framework de sincronização entre dispositivos RLDrive da Meta, um canal projetado para ser preenchido remotamente
  • Na conta de teste não foi observado tráfego em que a Meta enviasse dados diretamente para person_profiles, então o que foi observado foi a existência do canal
  • O esquema principal separa informações da pessoa, informações do rosto e a tabela de busca vetorial em 2048 dimensões
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);
  • As linhas de face apontam para person via personUri, e face.mediaPath funciona como chave primária de face_mediaPath_vec
  • O reconhecimento busca o embedding de 2048 números por similaridade de cosseno e depois faz join com person.name, que é usado no texto da notificação
  • vec0 é a extensão open source sqlite-vec, que transforma o SQLite em um mecanismo de similaridade vetorial, e a dimensão float[2048] coincide exatamente com o formato de saída do embedder SFace incluído no app
  • O esquema permite várias linhas face para um mesmo personUri, mas em uma implantação real não é possível ver, em um dispositivo não registrado, se isso seria usado como 1:1 ou 1:N

Ramificações de execução e arquivos salvos

  • Em um teste com duas execuções do pipeline completo, houve separação entre o ramo de sem correspondência para índice vazio e o ramo de correspondência com um único embedding pré-inserido
  • O ramo sem correspondência grava pares (uuid.jpg, uuid.emb) em NameTagsPending/ e não envia notificação
  • O ramo com correspondência exibe uma notificação Android no canal de produção nametags_recognition, com título "Person recognized" e texto "Recognized Michel Foucault", sem adicionar nada em NameTagsPending/
  • Rostos não reconhecidos são salvos no seguinte caminho
/data/user/0/com.facebook.stella/files/NameTagsPending/
  • Cada rosto não reconhecido gera um par .jpg e .emb com um novo UUID; o .jpg é o rosto recortado e alinhado produzido por SCRFD e KPSAligner, e o .emb é a impressão SFace de 2048 números
  • O diretório usa modo 0700, persiste após reinicialização e a escrita só acontece no ramo sem correspondência
  • O arquivo .emb validado tem 8.192 bytes, estrutura big-endian 2048 × float32, norma L2 0.999999, valores min/max −0.092110 / +0.098950 e média +0.000292
  • Os pares (uuid.jpg, uuid.emb) são registros biométricos completos, com o mesmo formato e codificação projetados para comparação pelo índice por cosseno em person_profiles/objects.db

Notificações e UI do usuário

  • O Stella define um canal de notificação Android chamado nametags_recognition, com nome "NameTags recognition", descrição "Notifications for recognized NameTags connections" e importância IMPORTANCE_HIGH, com heads-up, som e badge
  • O template da notificação é hardcoded dentro do handler de reconhecimento, com título sempre "Person recognized" e texto sempre no formato "Recognized " + name, em que name vem da tabela person de person_profiles/objects.db
  • A notificação pode ser tocada e foi configurada para abrir a tela de perfil de pessoa dentro do Stella por meio de um deeplink criado pela Meta no formato fb-viewapp://name_tags?face_id=<face_id>
  • Na v273, essa tela de destino não pôde ser encontrada e também não aparece no grafo de navegação, então tocar na notificação leva à aba padrão do Stella
  • Dentro do APK há um cartão sob a seção "Connections", com as strings "See your connections" e "Remember the people you met and make new connections." hardcoded
  • Em contas padrão não registradas, esse cartão não apareceu na aba Glasses, mas durante os testes houve sinal de que ele poderia se tornar visível

Resumo

  • O Stella v273 contém uma pilha completa de reconhecimento facial no dispositivo, indo de detecção, alinhamento e embedding até índice vetorial, armazenamento, caminho de escrita e superfície de notificações
  • O pipeline executado até o fim exibe por notificação o nome de rostos conhecidos e prepara em disco o recorte e a impressão de rostos desconhecidos
  • Como a dimensão do índice, o formato do embedding e o esquema de armazenamento coincidem, isso não parece código morto disperso, mas sim um sistema consistente
  • O cartão "Connections" voltado ao usuário e a tela de perfil alvo da notificação não estão presentes na build ou estão escondidos em um nível mais profundo
  • O banco usado pelo pipeline ativo fica em um namespace de sincronização junto com outros namespaces preenchidos pela Meta do lado do servidor, mas não foi observado push do namespace facial na conta de teste
  • O que ainda não foi confirmado é se a Meta atualmente identifica desconhecidos para usuários, se os dados de registro estão fluindo e se esse recurso está ativado em produção
  • O mecanismo já construído, distribuído e conectado — incluindo a impressão facial de 2048 dimensões e a notificação hardcoded "Person recognized" — representa um investimento de engenharia; se e quando isso será aplicado em produção continua sendo uma questão que cabe à Meta responder

1 comentários

 
GN⁺ 4 시간 전
Comentários do Hacker News
  • Eu gostaria que esse tipo de recurso existisse totalmente offline. Tenho prosopagnosia, então seria realmente útil se eu pudesse colocar fotos de amigos em um banco de dados offline e fazer o sistema reconhecê-los
    Acessibilidade não deveria exigir abrir mão da privacidade

    • Penso exatamente o mesmo. Isso realmente ajudaria, mas eu não gostaria de dar acesso a uma empresa que cobiça os dados das pessoas ao meu redor
      Ouvi recentemente a melhor analogia para explicar prosopagnosia: maçãs. Se você colocar duas maçãs lado a lado, consegue ver a diferença, mas reconhecer uma maçã específica entre 50 maçãs parecidas é um problema totalmente diferente
      É como se uma maçã falasse com você na rua e você tivesse que lembrar de onde a conhece; existem formas de contornar isso, mas dependem muito de contexto e falham bastante. Posso saber que uma maçã ruiva e com barba é o colega do escritório ao lado, mas ainda assim fico em dúvida se é a mesma maçã que acenou para mim no centro ontem
      Mudanças de penteado são um problema especialmente grande. Uma vez, na hora do almoço, fiquei me perguntando quem era um colega novo e só reconheci pela voz quando ele falou; era alguém com quem eu trabalhava havia 10 anos e que só tinha mudado a cor do cabelo
    • Cada vez que sai um novo produto de software, eu me pergunto: “Parece bom, mas por que não posso usar sem conta, sem ficar preso à nuvem do desenvolvedor?”
    • Fico curioso sobre como as pessoas ao redor reagem à prosopagnosia. Se levam a falta de reconhecimento como grosseria, ou se reagem como no caso da afantasia, achando difícil acreditar que isso exista
    • A Meta primeiro precisa lançar o hardware para que se possa começar um sistema operacional alternativo. É uma pena não haver hardware de código aberto nessa área, mas comprar dispositivos fechados e instalar um sistema operacional alternativo é algo que já fazemos há tempos
    • Parece bem viável. Até o Immich rodando num Raspberry Pi pequeno processa reconhecimento facial em 50 mil fotos de um dia para o outro
  • Quando o Google Glass apareceu pela primeira vez em 2012, eu administrava uma startup de tecnologia para conferências, e como tínhamos um banco de dados com fotos de perfil de palestrantes e participantes, a ideia de um app que “fizesse os óculos encontrar a pessoa com quem você combinou de se encontrar em uma sala lotada” surgiu imediatamente
    Mas os termos para desenvolvedores do Google Glass proibiam isso de forma rigorosa, e bastou pensar um pouco mais para entender exatamente o porquê

    • A Meta é como um stalker que planta arbustos do lado de fora da sua casa e se esconde ali para conseguir mais dados. Dá a sensação de que ela quer ter esses dados antes de mais nada, sem nem saber direito o que vai fazer com eles
    • Também acho que só proibiram porque não descobriram como vender anúncios com isso
  • Eu gostaria de usar o exato oposto disso. Precisamos de um dispositivo que me avise quando alguém por perto estiver usando os óculos de IA do Facebook, para que eu possa evitar essa pessoa

    • O Nearby Glasses da Play Store faz isso. Não tenho relação com o app, só dei uma busca rápida antes de pensar em fazer eu mesmo
    • Mesmo que esse produto existisse, e se fosse o Facebook que o vendesse?
    • Não entendo por que o ônus de evitar isso deveria recair sobre mim. Não quero uma situação em que imagens minhas e da minha família sejam sugadas por padrão para uma empresa de publicidade e usadas de forma abusiva
      Já deixei bem claro para a família que não quero fotos das crianças compartilhadas em plataformas da Meta. Se esse tipo de dispositivo for imposto ao público em geral, inclusive a desconhecidos, algumas pessoas podem reagir de forma violenta
      Isso é completamente diferente de CCTV geralmente aceito ou da gravação manual com câmera ou smartphone
    • Eu também queria óculos que detectassem pessoas anti-óculos
  • Para mim, a Meta é um caso emblemático de violação de privacidade na história da tecnologia. Esses novos óculos inteligentes passaram muito do limite ao gravar pessoas dentro de casa, às vezes nuas, sem consentimento
    Isso também foi discutido aqui há cerca de um mês: Meta in row after workers who saw smart glasses users having sex lose jobs (https://news.ycombinator.com/item?id=47961838)

    • Deveria se tornar socialmente normal expulsar do seu espaço e da sua vida quem estiver usando esse tipo de óculos. Não importa que recursos de conveniência ofereçam: se você está usando um minerador de dados, não deveria ter o direito de ficar perto de mim
    • Esses óculos não gravam sozinhos. Alguém apertou um botão e gravou de propósito
  • Parece haver um esforço para deixar os advogados de Chicago ricos. [0]
    [0]: https://en.wikipedia.org/wiki/Biometric_Information_Privacy_Act

    • Essa lei trata de coleta de informações biométricas, não dos usuários finais de um serviço de reconhecimento facial em si
      Segundo o link, a BIPA exige que empresas que atuam em Illinois cumpram requisitos relacionados à coleta e ao armazenamento de dados biométricos, incluindo obter consentimento para coletar ou divulgar identificadores biométricos de uma pessoa, destruí-los em tempo hábil e armazená-los com segurança. A gestão dessas informações biométricas também exige um “padrão razoável de cuidado”
    • Então bastaria aplicar uma restrição geográfica, não?
    • Se custa 1 mil dólares por ocorrência e não há um peso exponencial crescente, na prática é quase um imposto
    • Advogados atuam em cima de leis interessantes. O que acontece se a lei mudar?
  • Ideia de startup: colocar LEDs de infravermelho próximo na ponte e nas hastes de uma armação comum, com boa eficiência e muito brilho, mas rodando PWM com um clock irregular de cerca de 10Hz
    Se quiser tirar uma foto minha, peça permissão ou use filme

    • Como efeito colateral divertido, acho que TVs ligariam e desligariam aleatoriamente ou trocariam de canal. Ainda assim, a ideia é ótima
    • Sim. Já existem projetos desse tipo para cegar câmeras de vigilância
    • Nesse caso, acho que começariam a colocar filtros infravermelhos nas câmeras
    • Será que não existe uma faixa estreita de frequência que interfira no funcionamento? Estou cada vez mais cansado de todas as câmeras ao redor e dos sistemas automáticos de leitura de placas
  • Não consigo pensar em um único uso prático disso que ajude na minha vida. Porque já existe reconhecimento facial local embutido bem atrás dos óculos

    • Há muitas pessoas com prosopagnosia, e eu sou uma delas; é especialmente constrangedor quando preciso lembrar nomes. Ainda assim, não gostaria de recorrer a tecnologia de vigilância para corrigir isso
    • É interessante ver nesta thread tantas pessoas com prosopagnosia ou que passam vergonha por não lembrar bem nomes. Eu realmente sou péssimo com nomes, mas já não tenho mais vergonha disso
      Lembro o nome de algumas pessoas, e no fim passei a achar que a capacidade de decorar nomes em si não tem tanta importância. Eu lembro os nomes das pessoas de quem realmente gosto
      Também vale pensar se alguém realmente se importa tanto assim quando eu esqueço seu nome. Quando eu era criança, tinha um amigo dos escoteiros com quem andei o ano inteiro, mas não lembro o nome dele, e isso nunca foi um grande problema
    • Não tenho diagnóstico de prosopagnosia, mas sou realmente péssimo com nomes. O que é mais estranho porque, em testes gerais de memória, fiquei no percentil 98
      Convivi com um grupo grande por quase 10 anos e ainda assim tinha dificuldade para lembrar quem era quem; durante a pandemia, quando o Zoom mostrava os nomes, fui aprendendo aos poucos ao longo de algumas semanas
      Quando dou aulas de mergulho, no caminho até a loja tento decorar a lista de nomes dos alunos em uma ordem o mais aleatória possível para reduzir a carga cognitiva de associar rostos e nomes. Na chamada, anoto todos os nomes e, ao fazer perguntas, vou tentando aos poucos ficar sem a cola
      Mas, quando todos colocam o equipamento, desanda na hora, especialmente em lugares onde se usa capuz. Se forem dois homens brancos de uns 35 anos, já fico confuso. Se fosse socialmente aceitável, eu gostaria de usar isso em óculos de grau para reduzir essa carga
    • https://en.wikipedia.org/wiki/Prosopagnosia
      Não acho que a Meta esteja fazendo isso por acessibilidade
    • Reconheço bem rostos, mas não lembro bem quem a pessoa é. Se fosse algo totalmente offline e com uma experiência de uso razoável, talvez eu considerasse pedir permissão a conhecidos para tirar uma foto e deixar os óculos ajudarem minha memória
      Claro, seria uma conversa bem estranha, então às vezes uso a estratégia de meio que apresentar as pessoas e esperar que elas se apresentem de verdade uma à outra, e aí eu tento lembrar naquele momento
  • Como princípio geral, fico me perguntando sobre esta direção: computadores podem automatizar à vontade desde que não cruzem a fronteira da rede; para acessar a rede, isso sempre deveria começar com uma ação explícita da pessoa
    Seria algo parecido com o fato de o navegador exigir uma ação confiável do usuário para capturar o mouse ou entrar em tela cheia, só que aplicado de forma mais ampla. O escopo da comunicação em rede também deveria ser claro, sem margem para o usuário se enganar
    Se for complexo demais para ser explicado ao usuário-alvo, então não deveria ser feito em nome dele. Isso se aplica mais a produtos de consumo de massa do que a distribuições internas
    Sem estabelecer uma fronteira rígida assim, acho que vamos parar num panóptico. Mesmo sem um impulso ativo do governo, o simples incentivo ao lucro na era digital já leva a esse resultado. Regras detalhadas talvez sejam melhores em teoria, mas, quando os incentivos são fortes, as pessoas não conseguem seguir bem regras complexas

    • Parece uma boa ideia. Hoje muitos apps se comunicam com o servidor com certificados fixados, então literalmente não há como eu ver os dados que meu aparelho troca pela internet. Isso é uma loucura e deveria ser proibido
  • Estou numa posição em que posso definir políticas de segurança no trabalho, e uma delas é proibir óculos inteligentes no escritório. Não dá para deixar funcionários apontarem óculos do Facebook para telas com informações confidenciais
    Quase não consigo imaginar nenhuma situação em que eu aceitaria o uso de reconhecimento facial. Num restaurante, não há motivo para o Facebook saber onde estou comendo; num clube de música, não precisa saber o que estou ouvindo. Em lugares como banheiros públicos, jamais. Nem na calçada pública quero ser rastreado quanto a com quem estou falando
    Não consigo imaginar aceitar isso em nenhuma situação. Sinceramente, além de expor publicamente quem usar esse tipo de spyware público, eu gostaria que logo surgisse um clima em que as pessoas tivessem medo físico de serem flagradas usando isso na rua
    Respondendo à objeção óbvia de “então vocês também proíbem câmera de celular no trabalho”: sim. Também seria obviamente proibido passar o dia inteiro apontando a câmera do celular para a tela e gravando o trabalho. Não compartilhamos informações confidenciais com ninguém além dos fornecedores avaliados e contratados, e se eu visse alguém gravando, chamaria a pessoa e explicaria que é uma situação muito arriscada

    • Pior ainda, já vi threads em que usuários desses óculos discutem como contornar ou desativar a luz indicadora de gravação para que os outros não saibam quando está ligada
    • Também é importante distinguir a diferença entre metadados e vídeo completo, e entre uma solução centralizada e uma solução local no dispositivo
      Eu não quero que Big Tech ou o governo rastreiem todas as minhas interações, mas um dashcam do carro do vizinho registrar localmente que eu passei pela entrada da casa dele me parece aceitável, desde que isso não seja enviado a terceiros
      Claro, a maioria das pessoas não quer fazer auto-hospedagem, e a maioria dos serviços também não usa criptografia de ponta a ponta, então é difícil vender isso como algo importante na prática hoje. Ainda assim, é uma distinção relevante quando pensamos em regulação e no tipo de mundo que queremos
    • É um bom ponto de partida para pensar como políticas públicas de privacidade deveriam evoluir
    • Concordo, mas consigo imaginar perfeitamente mulheres usando isso para “se sentirem seguras”. Em épocas do ano em que escurece cedo, mulheres já usam coletes com luzes. Ainda não vi ninguém usando bodycam, mas poderia acontecer
    • A tecnologia já existe. Não dá para colocar o gênio de volta na garrafa, e isso vai ficar mais barato e mais invasivo. A única pergunta que podemos controlar é se isso vai ficar nas mãos de todo mundo ou só do governo e das empresas
      Há uma lógica de Segunda Emenda aqui, e é bem difícil rebater. Pelo menos isso não mata ninguém. Quero que todo policial esteja sempre cercado por 5 ou 6 dispositivos de gravação que ele não controla. Essa parece a opção menos ruim
      Claro, não gosto da ideia de tudo ir parar no Facebook, e espero que passemos dessa fase
  • E se Meta, Flock e Palantir juntassem forças? Parece que daria para criar uma combo do mal no estilo das ações empacotadas do Musk

    • Pelo que entendo, a Palantir já é uma empresa que agrega esse tipo de tecnologia. Então essa ideia já parece bem próxima da realidade
    • O que te faz pensar que eles ainda não fizeram isso?
    • Isso se chama NSA