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

Em breve deepfake vai substituir atores nos filmes, mas pode dar ruim

Marcel Lisboa/UOL
Imagem: Marcel Lisboa/UOL

João Paulo Vicente

Colaboração para Tilt

07/08/2020 04h00

Para uma tecnologia surgida há pouco mais de dois anos, os deepfakes já estão bem instalados no léxico de quem usa um pouco a internet. A um olhar destreinado, parece mágica (ou ficção científica): por meio de aprendizado profundo —um tipo de inteligência artificial— o rosto de uma personagem em um vídeo é transformado em outro. O próximo desafio da área é criar deepfakes tão realistas que possam ser usadas no cinema.

No Brasil, o exemplo mais famoso é o trabalho de Bruno Sartori, que se tornou conhecido em redes sociais ao criar vídeos de paródias com o presidente Jair Bolsonaro. Mas enquanto as produções de Sartori ainda podem ser identificadas como falsas com certa facilidade, a possibilidade para cinema já foi levantada por um grande estúdio.

No final de junho, pesquisadores da Disney apresentaram uma técnica mais fotorrealística. Segundo eles, a ferramenta conseguiu um resultado melhor ampliando a resolução do vídeo original. A maior parte dos deepfakes engana bem nas telas pequenas de celulares e tablets, mas os problemas ficariam gritantes em uma projeção de cinema. Colocando mais pixels na imagem, melhora a qualidade do vídeo final também.

Outra coisa a se notar é que os primeiros testes, mostrados no vídeo acima, ainda usam uma abordagem convencional de troca de rostos, com a face em primeiro plano e bem iluminada. Ainda vai levar um tempo para conseguir isso em outros tipos de cena.

"Quando a tecnologia foi disponibilizada no final de 2017, apesar de impressionantes os resultados ainda eram bem limitados", diz Sartori. "Pouco mais de anos e meio depois disso, os vídeos já são de cair o queixo e evolução é tão impressionante que em breve deve atingir algo que ninguém será capaz de distinguir entre real e falso a olho nu."

Já é possível criar deepfakes em resoluções maiores. Mas o poder computacional necessário para fazer isso é gigantesco, o que torna os custos de produção inviáveis.

Princesa Leia foi o começo

Dinheiro, aliás, é o porquê da busca por um deepfake cinematográfico. No filme "Projeto Gemini" (2019), os custos para criar uma versão digital mais jovem do ator Will Smith foram maiores do que o cachê do próprio Will Smith —leia-se dezenas de milhões de dólares, segundo o jornal Financial Times.

Além da grana, o trabalho envolvido em processos tradicionais de efeitos especiais demanda muita mão de obra especializada e meses de dedicação. Outro bom exemplo é a recriação da atriz Carrie Fisher como a jovem Princesa Leia em "Rogue One: Uma História Star Wars" (2016). Ali, foi usada uma dublê de corpo combinada à recriação digital do rosto de Fisher quando esteve no primeiro filma da saga, em 1977, além de um áudio antigo da atriz.

Deepfakes, por outro lado, permitiriam fazer o mesmo muito mais rápido e com um investimento significativamente menor. Além disso, podem facilitar a vida de atores e diretores.

"Dependendo do efeito que você quer atingir, você precisa ter muito cuidado no set de filmagem. A luz precisa ser controlada, têm diversos sensores para fazer o tracking [rastreamento] do rosto do ator", conta Daniel Dias, produtor com 20 anos de experiência em composição digital de imagens.

"A gente chama isso de ingestar a filmagem. Tira a concentração do ator, os diretores não gostam", continua. "E o aprendizado profundo não precisa de nada disso, tudo é capturado a partir da própria imagem."

Todo esse cálculo, no entanto, ainda deixa de fora um ponto importante: como atores e atrizes lidarão com suas imagens sendo usadas continuamente. Em alguns casos, mesmo após a morte.

Com o lançamento de "Rogue One" e a recriação digital de Carrie Fisher, o advogado Daniel Scott afirmou ao site The Hollywood Reporter que as celebridades deveriam começar a fazer planejamentos legais nesse sentido. Pode ser que no futuro, por exemplo, cláusulas de contrato com estúdios prevejam arranjos do tipo.

Mas para chegar até aí, a tecnologia não precisa superar apenas a busca por resoluções maiores, mas também a finesse do resultado final. Como é um processo automatizado, alguns detalhes podem ficar pouco fidedignos, ao contrário de uma construção digital feita manualmente.

Por isso, é possível usar a inteligência artificial como ponto de partida para a criação de personagens digitais e terminar o trabalho por meios mais tradicionais. E as aplicações da IA no cinema não param por aí: também ajudam na criação de objetos e cenários e no refinamento das imagens.

"Há uma capacidade fantástica de melhorar o que já é muito bom", diz o designer digital e animador 3D Fernando Oliveira, que assina como Fernando 3D e trabalha com Bruno Sartori. "A inteligência artificial facilita o trabalho e deixa a criação mais livre."

Além disso, também pode facilitar a entrada de produções nacionais em outros mercados. "Eu até pensei em uma possibilidade que é fazer um filme em português, e a partir de um dublador, trocar a fala dos personagens filmados para outras línguas", sugere Dias.

O lado feio das deepfakes

O que não é ficção é o risco trazido por essa tecnologia. Em uma pesquisa do ano ado, uma organização chamada Deeptrace identificou que 96% dos deepfakes online eram vídeos pornôs tanto de mulheres famosas quanto desconhecidas. Além disso, há o risco de serem usados para desinformação política.

Para Joana Varon, diretora executiva da entidade de direito digital Coding Rights, é preciso distinguir deepfake de synthetic media, que usa aprendizado profundo para transformar rostos reais e movimentá-los a partir de fotos ou pinturas.

"Isso é uma tecnologia que pode ser usada para arte, para comédia. Agora os primeiros usos que vimos desse tipo de tecnologia, de forma mais massiva e tosca foi justamente uma nova iteração do que alguns chamam de revenge porn. Eu não gosto desse nome, chamo de compartilhamento não consensual de imagens íntimas", explica.

Para Joana, ainda que nenhuma tecnologia possa ser considerada neutra, elas têm diferentes usos. Quando são nocivos, resultam em violência de gênero, calúnia, difamação e desinformação. "Isso será menos visível à medida que a tecnologia avança. E a gente tende a acreditar em fotografias e vídeos", afirma ela.

Por enquanto, ainda é um desafio sem solução. Na Califórnia, uma lei proibiu a criação de deepfakes políticos no ano ado, em resposta a um vídeo que mostrava a deputada democrata Nancy Pelosi, adversária do presidente Donald Trump, gaguejando durante um discurso. No entanto, a iniciativa é considerada ineficaz.

Já no Brasil, um parágrafo do projeto de lei das fake news —aprovado no Senado e em discussão na Câmara dos Deputados— prevê que conteúdos com voz ou imagens manipulados de candidatos e políticos sejam excluídos de redes sociais. A exceção a isso seriam os usos humorísticos.

A diretora do Coding Rights acredita que esse trecho saiu do escopo geral da lei. "Esse debate precisa ser feito de maneira separada, mais qualificada, não encaixando um parágrafo que só protege candidatos. Há toda uma discussão que precisa levar em conta o possível dano a jornalistas e mulheres, sejam elas famosas ou não", defende Varon.