Football Tactical Analysis · 2026

Computer vision · football intelligence

Do vídeo para uma leitura tática estruturada

Uma base tecnológica que transforma transmissão de jogo em identidade, geometria, espaço e evidência para apoiar a decisão.

23JOGOS
119CLIPS
258FASES
5PRODUTOS VISUAIS
Projeto final · Master em Big Data Aplicado ao Futebol · UCAMUse ← → para navegar
Mapa da apresentação

Seis capítulos, uma cadeia de evidência

00

Enquadramento

01

A Solução

02

Dados & Confiança

03

Modelos & Lógica

04

Demonstrações & Resultados

05

Limitações, Roadmap & Decisão

Da necessidade ao piloto
00

Capítulo

Enquadramento do Projeto

Fechar a distância entre vídeo abundante e evidência tática estruturada.

00 · Enquadramento04 / 15

O vídeo mostra tudo, mas não entrega estado

Câmara não calibrada

Pan, zoom e cortes quebram qualquer geometria ingénua.

Oclusão e semelhança

Uma caixa num frame não é ainda uma identidade.

Bola intermitente

Pequena, rápida e frequentemente invisível.

  • ≤ 23 pessoas
  • ≤ 11 por equipa
  • ≤ 1 GR por equipa
  • ≤ 1 bola
  • 1 identidade por pessoa
O contrato do futebol é o primeiro teste
01

Capítulo

A Solução

Uma cadeia auditável que transforma perceção visual em estado tático e produtos para análise.

01 · Arquitetura06 / 15

Nove etapas, uma direção

Framesextração bruta
LinhasOBB tipado
Boladeteção + filtro
Pessoasfusão 70/10
Papéisequipa · GR · árbitro
Consensorasto · separação · limites
TrajetóriaKalman + RTS
Render4 derivados
Interfacevisualização + benchmark
Política de investigação: rejeitar alterações que aumentem violações. Este critério ainda não está automatizado no processamento em lote atual.
Pipeline auditável e reprocessável
02

Capítulo

Dados

Os dados são um produto versionado, não um efeito secundário da inferência.

02 · Arquitetura de dados08 / 15

Quatro camadas preservam linhagem

01 · EVIDÊNCIAVídeo original · frames · metadados
02 · RASTREAMENTOLinhas · bola · pessoas · papéis · trajetória
03 · TÁTICAFormações · mudanças · fases · sucesso
04 · CONSUMOH.264 · planta 2D · interface · benchmark
Anotação de referência só de leitura · separação por jogo
03

Capítulo

Modelo

Um sistema híbrido: perceção aprendida, memória temporal e lógica determinística.

03 · Sistema híbrido

O modelo não é uma caixa. É um acordo entre três sistemas

Aprendido

  • Detetor de pessoas
  • Detetor dedicado de bola
  • Detetor OBB para linhas

Temporal

  • Foot-point / IoU em lote
  • Consenso por track
  • Kalman + RTS

Determinístico

  • Topologia do campo
  • Limites de plantel
  • Regras de posse
Cada camada corrige uma classe diferente de erro
03 · Inteligência tática11 / 15

Posições estáveis tornam a tática explicável

01

Posse

Jogador mais próximo, suavização e persistência em perdas curtas.

02

Fase

Bola nos 40% defensivos da equipa em posse.

03

Formação

Fisher–Jenks em profundidade, guarda-redes excluído.

04

Mudança

Histerese impede que um jogador isolado crie ruído.

05

Sucesso

Manter posse e transportar a bola além do meio-campo.

Mesma lógica no benchmark e na interface
04

Capítulo

Demonstrações & Resultados

Prova visual, medições internas e limites de interpretação claramente assinalados.

04 · Antes e depois · Avaliação interna13 / 15

Correções dirigidas melhoram clips concretos

7,5%1,4%
22,3 m0,34 m
98 591 m9,7 m
1220

Métricas internas e específicas dos clips indicados. Demonstram mecanismos de correção; não estimam a precisão global do produto.

Fontes internas: auditoria técnica do batch · clips nomeados
04 · Distribuição tática observada14 / 15

258 fases revelam confrontos recorrentes

3v2
34
2v2
33
2v1
30
3v3
20
4v3
19
2v3
19
3v1
12

Frequência observada entre a primeira linha da equipa em posse e a primeira linha de pressão adversária.

Este benchmark descreve a distribuição das 258 fases derivadas; não mede a correção das classificações táticas.

119 clips · 25 categorias de confronto · frequência, não precisão
05 · Limitações e melhorias futuras15 / 15

Saber quando não sabemos é parte do produto

LimitaçãoLimitada porPróxima escalada
Bola ausente por vários segundosDados do detetorEtiquetas multiestádio e retreino
GR com equipamento igual ao adversárioFísica da corÂncora de posse ou baliza
Equipamentos escuros à noiteFísica da corConfiguração por jogo e calibração
Arranque sem contexto das equipasSimetriaPrimeiro frame validado de posse
Oclusão totalDados do detetorRetreino com oclusões e soft-NMS

Agora

Cobertura de oclusões, bola e confiança por subsistema.

Seguinte

Retreino multijogo e testes adversariais por estádio.

Depois

Validação com analistas e pesquisa semântica de padrões.

O sistema não inventa objetos para maximizar a cobertura
01 · Enquadramento técnico

Cada etapa tem um contrato de conclusão

01

Persistir primeiro

O resultado estrutural é escrito em JSONL antes de criar overlays ou vídeo.

write_jsonl(path, rows)
02

Retomar barato

Se o JSONL existe e tem cobertura, a inferência pesada é ignorada.

exists() and not force
03

Reprocessar seletivo

--redo-roles reutiliza pessoas e bola, sem nova passagem GPU.

rebuild_roles_and_render()
04

Verificar estado

O verificador atual classifica a cobertura e saúde de roles. A completude dos quatro vídeos continua a ser um gate separado no roadmap.

verify_and_complete.py
Recuperar uma execução interrompida sem perder proveniência
01 · Configuração e reversibilidade

Hipóteses tornam-se experiências reversíveis

CLI

Âmbito

--game, --clip, --max-frames, --frame-stride e --no-video limitam custo.

SETTINGS

Limiares

Pessoas 0,70 na passagem principal e 0,10 na recuperação. Bola 0,50. Caminhos centralizados em settings.py.

FTA_*

Interruptores

Cada correção pode ser desligada isoladamente, permitindo A/B por jogo.

Risco: cerca de 100 opções FTA_* sem catálogo tornam um erro de digitação silenciosamente sem efeito.
settings.py · run_pipeline.py · variáveis FTA_*
02 · Dados estruturados

JSONL mantém cada frame independente e auditável

{
  "frame_idx": 150,
  "roles": [{
    "track_id": 17,
    "bbox": [812, 306, 858, 431],
    "team": "Sharjah",
    "role": "TEAM",
    "pitch": [34.8, 11.2]
  }],
  "role_counts": {"Sharjah": 9, "Ajman": 10, "GK:Sharjah": 1, "REFEREE": 1}
}
Uma linha por frame · streaming · diffs localizados
02 · Benchmark histórico · frame_analyzer

Como o benchmark histórico evitava contaminação

01

Anotação só de leitura

A IA não sobrescrevia a anotação do operador.

02

Hash antes e depois

A avaliação abortava se qualquer anotação mudasse.

03

Separação por jogo

Frames vizinhos não atravessavam treino e validação.

04

Arranque sem contexto

O jogo reservado não fornecia informação prévia ao próprio arranque.

05

Promoção por critérios

Macro melhorava, categorias não degradavam e invariantes ficavam a zero.

Referência histórica preservada no vault · infraestrutura de promoção não integrada no batch atual
03 · Perceção aprendida

Modelos especializados reduzem interferência

Pessoas

src/models/players/weights.pt

Passagem 0,70 protege precisão; 0,10 recupera jogadores pequenos. Fusão por IoU, cor e corpo.

detect_people_and_ball()YOLOperson_merge.stage()fusão 70/10
+

Bola

src/models/ball/weights.pt

Detetor dedicado, filtro do relvado e seleção de um único candidato.

select_single_ball()≤1 bolaball_filter.stage()0,50
+

Campo

src/models/lines/weights.pt

O modelo OBB preserva orientação e tipo; a pose atual é resolvida a partir das linhas armazenadas.

run_pitch_lines()OBB tipadovalidate_typed_lines()topologia
Três pesos locais · três responsabilidades distintas
03 · Rastreamento

Rastreamento responde “quem continua a ser”

FRAME

Associação

O rastreador em lote liga pontos dos pés e IoU e atravessa interrupções curtas com MAX_AGE=8.

CLIP

Consenso

Cada track_id recebe equipa/papel pela maioria. A mediana de cor protege contra sombras.

REGRA

Correção

Mudança sustentada divide o rasto; rastos transitórios são podados; excedentes são reparados.

Risco: uma troca longa de identidade corrompe a maioria. Próximo passo: aparência / BoT-SORT no processamento em lote.
track_consensus.py · consensus()
03 · Formação e construção

Regras simples, mas temporalmente explícitas

90 px

Posse

A equipa do jogador mais próximo da bola reclama posse em espaço de imagem.

POSSESS_MAX_PX
15 f

Suavização

Janela de maioria evita alternância em contactos e leituras instáveis.

POSSESS_SMOOTH
40%

Construção

A bola deve estar na fração defensiva da equipa em posse.

BUILDUP_ZONE
1..5

Linhas

Fisher–Jenks divide defesa, meio e ataque; nenhuma linha excede cinco.

optimal_1d_partition()
Sucesso = posse mantida + bola além do meio-campo.
infer_possession · detect_phases · confrontation_for_frame
01/02 · Contrato de entrega

Produtos diferentes, uma única verdade

DADOSJSONL por frame para auditoria e reprocessamento
5 PRODUTOSoriginal + combinado + planta 2D + Voronoi + convex hull
TÁTICAfases · formações · mudanças · sucesso
INTERFACEmanifesto · H.264 · navegação por jogo, clip e fase

4+1 significa quatro vídeos derivados pelo pipeline, mais a transmissão original preservada.

Estado canónico separado da apresentação · todos os produtos são reprocessáveis
03+

Modelo em detalhe

Da perceção ao estado tático

Como calibração, identidade, bola e regras temporais transformam deteções em informação utilizável.

01 · Arquitetura em código

Três fronteiras evitam uma caixa negra

Perceção

pipeline/frames.py

Descodifica o vídeo uma vez e fixa frame, timestamp e FPS.

extract_raw_frames()JPEG + metadadosdetect_people_and_ball()YOLO 70/10run_pitch_lines()OBB tipado

Estado temporal

team_classification/roles_stage.py

Transforma observações independentes em identidades estáveis.

role_assignment.assign_clip()equipa · GR · árbitrotrack_consensus.consensus()maioria por IDprune_implausible_tracks()anti-fantasma

Semântica

pipeline/render_video.py

Projeta no campo e produz artefactos para análise.

render_video.stage()quatro derivadosbuild_tactical_viewer.py::detect_phasesfase + sucessoroles_stage.stage()orquestração
JSONL entre etapas · execução retomável · resultados auditáveis
03 · Calibração · Caminho atual em lote

A pose combina evidência e controlo

Linhas armazenadas

O render atual resolve a pose a partir das linhas OBB tipadas já persistidas.

Lado e topologia

O controlo impõe um único lado de baliza e rejeita geometrias incoerentes.

Sanidade física

Homografias que projetam posições implausíveis fora do campo são rejeitadas.

Continuidade — risco aberto

last_H e suavização estabilizam a pose, mas a persistência ainda não tem limite temporal no processamento em lote.

Contrato atual

imagem (x,y) → H⁻¹ → campo (X,Y) ACEITAR APENAS SE linhas tipadas são coerentes lado_baliza é consistente projeção respeita dimensão física
Keypoints, HRNet e PnLCalib existem como caminhos alternativos ou manuais; a sua integração no processamento em lote permanece no plano de evolução.
solve_homography_from_tagged_lines · orientation_guard · smooth_homographies · last_H
03 · Identidade e bola

Cor relativa e física temporal corrigem o que um frame não sabe

Equipa

  • Torso sem relva/oclusor
  • Matiz ou luminosidade adaptativas
  • Mediana por track
  • Divisão em mudança sustentada

Bola

  • select_single_ball()
  • Gate >3 m/frame
  • Kalman [x,y,vx,vy]
  • Suavização RTS retrospetiva

Honestidade

  • Detetada: token sólido
  • Trajetória: interpola até 25 frames
  • Interface: pode preencher até 75 frames
  • Sem evidência: desvanece
GR = outlier relativo à própria equipa + proximidade à baliza. Nunca uma cor fixa.
A/B interno Sharjah-1 · mismatch de cor 7,5% → 1,4%
04 · Problemas encontrados

Os avanços começaram como falhas concretas

Convenção de caixa errada

A margem RF-DETR aplicada ao YOLO aumentou a largura cerca de 2,5× e destruiu recall@IoU0.5.

0,03 → 0,35

Projeções explosivas

O controlo físico e a orientação reduziram passos impossíveis que a suavização apenas escondia.

98 591 m → 9,7 m

Cor sob oclusão

Amostragem de torso, adaptação e mediana por track reduziram mismatch no clip Sharjah-1.

7,5% → 1,4%

Jogadores ocluídos

A recuperação de baixa confiança elevou a cobertura média nos clips Al Dhafra-2/3.

12 → 20 / frame
Métricas internas · clips nomeados · melhorias não equivalem a precisão global
01 · A solução · Mesmo instante, cinco produtos

Da transmissão ao modelo tático

Frame original
01Transmissão original
Jogadores e planta 2D
02Jogadores + bola + planta
Casco convexo
03Casco convexo
Territórios Voronoi
04Território Voronoi
Composição final
05Composição final
Ajman v Sharjah · Sharjah-1 · 00:05 · imagens reais do pipeline
04 · Resultado final

A imagem liga o que o treinador vê ao que o sistema mede

Resultado final da solução
Sharjah-1 · vídeo combinado · H.264
Vídeo e planta partilham track_id, equipa, papel e timestamp
Resumo executivo

A tese em 30 segundos

O vídeo já contém a informação. A solução cria a camada que falta: estrutura, continuidade e contexto futebolístico para a tornar explorável.

01

Automatiza o primeiro passe analítico

Deteta campo, pessoas, bola, equipas e papéis antes de o analista entrar no detalhe.

02

Converte frames em estado temporal

Rastreamento e consenso reduzem oscilações e mantêm identidades ao longo do clip.

03

Produz várias leituras da mesma jogada

Transmissão anotada, planta 2D, Voronoi, convex hull e JSONL auditável.

04

É uma base, não uma caixa negra

Produtos intermédios, regras explícitas e limitações conhecidas suportam evolução controlada.

A solução apoia a interpretação; não substitui o conhecimento futebolístico
00 · Enquadramento · Origem

O ponto de partida

Um projeto multidisciplinar

Esta solução foi desenvolvida como projeto final do último módulo do Master em Big Data Aplicado ao Futebol, da UCAM.

O projeto teve como principal objetivo explorar as competências multidisciplinares do grupo, combinando conhecimento futebolístico, experiência prática e tecnologia. Partimos de algumas das limitações identificadas nos processos de preparação, planeamento e análise pós-jogo que fazem parte do quotidiano dos clubes de futebol.

Texto integral fornecido pelo grupo
00 · Enquadramento · Contexto

A função que cresce

Analytics como amplificador

Neste contexto, os departamentos de analytics assumem uma importância crescente. Alguns clubes já dispõem de estruturas internas consolidadas, outros encontram-se em processo de criação dessas equipas e muitos recorrem a serviços especializados em regime de outsourcing. Independentemente do modelo adotado, o objetivo é comum: apoiar os clubes na redução de ineficiências e promover maior rigor, rapidez e qualidade na preparação e análise dos jogos. A utilização de ferramentas analíticas e de visão computacional permite acrescentar detalhe aos processos de observação e disponibilizar informação de forma mais célere e estruturada. Desta forma, o decisor pode concentrar-se no contributo mais relevante para o seu trabalho como o conhecimento futebolístico, a interpretação do jogo e a tomada de decisão.

Tecnologia ao serviço do decisor · não em substituição do decisor
00 · Enquadramento · Premissa

Ambição com pragmatismo

Construir uma base

Tendo em consideração o tempo disponível e as limitações tecnológicas existentes, sabíamos que a solução desenvolvida não seria perfeita nem definitiva. Ainda assim, decidimos assumir o desafio de construir uma base que pudesse orientar e suportar o trabalho a desenvolver nos meses seguintes. Partimos, por isso, de uma premissa simples: “E porque não?”

E porque não?
Uma base iterativa · verificável · preparada para evoluir
00 · Enquadramento · Ambição

A oportunidade

Democratizar a análise

O problema abordado é complexo e tem vindo a ser estudado por algumas das maiores empresas da indústria. Paralelamente, vários clubes investem milhares de euros no acesso a ferramentas desta natureza, procurando obter uma vantagem competitiva, ainda que reduzida, através da utilização de dados e tecnologia. Perante este cenário, decidimos apostar, experimentar e desafiar-nos a criar uma solução que possa contribuir para a democratização deste tipo de análise. Pretendemos desenvolver uma ferramenta flexível, acessível e adaptável, que permita a cada analista explorar diferentes dimensões do jogo de acordo com os seus objetivos, necessidades e conhecimento futebolístico.

Visão: flexível · acessível · adaptável ao modelo de jogo
00 · Enquadramento · Processo atual

O paradoxo do vídeo

Mostra tudo. Entrega pouco estado.

A riqueza visual existe, mas está presa num processo manual, fragmentado e difícil de pesquisar.

Ver

Localizar o momento relevante.

Pausar

Fixar jogadores e bola.

Anotar

Reconstruir posições e papéis.

Cruzar

Comparar clips sem estado comum.

Explicar

Voltar ao vídeo para validar.

Tempo de observação consumido antes da interpretação
00 · Enquadramento · Valor

Um núcleo comum. Diferentes decisões.

AnalistaNavegar por fases, comparar estruturas e chegar mais cedo à interpretação.
TreinadorReceber evidência visual consistente para preparar e rever comportamentos.
DireçãoAvaliar uma capacidade interna adaptável sem depender de uma única leitura proprietária.
Dados / TIIntegrar produtos por frame, reproduzir execuções e construir novas métricas.
RapidezRigorFlexibilidadeAuditabilidade
Decisão
futebolística
O ativo central é o estado canónico que alimenta todos os consumidores
01 · A solução · Proposta

Proposta de valor

Um pipeline de visão computacional que converte vídeo broadcast em estado tático rastreável.

01PerceberLinhas, pessoas e bola em cada frame.
02IdentificarEquipas, guarda-redes, árbitro e track ID.
03ProjetarImagem 2D para coordenadas do campo 105 × 68 m.
04EstabilizarConsenso temporal, filtros físicos e regras de futebol.
05InterpretarPosse, construção, linhas e confrontos.
06EntregarVídeos, planta, visualizações e dados estruturados.
Sem API externa na inferência · pesos locais · pipeline reproduzível
01 · A solução · Primeira prova

Broadcast e planta, sincronizados

Demo real · vídeo combinado
Ajman v Sharjah · Sharjah-1 · produto real H.264
04 · Demo · Jogadores + bola 2D

Posição coletiva sem perder o vídeo

Demo real · planta 2D
Representação espacial sincronizada por frame
04 · Demo · Voronoi

Uma leitura imediata do território

Demo real · Voronoi
Interpretação responsável: proximidade geométrica, não xT validado
04 · Demo · Convex hull

A forma coletiva torna-se visível

Demo real · convex hull
Produto real · demo-convex-hull.mp4
04 · Demo · Dimensões do bloco
Largura e altura reais dos blocos de Al Ain e Al Dhafra
Ativo local: assets/demo-width-height.png
04 · Demo · Distribuição tática
Matriz real de confrontos entre construção e pressão
Fonte de dados: tactical_benchmark.json · figura incluída nos ativos
04 · Conceito de experiência · Baseado na interface funcional

Vídeo, mapa e fase na mesma superfície

Tactical Analysis
Vídeo anotado no conceito de interface
EXEMPLO 3v2 · construçãoEXEMPLO 3v3 · mudançaEXEMPLO 4v3 · sucesso
EXEMPLO DE UX
Mock conceptual; referência funcional local: manual_tagging/solution.html
05

Capítulo

Limitações & Próximo Passo

Como converter uma base demonstrável numa capacidade operacional de confiança.

05 · Futuro · Plano de evolução

Três ondas para converter protótipo em produto

Confiar

  1. Limitar temporalmente a persistência de last_H
  2. Restaurar testes e manifestos de execução
  3. Verificar os quatro derivados por clip
  4. Catálogo único para opções FTA_*
Qualidade reproduzível

Generalizar

  1. PnLCalib/keypoints no processamento em lote
  2. Recuperar deteções da bola
  3. Validar âncoras de cor multiestádio
  4. Rastreamento com aparência / BoT-SORT
Robustez multijogo

Operacionalizar

  1. Experiência de pesquisa por fase
  2. Perfis por modelo de jogo
  3. Exportação para o processo do analista
  4. Monitorização e versões
Adoção pelo utilizador
Sequência: confiança → generalização → experiência
05 · Proposta · Piloto controlado

Critérios propostos — não resultados atuais

Quatro gates para decidir continuar

01

Completude técnica

Produzir todos os artefactos esperados nos clips selecionados.

Meta ≥95%
02

Utilidade para o analista

Fases relevantes aceites ou corrigidas com baixa fricção.

Meta ≥70%
03

Tempo até à primeira leitura

Comparar o processo assistido com a linha de base manual.

Meta −30%
04

Integridade

Sem corrupção silenciosa; anotação de referência preservada.

Meta 0 falhas
Pedido: acesso a vídeo · um analista parceiro · capacidade GPU · sponsor semanal
05 · Futuro · Decisão

Pedido aos decisores

Não decidir hoje se a solução está terminada. Decidir se a base demonstrada merece uma fase de produto orientada por casos de uso reais.

Aprovar um piloto controlado de 6 semanas
01

Escolher duas decisões prioritárias

Construção adversária, compactação ou revisão pós-jogo.

02

Nomear sponsor e analista parceiro

Validação semanal, critérios claros e feedback registado.

03

Disponibilizar o domínio de teste

Uma competição, oito jogos e quarenta clips.

04

Financiar a confiança

Um recurso ML, 0,2 FTE de analista, acesso a vídeo e capacidade GPU.

Piloto com objetivos, anotação de referência e critérios de sucesso definidos
Football Tactical Analysis · Fecho

O vídeo
já sabe.
Falta
estruturá-lo.

Começámos com uma pergunta simples. Terminamos com uma base real, demonstrável e preparada para uma próxima decisão.

E porque não?
Obrigado · perguntas & discussãoFootball Tactical Analysis
← → navegar · O vista geral · F ecrã inteiro