Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Optical Flow

O fluxo ótico estima como cada píxel se move entre dois fotogramas de vídeo, representando-o como um campo de vetores de movimento. Métodos clássicos e profundos, aplicações e código OpenCV.

O fluxo óptico é o movimento aparente dos padrões de brilho entre duas imagens, geralmente quadros de vídeo consecutivos. Um algoritmo de fluxo óptico estima, para cada pixel do primeiro quadro, um vetor de deslocamento 2D (dx, dy) que aponta para onde o conteúdo desse pixel aparece no segundo quadro. O resultado, chamado campo de fluxo, captura o movimento de objetos e da própria câmera, permitindo que sistemas de visão computacional estabilizem vídeos, estimem o movimento próprio, interpolam quadros e reconheçam ações. O fluxo mede o que a câmera vê, não o movimento 3D real: uma esfera perfeitamente uniforme girando no mesmo lugar não produz fluxo, e uma sombra em movimento produz fluxo onde nada se move fisicamente.

Como o fluxo óptico é estimado#

A maioria dos métodos parte da constância do brilho, a suposição de que um ponto mantém a mesma intensidade enquanto se move. Linearizá-la produz uma equação por pixel, Ix·u + Iy·v + It = 0, em que Ix, Iy e It são as derivadas da imagem em x, y e no tempo, e (u, v) é o fluxo desconhecido. Uma equação não pode determinar duas incógnitas, o que constitui o problema da abertura: ao observar uma borda reta por uma pequena janela, só é possível medir o movimento perpendicular à borda. Os métodos clássicos acrescentam uma segunda suposição para resolver o problema:

  • Método de Lucas-Kanade (1981): Supõe que o fluxo é constante dentro de uma pequena janela e resolve as equações de todos os pixels dessa janela por mínimos quadrados. Funciona quando a janela contém gradientes em duas direções, como nos cantos, por isso geralmente é executado como fluxo esparso em pontos de características selecionados.
  • Método de Horn-Schunck (1981): Supõe que o campo de fluxo é suave por toda a imagem e resolve uma otimização global, produzindo fluxo denso para cada pixel.

As duas suposições falham diante de grandes movimentos, por isso os métodos práticos estimam o fluxo de forma grosseira a fina em uma pirâmide de imagens, na qual um movimento de 16 pixels na resolução total corresponde a um movimento de 2 pixels três níveis abaixo:

A OpenCV implementa Lucas-Kanade piramidal para pontos esparsos e o algoritmo de expansão polinomial de Gunnar Farnebäck, de 2003, para fluxo denso. Este código desloca uma textura aleatória por uma quantidade conhecida e recupera o movimento com o fluxo denso de Farnebäck:

import cv2
import numpy as np

# A smooth random texture, then the same texture moved 3 px right and 2 px down
rng = np.random.default_rng(0)
texture = cv2.GaussianBlur(rng.random((240, 320)), (0, 0), 3)
frame1 = cv2.normalize(texture, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
frame2 = np.roll(frame1, shift=(2, 3), axis=(0, 1))

# Dense Farneback optical flow: one (dx, dy) displacement vector for every pixel
flow = cv2.calcOpticalFlowFarneback(
    frame1, frame2, None, pyr_scale=0.5, levels=3, winsize=15, iterations=3, poly_n=5, poly_sigma=1.2, flags=0
)
print(f"flow field shape: {flow.shape}")
print(f"median motion: dx={np.median(flow[..., 0]):.2f}, dy={np.median(flow[..., 1]):.2f} pixels")

Ele imprime flow field shape: (240, 320, 2) e median motion: dx=3.00, dy=2.00 pixels: um vetor de dois componentes para cada um dos 76.800 pixels, recuperando o deslocamento horizontal de 3 pixels e vertical de 2 pixels.

Métodos de aprendizado profundo#

O FlowNet demonstrou em 2015 que uma rede neural convolucional podia aprender o fluxo de ponta a ponta a partir de dados de treinamento sintéticos, já que vídeos reais raramente vêm acompanhados de fluxo de referência. O PWC-Net incorporou em uma rede compacta as ideias clássicas de pirâmide, deformação e volume de custos. O RAFT, que ganhou o prêmio de melhor artigo da ECCV 2020, compara cada pixel do primeiro quadro com cada pixel do segundo em um volume de correlação e refina um único campo de fluxo de alta resolução com atualizações recorrentes repetidas. Os métodos aprendidos lidam muito melhor do que os métodos clássicos com grandes deslocamentos, desfoque de movimento e regiões sem textura, e a torchvision inclui modelos RAFT pré-treinados. A precisão é informada como erro de ponto final (EPE), a distância média em pixels entre os vetores de fluxo previstos e reais, em benchmarks como MPI Sintel e KITTI 2015.

  • Rastreamento de objetos: Acompanha objetos inteiros com IDs persistentes ao longo de muitos quadros, enquanto o fluxo óptico descreve o movimento por pixel entre dois quadros e não reconhece objetos. Os rastreadores usam o fluxo como pista: no modo track do Ultralytics YOLO, o rastreador padrão TrackTrack e o BoT-SORT estimam o movimento da câmera com fluxo esparso de Lucas-Kanade (gmc_method: sparseOptFlow), rastreando até 400 cantos em um quadro com metade da resolução, ajustando uma rotação, escala e translação a eles com RANSAC e deslocando cada caixa de rastreamento prevista de acordo com esse movimento antes de associá-la a novas detecções.
  • Rastreamento de pontos: Acompanha pontos escolhidos ao longo de vídeos extensos, inclusive durante oclusões, em vez de estimar o movimento de cada pixel entre dois quadros.
  • Fluxo de cena: O movimento 3D de pontos no espaço, estimado a partir de dados estéreo ou de profundidade. O fluxo óptico é sua projeção no plano da imagem.
  • Vetores de movimento de codecs de vídeo: Os codificadores H.264, HEVC e AV1 armazenam um vetor de movimento por bloco, escolhido para minimizar a quantidade de bits necessária para codificar o quadro, por isso ele muitas vezes difere do movimento real.

Aplicações no mundo real#

  • Estabilização de vídeo: O fluxo dominante em um quadro revela a trepidação da câmera, que o software compensa deformando cada quadro na direção oposta.
  • Interpolação de quadros: A câmera lenta e a conversão da taxa de quadros sintetizam quadros intermediários deslocando os pixels parcialmente ao longo de seus vetores de fluxo.
  • Veículos autônomos e drones: O fluxo auxilia a odometria visual, e a taxa de expansão do fluxo de um objeto alerta para uma colisão iminente.
  • Reconhecimento de ações: A rede de dois fluxos de 2014 classificava ações usando um fluxo espacial de quadros individuais e um fluxo temporal alimentado com uma pilha de 10 campos de fluxo óptico consecutivos.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina