;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Esta ferramenta promete impedir que reconhecimento facial analise sua foto

Equipe de Fawkes mostra imagens antes e depois das fotografias de Jessica Simpson, Gwyneth Paltrow e Patrick Dempsey encobertas pela ferramenta - SAND Lab, Universidade de Chicago
Equipe de Fawkes mostra imagens antes e depois das fotografias de Jessica Simpson, Gwyneth Paltrow e Patrick Dempsey encobertas pela ferramenta Imagem: SAND Lab, Universidade de Chicago

Nicole D'Almeida

Colaboração para Tilt

05/08/2020 16h55

Engenheiros da computação da Universidade de Chicago, nos EUA, desenvolvem uma ferramenta que burla os sistemas de reconhecimento facial para dar mais privacidade às pessoas. Segundo reportagem de segunda-feira (3) do New York Times, o software Fawkes faz isso distorcendo ou trocando alguns pixels, ou combinando o rosto da pessoa com o de alguma celebridade menos parecida com ela.

O nome do programa é uma homenagem a Guy Fawkes, soldado britânico que inspirou máscaras de manifestantes do mundo todo após o filme "V de Vingança" (2005).

O sistema não faz distinção de gênero, o que acaba colocando maquiagens exageradas e barba em certas pessoas, fazendo parecer que o rosto está com alguma sujeira, por exemplo. Mas quando o software funciona de forma perfeita, essa alteração da imagem é quase imperceptível a olho nu.

Durante os testes, os pesquisadores usaram imagens da atriz Gwyneth Paltrow e as "camuflaram", associando seu rosto a características de fotos do ator Patrick Dempsey. Segundo a equipe do Fawkes, essas mudanças conseguiram enganar os sistemas de reconhecimento facial da Amazon, Microsoft e Megvii, empresa chinesa de tecnologia.

A Universidade de Chicago disponibilizou o Fawkes gratuitamente. Para testar, você só precisa fazer o da imagem desejada no aplicativo. Este, por sua vez, embaralhará os pixels em cerca de 40 segundos, de acordo com os pesquisadores.

O reconhecimento facial ficou mais conhecido quando smartphones começaram a adotá-lo como uma forma de desbloquear a tela. Mas em anos recentes, a ferramenta tem sido usada por governos e autoridades para identificar pessoas na multidão. Empresas também buscam criar grandes bancos de dados de rostos, gerando debates éticos e comerciais sobre esse tipo de dado.

Um exemplo disso é a startup norte-americana Clearview AI. Em parceria com a polícia estadunidense, ela criou uma ferramenta capaz de encontrar um rosto em uma conta do Facebook, assim, revelando a identidade da pessoa. Para isso, foram coletadas bilhões de fotos online.

O propósito do Fawkes é dificultar ao máximo que empresas como a Clearview criem um banco funcional de dados de rostos, já que as fotos alteradas não bateriam com o conteúdo armazenado pelos sistemas de reconhecimento facial. Segundo Shawn Shan, pesquisador da Universidade de Chicago, esse é um ataque algorítmico chamado envenenamento por dados.

Entretanto, em entrevista ao The New York Times, o chefe da Clearview AI, Hoan Ton-That, disse que a ferramenta não seria capaz disso porque sua inteligência artificial seria capaz de aprender também com as fotos alteradas. Além disso, o volume de fotos corretas na web é muito alto para o Fawkes interferir em seus resultados.

"Existem bilhões de fotos não modificadas na internet, todas em diferentes nomes de domínio. Na prática, é quase certamente tarde demais para aperfeiçoar uma tecnologia como a Fawkes e implantá-la em grande escala", diz.

Para Joseph Atick, pioneiro em sistemas de reconhecimento facial ouvido pelo jornal, apenas legisladores podem garantir o direito ao anonimato facial contra empresas desse tipo. Já para Emily Wenger, estudante que ajudou a criar Fawkes, a tecnologia e as leis ajudam na privacidade, mas é um "jogo de gato e rato". "E você pode ter uma lei, mas sempre haverá atores ilegais", argumenta.