;(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

Pornô de vingança com 'deepfakes': por que precisamos nos preocupar com isso

Em meio a vácuo legal e com aplicativos cada vez mais íveis, vídeos falsos com celebridades e políticos se propagam - GettyImages
Em meio a vácuo legal e com aplicativos cada vez mais íveis, vídeos falsos com celebridades e políticos se propagam Imagem: GettyImages

18/07/2018 09h17

Você recebeu um link para assistir vídeos pornôs de celebridades ou viu um político dizendo algo completamente incomum? Cuidado: pode ser falso.

Vídeos chamados de "deepfake" são produzidos com programas de Inteligência Artificial que criam versões computadorizadas do rosto de alguém e são capazes de manipular sua fala – literalmente colocar “palavras na boca" desse alguém – ou seu contexto, por exemplo, adicionando a cabeça de uma atriz de Hollywood ao corpo de uma estrela pornô.

Já existem falsos vídeos do ex-presidente americano Barack Obama e falsos pornôs com atrizes como Emma Watson. Diversos desses vídeos têm sido tirados de circulação de sites americanos como o Gfycat.

Veja também

Até pessoas comuns podem ser alvo: especialistas temem que a prática do “pornô da vingança” (quando uma pessoa divulga um vídeo íntimo do ex-namorado, por exemplo) ganhe novo impulso com a possibilidade de manipulação de imagens.

Outro perigo, potencialmente ainda mais danoso e de impactos globais, é a adulteração de falas de políticos em campanhas eleitorais.

A criação desses vídeos tornou-se mais comum e fácil depois do lançamento de uma ferramenta grátis, no início deste ano, que tornou a troca de rostos um processo relativamente simples. O desenvolvedor do FakeApp diz que ele foi baixado mais de 100 mil vezes.

Seu funcionamento se baseia em um algoritmo que cria uma versão computadorizada do rosto de uma celebridade ao analisar centenas de fotos desta pessoa e também um vídeo de quem terá seu rosto substituído.

Os resultados variam bastante em termos de qualidade. Mas, em alguns casos, quando as duas pessoas envolvidas na troca são parecidas fisicamente, o produto final chega a ser convincente.

Também preocupa o fato de as legislações dos países não conseguirem acompanhar a tecnologia, criando um vácuo legal que dificulta a punição de criadores de “deepfakes”.

Como identificar?

Para tentar identificar possíveis “deepfakes”, uma dica é prestar atenção à qualidade dos vídeos e na maneira como os rostos se movem. Em vídeos "fakes" de celebridades, os rostos digitalmente "transplantados" tinham resolução mediana, oscilações, tremores e flutuações.

Em termos técnicos, também há diferenças entre os “deepfakes” e os vídeos verdadeiros, explicou à BBC News Brasil o pesquisador de computação gráfica Christian Riess, da Universidade Friedrich-Alexander Erlangen-Nürnberg, na Alemanha.

"Um vídeo editado tem na área do rosto uma sobreposição de gráficos computacionais. É isso que o algoritmo detecta", explica Riess.

Ou seja, algoritmos automatizados inteligentes deixam vestígios. O grupo de Riess criou o software FaceForensics, que almeja justamente identificar esses traços.

Mas, segundo o pesquisador, não demorará até que os programas de "deepfakes" evoluam a ponto de edições serem imperceptíveis ao olho humano. Logo, dependeremos de softwares para autenticar vídeos suspeitos.

Em assuntos mais sérios, como edições em vídeos de políticos, é preciso sempre analisar o contexto.

"Em qual veículo esse vídeo aparece? Você confia na fonte? Alguém a checou? Quem se beneficiaria desse vídeo? Essas perguntas clássicas de jornalismo e checagem de fatos devem ser aplicadas", orienta o pesquisador.