Saltar para o conteúdo

YOLOE: Ver tudo em tempo real

Introdução

Opções de solicitação do YOLOE

O YOLOE (Real-Time Seeing Anything) é um novo avanço nos modelos YOLO de disparo zero e com possibilidade de solicitação, concebido para a deteção e segmentação de vocabulário aberto. Ao contrário dos modelos YOLO anteriores, limitados a categorias fixas, o YOLOE utiliza texto, imagem ou avisos de vocabulário interno, permitindo a deteção em tempo real de qualquer classe de objeto. Construído com base no YOLOv10 e inspirado no YOLO, o YOLOE atinge um desempenho de última geração com zero disparos, com um impacto mínimo na velocidade e na precisão.

Estado da integração Ultralytics 🚧

A integração do Ultralytics para o YOLOE está atualmente em construção 🔨. Os exemplos de uso mostrados nesta documentação funcionarão quando a integração estiver concluída ✅. Verifique novamente as atualizações 🔄 ou siga nosso repositório GitHub 🚀 para obter os desenvolvimentos mais recentes.

Em comparação com os modelos YOLO anteriores, o YOLOE aumenta significativamente a eficiência e a precisão. Melhora em +3,5 AP em relação ao YOLO no LVIS, utilizando apenas um terço dos recursos de formação e atingindo velocidades de inferência 1,4× mais rápidas. Afinado no COCO, o YOLOE-v8-large ultrapassa o YOLOv8 em 0,1 mAP, utilizando quase 4 vezes menos tempo de treino. Isto demonstra o equilíbrio excecional da YOLOE em termos de precisão, eficiência e versatilidade. As secções que se seguem exploram a arquitetura do YOLOE, as comparações de referência e a integração com o software Ultralytics Ultralytics.

Descrição geral da arquitetura

Arquitetura YOLOE

O YOLOE mantém a estrutura padrão YOLO - uma espinha dorsal convolucional (p. ex., CSP-Darknet) para extração de caraterísticas, um pescoço (p. ex., PAN-FPN) para fusão multi-escala e uma cabeça de deteção sem âncoras e desacoplada (como no YOLO11) que prevê objectos, classes e caixas independentemente. O YOLOE introduz três novos módulos que permitem a deteção de vocabulário aberto:

  • Re-parameterizable Region-Text Alignment (RepRTA): Suporta a deteção de texto, refinando a incorporação de texto (por exemplo, do CLIP) através de uma pequena rede auxiliar. Na inferência, esta rede é integrada no modelo principal, assegurando uma sobrecarga zero. O YOLOE detecta, assim, objectos arbitrários com rótulo de texto (por exemplo, "semáforo" não visto) sem penalizações em tempo de execução.

  • Codificador de avisos visuais activados por semântica (SAVPE): Permite a deteção de estímulos visuais através de um ramo de incorporação leve. Dada uma imagem de referência, o SAVPE codifica as caraterísticas semânticas e de ativação, condicionando o modelo para detetar objectos visualmente semelhantes - uma capacidade de deteção de uma só vez útil para logótipos ou peças específicas.

  • Contraste preguiçoso de região-pedido (LRPC): No modo livre de avisos, o YOLOE realiza o reconhecimento de conjuntos abertos usando embeddings internos treinados em grandes vocabulários (mais de 1200 categorias do LVIS e Objects365). Sem solicitações externas ou codificadores, o YOLOE identifica objectos através da pesquisa de semelhança de incorporação, lidando eficientemente com grandes espaços de etiquetas na inferência.

Além disso, o YOLOE integra a segmentação de instâncias em tempo real, alargando a cabeça de deteção com um ramo de previsão de máscaras (semelhante ao YOLACT ou YOLOv8), acrescentando um mínimo de sobrecarga.

Crucialmente, os módulos de mundo aberto do YOLOE não introduzem nenhum custo de inferência quando usados como um YOLO regular de conjunto fechado. Após o treino, os parâmetros do YOLOE podem ser re-parametrizados numa cabeça YOLO padrão, preservando FLOPs e velocidade idênticos (por exemplo, combinando YOLO11 exatamente).

Comparação do desempenho do YOLOE

O YOLOE iguala ou excede a exatidão dos modelos YOLO de conjunto fechado em benchmarks padrão como o COCO, sem comprometer a velocidade ou o tamanho do modelo. A tabela abaixo compara o YOLOE-L (baseado no YOLO11) com os modelos YOLOv8 e YOLO11 correspondentes:

Modelo COCO mAP50-95 Velocidade de inferência (T4) Parâmetros GFLOPs (640px)
YOLOv8 (conjunto fechado) 52.9% 9,06 ms (110 FPS) 43.7 M 165.2 B
YOLO11 (conjunto fechado) 53.5% 6,2 ms (130 FPS) 26.2 M 86.9 B
YOLOE-L (cabina aberta) 52.6% 6,2 ms (130 FPS) 26.2 M 86.9 B†

YOLO11 e o YOLOE-L têm arquitecturas idênticas (módulos rápidos desactivados no YOLO11), o que resulta numa velocidade de inferência idêntica e em estimativas de GFLOPs semelhantes.

O YOLOE-L atinge 52,6% de mAP, ultrapassando o YOLOv8(52,9%) com cerca de 40% menos parâmetros (26M vs. 43,7M). Processa imagens de 640×640 em 6,2 ms (161 FPS) em comparação com os 9,06 ms (110 FPS) do YOLOv8, o que realça a eficiência do YOLO11. Um aspeto crucial é o facto de os módulos de vocabulário aberto do YOLOE não implicarem qualquer custo de inferência, o que demonstra uma conceção que "não oferece qualquer compensação".

Para as tarefas de zero-shot e de transferência, a YOLOE destaca-se: no LVIS, a YOLOE-small melhora em relação à YOLO em +3,5 AP, utilizando 3× menos recursos de formação. O ajuste fino da YOLOE-L do LVIS para o COCO também exigiu 4 vezes menos tempo de treino do que YOLOv8, sublinhando a sua eficiência e adaptabilidade. O YOLOE mantém ainda a velocidade caraterística do YOLO, alcançando mais de 300 FPS numa GPU T4 e cerca de 64 FPS no iPhone 12 através do CoreML, ideal para implementações móveis e de ponta.

Nota

Condições de referência: Os resultados do YOLOE são de modelos pré-treinados no Objects365, GoldG e LVIS, depois ajustados ou avaliados no COCO. A ligeira vantagem do mAP do YOLOE em relação ao YOLOv8 resulta de um pré-treino alargado. Sem este treino em open-vocab, o YOLOE iguala modelos YOLO de tamanho semelhante, afirmando a sua precisão SOTA e flexibilidade de mundo aberto sem penalizações de desempenho.

Comparação com modelos anteriores

O YOLOE apresenta avanços notáveis em relação aos modelos YOLO anteriores e aos detectores de vocabulário aberto:

  • YOLOE vs YOLOv5:
    YOLOv5 oferecia um bom equilíbrio entre velocidade e precisão, mas exigia um novo treino para novas classes e utilizava cabeças baseadas em âncoras. Em contrapartida, o YOLOE não tem âncoras e detecta dinamicamente novas classes. O YOLOE, com base nas melhorias do YOLOv8, alcança uma maior precisão (52,6% vs. ~50% mAP do YOLOv5 no COCO) e integra a segmentação de instâncias, ao contrário do YOLOv5.

  • YOLOE vs YOLOv8:
    YOLOE amplia YOLOv8alcançando uma precisão semelhante ou superior(52,6% mAP com ~26M parâmetros vs. 52,9% do YOLOv8 com ~44M parâmetros). Reduz significativamente o tempo de treino devido a um pré-treino mais forte. O principal avanço é a capacidade de mundo aberto do YOLOE, detectando objectos não vistos (por exemplo,"bird scooter" ou"símbolo da paz") através de avisos, ao contrário do design de conjunto fechado do YOLOv8.

  • YOLOE vs YOLO11:
    YOLO11 melhora o YOLOv8 com maior eficiência e menos parâmetros (~22% de redução). O YOLOE herda estes ganhos diretamente, igualando a velocidade de inferência do YOLO11 e a contagem de parâmetros (~26M parâmetros), enquanto adiciona a deteção e segmentação de vocabulário aberto. Em cenários fechados, o YOLOE é equivalente ao YOLO11, mas acrescenta crucialmente a adaptabilidade para detetar classes não vistas, alcançando a capacidadeYOLO11 + mundo aberto sem comprometer a velocidade.

  • YOLOE vs detectores de vocabulário aberto anteriores:
    Os modelos anteriores de vocabulário aberto (GLIP, OWL-ViT, YOLO) baseavam-se fortemente em transformadores de visão-linguagem, levando a uma inferência lenta. O YOLOE ultrapassa-os em termos de exatidão (por exemplo, +3,5 AP vs. YOLO), sendo 1,4 vezes mais rápido com recursos de treino significativamente mais reduzidos. Em comparação com as abordagens baseadas em transformadores (por exemplo, GLIP), o YOLOE oferece uma inferência mais rápida em ordens de grandeza, colmatando eficazmente a lacuna precisão-eficiência na deteção de conjuntos abertos.

Em resumo, o YOLOE mantém a velocidade e a eficiência de renome do YOLO, ultrapassa os antecessores em termos de precisão, integra a segmentação e introduz uma poderosa deteção de mundo aberto, tornando-o excecionalmente versátil e prático.

Casos de utilização e aplicações

A deteção e segmentação de vocabulário aberto do YOLOE permite diversas aplicações para além dos modelos tradicionais de classe fixa:

  • Deteção de objectos em mundo aberto:
    Ideal para cenários dinâmicos, como a robótica, em que os robôs reconhecem objectos nunca antes vistos utilizando avisos, ou sistemas de segurança que se adaptam rapidamente a novas ameaças (por exemplo, objectos perigosos) sem necessidade de reciclagem.

  • Deteção de poucos disparos e de um disparo:
    Utilizando avisos visuais (SAVPE), o YOLOE aprende rapidamente novos objectos a partir de imagens de referência únicas - perfeito para inspeção industrial (identificando instantaneamente peças ou defeitos) ou vigilância personalizada, permitindo pesquisas visuais com uma configuração mínima.

  • Grande vocabulário e reconhecimento de cauda longa:
    Equipado com um vocabulário de mais de 1000 classes, o YOLOE destaca-se em tarefas como a monitorização da biodiversidade (deteção de espécies raras), colecções de museus, inventário de retalho ou comércio eletrónico, identificando de forma fiável muitas classes sem formação extensiva por classe.

  • Deteção e segmentação interactivas:
    O YOLOE suporta aplicações interactivas em tempo real, como a recuperação de vídeos/imagens pesquisáveis, a realidade aumentada (RA) e a edição intuitiva de imagens, impulsionadas por entradas naturais (texto ou avisos visuais). Os utilizadores podem isolar, identificar ou editar objectos de forma dinâmica e precisa utilizando máscaras de segmentação.

  • Rotulagem automatizada de dados e bootstrapping:
    O YOLOE facilita a criação rápida de conjuntos de dados, fornecendo anotações iniciais de caixa delimitadora e segmentação, reduzindo significativamente os esforços de rotulagem humana. Particularmente valioso na análise de grandes colecções de media, onde pode identificar automaticamente os objectos presentes, ajudando a construir modelos especializados mais rapidamente.

  • Segmentação para qualquer objeto:
    Estende as capacidades de segmentação a objectos arbitrários através de prompts - particularmente benéfico para imagens médicas, microscopia ou análise de imagens de satélite, identificando automaticamente e segmentando com precisão estruturas sem modelos especializados pré-treinados. Ao contrário de modelos como SAMo YOLOE reconhece e segmenta simultaneamente objectos de forma automática, ajudando em tarefas como a criação de conteúdos ou a compreensão de cenas.

Em todos esses casos de uso, a principal vantagem do YOLOE é a versatilidade, fornecendo um modelo unificado para deteção, reconhecimento e segmentação em cenários dinâmicos. A sua eficiência garante um desempenho em tempo real em dispositivos com recursos limitados, ideal para robótica, condução autónoma, defesa e muito mais.

Dica

Escolha o modo do YOLOE com base nas suas necessidades:

  • Modo de conjunto fechado: Para tarefas de classe fixa (velocidade e precisão máximas).
  • Modo de solicitação: Adicione novos objectos rapidamente através de texto ou avisos visuais.
  • Modo open-set sem prompts: Deteção geral em muitas categorias (ideal para catalogação e descoberta).

Muitas vezes, a combinação de modos - como a descoberta sem solicitações, seguida de solicitações direcionadas - permite tirar partido de todo o potencial do YOLOE.

Formação e inferência

O YOLOE integra-se perfeitamente com a APIPython Ultralytics e o CLIsemelhante a outros modelos YOLO YOLOv8, YOLO). Veja como começar rapidamente:

Estado da integração Ultralytics 🚧

A integração do Ultralytics para o YOLOE está atualmente em desenvolvimento 🔨. Os exemplos abaixo demonstram como a API funcionará quando a integração estiver concluída ✅.

Formação e inferência com YOLOE

from ultralytics import YOLO

# Load pre-trained YOLOE model and train on custom data
model = YOLO("yoloe-s.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)

# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save()  # save annotated output

Aqui, o YOLOE comporta-se como um detetor padrão por defeito, mas muda facilmente para a deteção solicitada especificando as classes (set_classes). Os resultados contêm caixas delimitadoras, máscaras e etiquetas.

# Training YOLOE on custom dataset
yolo train model=yoloe-s.pt data=path/to/data.yaml epochs=50 imgsz=640

# Inference with text prompts
yolo predict model=yoloe-s.pt source="test_images/street.jpg" classes="person,bus"

Prompts CLI (classes) guiam o YOLOE de forma semelhante ao set_classes. A solicitação visual (consultas baseadas em imagens) requer atualmente a API Python .

Outras tarefas suportadas

  • Validação: Avalie facilmente a precisão com model.val() ou yolo val.
  • Exportação: Exportar modelos YOLOE (model.export()) para ONNX, TensorRT, etc., facilitando a implantação.
  • Rastreio: O YOLOE suporta o rastreio de objectos (yolo track) quando integrado, útil para acompanhar as aulas solicitadas em vídeos.

Nota

O YOLOE inclui automaticamente máscaras de segmentação nos resultados da inferência (results[0].masks), simplificando tarefas com precisão de píxeis, como a extração ou medição de objectos, sem necessidade de modelos separados.

Começar a trabalhar

Configure rapidamente o YOLOE com o Ultralytics seguindo estes passos:

  1. Instalação: Instalar ou atualizar o pacote Ultralytics :

    pip install -U ultralytics
    
  2. Descarregar os pesos YOLOE: Os modelos YOLOE pré-treinados (por exemplo, variantes YOLOE-v8-S/L, YOLOE-11) estão disponíveis nas versões YOLOE GitHub. Basta descarregar o modelo desejado .pt para carregar na classeYOLO Ultralytics .

  3. Requisitos de hardware:

    • Inferência: GPU recomendadaNVIDIA com ≥4-8GB VRAM). Modelos pequenos são executados com eficiência em GPUs de ponta (por exemplo, Jetson) ou CPUs em resoluções mais baixas.
    • Formação: O ajuste fino do YOLOE em dados personalizados normalmente requer apenas uma GPU. O pré-treino extensivo de vocabulário aberto (LVIS/Objects365) utilizado pelos autores exigiu uma computação substancial (8× GPUs RTX 4090).
  4. Configuração: As configurações do YOLOE utilizam ficheiros YAML padrão Ultralytics . Configurações padrão (por exemplo, yoloe-s.yaml) são normalmente suficientes, mas pode modificar o backbone, as classes ou o tamanho da imagem conforme necessário.

  5. A correr YOLOE:

    • Inferência rápida (sem prontidão):
      yolo predict model=yoloe-s.pt source="image.jpg"
      
    • Deteção solicitada (exemplo de solicitação de texto):

      yolo predict model=yoloe-s.pt source="kitchen.jpg" classes="bowl,apple"
      

      Em Python:

      from ultralytics import YOLO
      
      model = YOLO("yoloe-s.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
      
  6. Dicas de integração:

    • Nomes de classes: Por defeito, as saídas YOLOE utilizam categorias LVIS; utilizam set_classes() para especificar as suas próprias etiquetas.
    • Velocidade: O YOLOE não tem qualquer sobrecarga, a não ser que utilize avisos. Os avisos de texto têm um impacto mínimo; os avisos visuais têm um impacto ligeiramente superior.
    • Inferência em lote: Suportado diretamente (model.predict([img1, img2])). Para prompts específicos de imagem, execute as imagens individualmente.

A documentaçãoUltralytics fornece mais recursos. O YOLOE permite-lhe explorar facilmente poderosas capacidades de mundo aberto dentro do familiar ecossistema YOLO .

Dica

Dica profissional: Para maximizar a precisão do YOLOE sem disparos, faça o ajuste fino a partir dos pontos de controlo fornecidos em vez de treinar a partir do zero. Utilize palavras de alerta alinhadas com etiquetas de treino comuns (ver categorias LVIS) para melhorar a precisão da deteção.

Citações e agradecimentos

Se o YOLOE contribuiu para a sua investigação ou projeto, cite o artigo original de Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han e Guiguang Ding da Universidade de Tsinghua:

@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

Para uma leitura mais aprofundada, o artigo original do YOLOE está disponível no arXiv. O código fonte do projeto e recursos adicionais podem ser acedidos através do seu repositório GitHub.

FAQ

Em que é que o YOLOE difere do YOLO?

Embora tanto o YOLOE como YOLO permitam a deteção de vocabulário aberto, o YOLOE oferece várias vantagens. O YOLOE alcança uma precisão +3,5 AP superior no LVIS, utilizando 3× menos recursos de treino e funcionando 1,4× mais rápido do que o YOLO. O YOLOE também suporta três modos de estímulo (texto, visual e vocabulário interno), enquanto YOLO se concentra principalmente em estímulos de texto. Além disso, o YOLOE inclui capacidades de segmentação de instâncias incorporadas, fornecendo máscaras com precisão de píxeis para objectos detectados sem sobrecarga adicional.

Posso utilizar o YOLOE como um modelo YOLO normal?

Sim, o YOLOE pode funcionar exatamente como um modelo YOLO padrão sem penalizar o desempenho. Quando utilizado no modo de conjunto fechado (sem avisos), os módulos de vocabulário aberto do YOLOE são re-parametrizados na cabeça de deteção padrão, resultando numa velocidade e precisão idênticas aos modelos YOLO11 equivalentes. Isto torna o YOLOE extremamente versátil - pode utilizá-lo como um detetor tradicional para velocidade máxima e depois mudar para o modo de vocabulário aberto apenas quando necessário.

Que tipos de avisos posso utilizar com o YOLOE?

O YOLOE suporta três tipos de avisos:

  1. Pedidos de texto: Especificar classes de objectos utilizando linguagem natural (por exemplo, "pessoa", "semáforo", "trotinete de pássaro")
  2. Avisos visuais: Fornecer imagens de referência dos objectos que pretende detetar
  3. Vocabulário interno: Utilize o vocabulário incorporado do YOLOE com mais de 1200 categorias, sem instruções externas

Esta flexibilidade permite-lhe adaptar o YOLOE a vários cenários sem voltar a treinar o modelo, tornando-o particularmente útil para ambientes dinâmicos onde os requisitos de deteção mudam frequentemente.

Como é que o YOLOE lida com a segmentação de instâncias?

O YOLOE integra a segmentação de instâncias diretamente na sua arquitetura, alargando a cabeça de deteção com um ramo de previsão de máscaras. Esta abordagem é semelhante à YOLOv8, mas funciona para qualquer classe de objeto solicitado. As máscaras de segmentação são automaticamente incluídas nos resultados da inferência e podem ser acedidas através de results[0].masks. Esta abordagem unificada elimina a necessidade de modelos de deteção e segmentação separados, simplificando os fluxos de trabalho para aplicações que requerem limites de objectos com precisão de píxeis.

Como é que o YOLOE lida com a inferência com prompts personalizados?

À semelhança do YOLO, o YOLOE suporta uma estratégia "prompt-then-detect" que utiliza um vocabulário offline para aumentar a eficiência. Os avisos personalizados, como legendas ou categorias de objectos específicos, são pré-codificados e armazenados como vocabulário offline incorporado. Esta abordagem simplifica o processo de deteção sem necessitar de nova formação. Pode definir dinamicamente estes avisos no modelo para o adaptar a tarefas de deteção específicas:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-s.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()
📅C riado há 10 dias ✏️ Atualizado há 7 dias

Comentários