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

Decisão em 25 segundos: como funciona a IA que ajudará VAR na Copa do Mundo

Zagueiro Kyle Rowles disputa a bola com Gianluca Lapadula no Austrália x Peru, nas eliminatórias da Copa - KARIM JAAFAR/AFP
Zagueiro Kyle Rowles disputa a bola com Gianluca Lapadula no Austrália x Peru, nas eliminatórias da Copa Imagem: KARIM JAAFAR/AFP

Aurélio Araújo

Colaboração para Tilt

06/07/2022 10h48

Inteligência Artificial vai entrar em campo na Copa deste ano, no Catar. A FIFA anunciou que utilizará um sistema de câmeras com IA para acelerar as decisões sobre impedimento feitas pelo árbitro de vídeo, o VAR. Essa nova tecnologia promete deixar para trás os tempos de rever o replay do lance por vários ângulos.

Trata-se de um sistema semiautomatizado, com um sensor na bola que emite sua localização no campo 500 vezes por segundo. Além disso, 12 câmeras montadas sob o telhado dos estádios usarão aprendizado automático (o chamado "machine learning") para também rastrear 29 pontos dos corpos dos jogadores. Essa informação será emitida 50 vezes por segundo.

Dessa forma, o software calcula rapidamente situações de possível impedimento. Alertas são enviados aos operadores da tecnologia e, logo, à sala do VAR, onde os assistentes de vídeo validam a decisão e avisam o árbitro em campo sobre ela.

Os dados gerados pelas câmeras e pela bola são ainda usados para criar animações 3D, que podem ser exibidas nos telões do estádio e nas transmissões televisivas "para informar todos os espectadores da maneira mais clara possível", de acordo com a FIFA.

E o juiz?

O sistema recebeu o nome de SAOT, sigla em inglês para "tecnologia semiautomatizada de impedimento", e foi desenvolvido em parceria com diversas universidades, entre elas o MIT (Instituto de Tecnologia do Massachusetts).

"Essa tecnologia é mais rápida e mais precisa, além de oferecer uma comunicação melhor aos torcedores", afirmou em nota o chefe do comitê de arbitragem da FIFA, Pierluigi Collina. "Ela pode criar uma nova forma de visualização para os torcedores em casa e no campo. Todos os testes correram bem e, portanto, a SAOT estará na Copa do Mundo do Catar 2022."

Isso não quer dizer, é claro, que o árbitro em campo e seus assistentes não terão a palavra final sobre o que configura um impedimento. Pelas regras do futebol, o impedimento ocorre quando um jogador de ataque se beneficia ao receber a bola, estando com uma parte do seu corpo (exceto mão e braço) mais próxima da linha de meta adversária do que o penúltimo adversário.

Na prática, porém, o árbitro de campo terá menos informações do que o VAR e, portanto, deve apenas confirmar a marcação. De acordo com Collina, a SAOT reduz o tempo de decisão sobre impedimento, em média, de 70 segundos para 25 segundos.

Importância psicológica

Segundo Collina, há uma questão mental envolvida na rapidez das decisões. Atualmente, o VAR é bastante criticado pela espera até que uma decisão seja tomada, o que os torcedores de futebol em particular consideram inaceitável. Além disso, sempre há a suspeita de que apenas o uso de câmeras comuns para determinar o posicionamento de um jogador não são suficientes.

"O objetivo é ter uma uma tecnologia muito precisa, similar à tecnologia 'goal-line'", afirmou o chefe de arbitragem da FIFA, em referência ao sistema tecnológico em uso atualmente para determinar se uma bola cruzou ou não a linha do gol.

"A tecnologia 'goal-line' costumava medir distâncias de até 3 centímetros. Hoje, está na casa dos milímetros e é elogiada. O mesmo deve ocorrer com a SAOT."

Além disso, Collina, que apitou a final da Copa do Mundo de 2002 entre Brasil e Alemanha, ressaltou a importância de dar "uma resposta rápida" aos torcedores.

"Em termos de tempo, é [algo] mais psicológico. Se eu olhar para outras experiências esportivas, o tempo [usado pela tecnologia para apontar uma decisão] é vivido normalmente pelos técnicos e espectadores. Na NBA, você vê os jogadores tomando água, os torcedores se divertindo, ninguém se importa com a demora. Mas sabemos que o futebol é diferente e que o tempo é importante."

As animações 3D geradas pelo SAOT devem substituir as imagens de TV pausadas com linhas traçadas sobre elas. Embora o alerta de impedimento seja praticamente imediato com o novo sistema, os 25 segundos de espera serão usados para gerar a animação e, assim, dar credibilidade à decisão.

A Copa do Mundo do Catar ocorrerá entre novembro e dezembro de 2022, e enfrenta questionamentos internacionais sobre direitos humanos, já que o país é uma ditadura. Segundo reportagem do jornal britânico The Guardian em parceria com a ONG Human Rights Watch, mais de 6.500 trabalhadores imigrantes morreram trabalhando nas obras para o Mundial, em condições análogas à escravidão.