You Only Look Once (YOLO) é uma série de sistemas de detecção de objetos em tempo real baseados em redes neurais convolucionais. Introduzido pela primeira vez por Joseph Redmon e colaboradores em 2015, o YOLO passou por várias iterações e melhorias, tornando-se um dos frameworks de detecção de objetos mais populares. O nome "You Only Look Once" refere-se ao fato de que o algoritmo requer apenas uma passagem de propagação direta pela rede neural para fazer previsões, ao contrário de técnicas anteriores baseadas em propostas de região, como o R-CNN, que exigem milhares para uma única imagem.
O YOLO enquadra a detecção de objetos como um único problema de regressão, prevendo diretamente as coordenadas das caixas delimitadoras e as probabilidades de classe a partir dos pixels da imagem. Essa arquitetura unificada permite velocidades de processamento em tempo real, mantendo uma precisão competitiva, tornando-o adequado para aplicações como vigilância por vídeo, direção autônoma e robótica.
Visão geral
Em comparação com métodos anteriores, como R-CNN e OverFeat, em vez de aplicar o modelo a uma imagem em vários locais e escalas, o YOLO aplica uma única rede neural à imagem inteira. Essa rede divide a imagem em regiões e prevê caixas delimitadoras e probabilidades para cada região. Essas caixas delimitadoras são ponderadas pelas probabilidades previstas.
A abordagem baseia-se em ideias de aprendizado profundo e redes neurais, particularmente arquiteturas convolucionais que se mostraram eficazes em tarefas de visão computacional. O design do YOLO prioriza velocidade e simplicidade, trocando parte da precisão de localização por eficiência computacional significativa.
OverFeat
O OverFeat foi um modelo influente inicial para classificação e localização simultâneas de objetos. Sua arquitetura é a seguinte:
- Treinar uma rede neural apenas para classificação de imagens ("rede treinada para classificação"), como o AlexNet.
- Remover a última camada da rede treinada e, para cada classe de objeto possível, inicializar um módulo de rede na última camada ("rede de regressão"). A rede base tem seus parâmetros congelados. A rede de regressão é treinada para prever as coordenadas (x, y) de dois cantos da caixa delimitadora do objeto.
- Durante a inferência, executar a rede treinada para classificação na mesma imagem em muitos níveis de zoom e recortes diferentes. Para cada um, ela gera um rótulo de classe e uma probabilidade. Cada saída é então processada pela rede de regressão da classe correspondente, resultando em milhares de caixas delimitadoras com rótulos de classe e probabilidades. Essas caixas são mescladas até restar apenas uma única caixa com um único rótulo de classe.
O OverFeat demonstrou a viabilidade do aprendizado de ponta a ponta para detecção, mas permaneceu computacionalmente caro devido ao seu procedimento de inferência em múltiplas escalas. O YOLO simplificou isso realizando a detecção em uma única passagem.
Versões
Há duas partes na série YOLO. A parte original continha YOLOv1, v2 e v3, todas lançadas em um site mantido por Joseph Redmon. Versões posteriores (v4 em diante) foram desenvolvidas por outros pesquisadores e mantidas separadamente.
YOLOv1
O algoritmo YOLO original, introduzido em 2015, divide a imagem em uma grade de células S x S. Se o centro da caixa delimitadora de um objeto cair em uma célula da grade, diz-se que essa célula "contém" esse objeto. Cada célula da grade prevê B caixas delimitadoras e pontuações de confiança para essas caixas. Essas pontuações de confiança refletem o quão confiante o modelo está de que a caixa contém um objeto e o quão precisa ele acha que é a caixa que prevê.
Em mais detalhes, a rede executa a mesma operação convolucional em cada um dos S^2 patches. A saída da rede em cada patch é uma tupla (p_1, ..., p_C, c_1, x_1, y_1, w_1, h_1, ..., c_B, x_B, y_B, w_B, h_B), onde p_i é a probabilidade condicional de que a célula contenha um objeto da classe i, condicionada à célula conter pelo menos um objeto. Os termos x_j, y_j, w_j, h_j são as coordenadas do centro, largura e altura da j-ésima caixa delimitadora prevista centrada na célula. Múltiplas caixas delimitadoras são previstas para permitir que cada previsão se especialize em um tipo de caixa delimitadora. O termo c_j é a interseção sobre união (IoU) prevista de cada caixa delimitadora com sua verdade de campo correspondente.
A arquitetura da rede tem 24 camadas convolucionais seguidas por 2 camadas totalmente conectadas. Durante o treinamento, para cada célula que contém uma caixa delimitadora de verdade de campo, apenas a caixa delimitadora prevista com a maior IoU com a verdade de campo é usada para a descida do gradiente. As coordenadas da caixa selecionada são treinadas para se aproximar da verdade de campo, a probabilidade de classe para a classe correta é treinada para 1, e outras probabilidades de classe são treinadas para zero. Células sem objetos de verdade de campo contribuem apenas para a perda de pontuação de confiança, empurrando a confiança para zero.
YOLOv2 e YOLOv3
O YOLOv2, lançado em 2016, introduziu normalização em lote, caixas de âncora e uma estratégia de treinamento em múltiplas escalas, melhorando o recall e a precisão de localização. Ele também usou uma arquitetura personalizada darknet-19 e podia rodar a até 67 quadros por segundo em uma GPU. O YOLOv3, lançado em 2018, adicionou uma rede de pirâmide de características com três escalas de detecção, permitindo melhor lidar com objetos pequenos. Ele usou um backbone darknet-53 mais profundo e regressão logística para previsão de classes.
Versões posteriores
O YOLOv4, lançado em 2020 por Alexey Bochkovskiy e colaboradores, incorporou CSPDarknet53, PANet e aumento de dados mosaico, alcançando trade-offs de velocidade e precisão de última geração. O YOLOv5, YOLOv6, YOLOv7 e YOLOv8 se seguiram, com melhorias em eficiência, implantação em dispositivos de borda e suporte para tarefas além da detecção, como segmentação de instâncias e estimativa de pose. Essas versões posteriores são mantidas por diferentes grupos, incluindo a Ultralytics para YOLOv5 e YOLOv8.
Aplicações e impacto
O YOLO foi amplamente adotado na indústria e na academia devido às suas capacidades em tempo real. Ele é usado no Tesla Autopilot para detecção de objetos em direção autônoma, nos veículos autônomos da Waymo e na frota de robotáxis da Cruise. Ele também alimenta aplicações no Rekognition da Amazon Web Services e no Vision do Google Cloud para análise de imagens. Na pesquisa de inteligência artificial, o YOLO serve como uma linha de base para comparar novos métodos de detecção e inspirou inúmeras variantes e extensões.
A eficiência do framework o tornou popular para implantações embarcadas e móveis, incluindo em dispositivos da Apple, Samsung Electronics e Qualcomm. Suas implementações de código aberto, particularmente as versões em darknet e PyTorch, contribuíram para seu uso generalizado na educação e prototipagem em aprendizado de máquina.
Limitações e direções futuras
Apesar de seus pontos fortes, o YOLO tem limitações. Ele pode ter dificuldades com objetos pequenos e instâncias sobrepostas em comparação com detectores de dois estágios, como o Faster R-CNN. Sua natureza de passagem única também o torna menos flexível para tarefas que exigem refinamento iterativo. Pesquisadores abordaram essas questões por meio de mudanças arquitetônicas, como mecanismos de atenção e backbones baseados em transformadores, alinhando-se com tendências em transformadores e grandes modelos de linguagem para tarefas de visão.
O trabalho futuro continua focado em melhorar os trade-offs de precisão-velocidade, robustez a mudanças de domínio e integração com outras modalidades, como profundidade e lidar. À medida que o hardware melhora, incluindo aceleradores especializados como AWS Trainium e sistemas da Cerebras, espera-se que modelos baseados em YOLO permaneçam relevantes para percepção em tempo real em pipelines de IA generativa e além.