YOLO-Modelo Mundial
O YOLO-World Model apresenta um modelo avançado, em tempo real Ultralytics YOLOv8-para tarefas de deteção de vocabulário aberto. Esta inovação permite a deteção de qualquer objeto numa imagem com base em textos descritivos. Ao reduzir significativamente as exigências computacionais, preservando simultaneamente um desempenho competitivo, o YOLO-World surge como uma ferramenta versátil para inúmeras aplicações baseadas na visão.
Ver: YOLO Fluxo de trabalho de formação mundial num conjunto de dados personalizado
Visão geral
YOLO-O -World aborda os desafios enfrentados pelos modelos tradicionais de deteção de Vocabulário Aberto, que muitas vezes dependem de modelos de Transformação pesados que requerem recursos computacionais extensos. A dependência destes modelos em categorias de objectos pré-definidas também restringe a sua utilidade em cenários dinâmicos. YOLO-O -World revitaliza a estrutura do YOLOv8 com capacidades de deteção de vocabulário aberto, empregandomodelação de linguagem de visão e pré-treino em conjuntos de dados expansivos para se destacar na identificação de uma vasta gama de objectos em cenários de disparo zero com uma eficiência inigualável.
Caraterísticas principais
-
Solução em tempo real: Aproveitando a velocidade computacional das CNNs, o YOLO-World oferece uma solução rápida de deteção de vocabulário aberto, atendendo às indústrias que necessitam de resultados imediatos.
-
Eficiência e desempenho: YOLO-World reduz os requisitos computacionais e de recursos sem sacrificar o desempenho, oferecendo uma alternativa robusta a modelos como SAM mas com uma fração do custo computacional, permitindo aplicações em tempo real.
-
Inferência com vocabulário offline: YOLO-World introduz uma estratégia "prompt-then-detect", utilizando um vocabulário offline para aumentar ainda mais a eficiência. Esta abordagem permite a utilização de avisos personalizados calculados a priori, incluindo legendas ou categorias, para serem codificados e armazenados como vocabulário offline incorporado, simplificando o processo de deteção.
-
Desenvolvido por YOLOv8: Construído sobre Ultralytics YOLOv8YOLO-World utiliza os últimos avanços na deteção de objectos em tempo real para facilitar a deteção de vocabulário aberto com uma precisão e velocidade inigualáveis.
-
Excelência em benchmark: YOLO O -World supera os detectores de vocabulário aberto existentes, incluindo as séries MDETR e GLIP, em termos de velocidade e eficiência em benchmarks padrão, demonstrando a capacidade superior do YOLOv8 num único NVIDIA V100 GPU.
-
Aplicações versáteis: YOLO A abordagem inovadora da -World abre novas possibilidades para uma multiplicidade de tarefas de visão, proporcionando melhorias de velocidade de ordens de magnitude em relação aos métodos existentes.
Modelos disponíveis, tarefas suportadas e modos de funcionamento
Esta secção detalha os modelos disponíveis com os seus pesos pré-treinados específicos, as tarefas que suportam e a sua compatibilidade com vários modos de funcionamento, tais como Inferência, Validação, Treino e Exportação, denotados por ✅ para modos suportados e ❌ para modos não suportados.
Nota
Todos os pesos de YOLOv8-World foram migrados diretamente do repositório oficial YOLO-World, destacando as suas excelentes contribuições.
Tipo de modelo | Pesos pré-treinados | Tarefas suportadas | Inferência | Validação | Formação | Exportação |
---|---|---|---|---|---|---|
YOLOv8s-mundo | yolov8s-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-mundov2 | yolov8s-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-mundo | yolov8m-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-mundov2 | yolov8m-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-mundo | yolov8l-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-mundov2 | yolov8l-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-mundo | yolov8x-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-mundov2 | yolov8x-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
Transferência de zero-shot no conjunto de dados COCO
Tipo de modelo | mAP | mAP50 | mAP75 |
---|---|---|---|
yolov8s-mundo | 37.4 | 52.0 | 40.6 |
yolov8s-mundov2 | 37.7 | 52.2 | 41.0 |
yolov8m-mundo | 42.0 | 57.0 | 45.6 |
yolov8m-mundov2 | 43.0 | 58.4 | 46.8 |
yolov8l-mundo | 45.7 | 61.3 | 49.8 |
yolov8l-mundov2 | 45.8 | 61.3 | 49.8 |
yolov8x-mundo | 47.0 | 63.0 | 51.2 |
yolov8x-mundov2 | 47.1 | 62.8 | 51.4 |
Exemplos de utilização
Os modelos YOLO-World são fáceis de integrar nas suas aplicações Python . Ultralytics fornece uma API Python e comandos CLI fáceis de utilizar para simplificar o desenvolvimento.
Utilização do comboio
Dica
Recomendamos vivamente a utilização de yolov8-worldv2
modelo para formação personalizada, porque suporta formação determinística e também é fácil de exportar outros formatos, ou seja, onnx/tensorrt.
Deteção de objectos é simples com o train
como ilustrado abaixo:
Exemplo
PyTorch pré-treinado *.pt
modelos, bem como a configuração *.yaml
podem ser passados para os ficheiros YOLOWorld()
para criar uma instância de modelo em python:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Prever a utilização
A deteção de objectos é simples com o predict
como ilustrado abaixo:
Exemplo
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt") # or select yolov8m/l-world.pt for different sizes
# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Este snippet demonstra a simplicidade de carregar um modelo pré-treinado e executar uma previsão numa imagem.
Utilização de Val
A validação do modelo num conjunto de dados é simplificada da seguinte forma:
Exemplo
Utilização da faixa
O rastreio de objectos com o modelo YOLO-World num vídeo/imagem é simplificado da seguinte forma:
Exemplo
Nota
Os modelos YOLO-World fornecidos por Ultralytics vêm pré-configurados com as categorias do conjunto de dados COCO como parte do seu vocabulário offline, aumentando a eficiência para aplicação imediata. Esta integração permite que os modelos YOLOv8-World reconheçam e prevejam diretamente as 80 categorias padrão definidas no conjunto de dados COCO sem necessidade de configuração ou personalização adicional.
Definir prompts
A estrutura YOLO-World permite a especificação dinâmica de classes através de prompts personalizados, permitindo que os utilizadores adaptem o modelo às suas necessidades específicas sem necessidade de reciclagem. Esta caraterística é particularmente útil para adaptar o modelo a novos domínios ou tarefas específicas que não faziam originalmente parte dos dados de treino. Ao definir avisos personalizados, os utilizadores podem essencialmente orientar a atenção do modelo para objectos de interesse, melhorando a relevância e a precisão dos resultados da deteção.
Por exemplo, se a sua aplicação apenas requer a deteção de objectos "pessoa" e "autocarro", pode especificar estas classes diretamente:
Exemplo
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt") # or choose yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction for specified categories on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Também é possível salvar um modelo depois de definir classes personalizadas. Ao fazer isso, você cria uma versão do modelo YOLO-World que é especializada para o seu caso de uso específico. Esse processo incorpora suas definições de classe personalizadas diretamente no arquivo de modelo, tornando o modelo pronto para ser usado com as classes especificadas sem ajustes adicionais. Siga estas etapas para salvar e carregar seu modelo YOLOv8 personalizado:
Exemplo
Primeiro, carregue um modelo YOLO-World, defina classes personalizadas para ele e guarde-o:
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt") # or select yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")
Depois de guardado, o modelo custom_yolov8s.pt comporta-se como qualquer outro modelo YOLOv8 pré-treinado, mas com uma diferença fundamental: está agora optimizado para detetar apenas as classes que definiu. Esta personalização pode melhorar significativamente o desempenho e a eficiência da deteção para os seus cenários de aplicação específicos.
Vantagens de poupar com vocabulário personalizado
- Eficiência: Simplifica o processo de deteção, concentrando-se em objectos relevantes, reduzindo a sobrecarga computacional e acelerando a inferência.
- Flexibilidade: Permite a fácil adaptação do modelo a tarefas de deteção novas ou de nicho, sem necessidade de reciclagem ou recolha de dados extensiva.
- Simplicidade: Simplifica a implementação ao eliminar a necessidade de especificar repetidamente classes personalizadas em tempo de execução, tornando o modelo diretamente utilizável com o seu vocabulário incorporado.
- Desempenho: Aumenta a precisão da deteção para classes especificadas, concentrando a atenção e os recursos do modelo no reconhecimento dos objectos definidos.
Esta abordagem proporciona um meio poderoso de personalizar modelos de deteção de objectos de última geração para tarefas específicas, tornando a IA avançada mais acessível e aplicável a uma gama mais vasta de aplicações práticas.
Reproduzir resultados oficiais a partir do zero (Experimental)
Preparar conjuntos de dados
- Dados do comboio
Conjunto de dados | Tipo | Amostras | Caixas | Ficheiros de anotações |
---|---|---|---|---|
Objectos365v1 | Deteção | 609k | 9621k | objectos365_train.json |
GQA | Ligação à terra | 621k | 3681k | final_mixed_train_no_coco.json |
Flickr30k | Ligação à terra | 149k | 641k | final_flickr_separateGT_train.json |
- Dados de valor
Conjunto de dados | Tipo | Ficheiros de anotações |
---|---|---|
LVIS minival | Deteção | minival.txt |
Lançar a formação a partir do zero
Nota
WorldTrainerFromScratch
é altamente personalizado para permitir o treino de modelos do mundo yolo em conjuntos de dados de deteção e de aterramento simultaneamente. Para mais pormenores, consultar ultralytics.model.yolo.world.train_world.py.
Exemplo
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="../datasets/flickr30k/images",
json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
),
dict(
img_path="../datasets/GQA/images",
json_file="../datasets/GQA/final_mixed_train_no_coco.json",
),
],
),
val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)
Citações e agradecimentos
Agradecemos ao Tencent AILab Computer Vision Center pelo seu trabalho pioneiro na deteção de objectos de vocabulário aberto em tempo real com YOLO-World:
Para uma leitura mais aprofundada, o documento original YOLO-World está disponível no arXiv. O código fonte do projeto e recursos adicionais podem ser acedidos através do seu repositório GitHub. Agradecemos o seu empenho em fazer avançar o campo e em partilhar as suas valiosas ideias com a comunidade.
FAQ
O que é o modelo YOLO-World e como funciona?
O modelo YOLO-World é uma abordagem avançada de deteção de objectos em tempo real baseada na Ultralytics YOLOv8 estrutura. Destaca-se em tarefas de deteção de vocabulário aberto, identificando objectos numa imagem com base em textos descritivos. Utilizando a modelação da linguagem de visão e a pré-treino em grandes conjuntos de dados, o YOLO-World atinge uma elevada eficiência e desempenho com exigências computacionais significativamente reduzidas, tornando-o ideal para aplicações em tempo real em vários sectores.
Como é que YOLO-World lida com a inferência com prompts personalizados?
YOLOO -World 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 a necessidade de reciclagem. Pode definir dinamicamente estes avisos no modelo para o adaptar a tarefas de deteção específicas, como se mostra abaixo:
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.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()
Por que razão devo escolher YOLO-World em vez dos modelos tradicionais de deteção de vocabulário aberto?
YOLO-O -World oferece várias vantagens em relação aos modelos tradicionais de deteção de vocabulário aberto:
- Desempenho em tempo real: Aproveita a velocidade computacional das CNNs para oferecer uma deteção rápida e eficiente.
- Eficiência e baixa necessidade de recursos: YOLO-World mantém um elevado desempenho, reduzindo significativamente as exigências computacionais e de recursos.
- Avisos personalizáveis: O modelo suporta a definição dinâmica de avisos, permitindo que os utilizadores especifiquem classes de deteção personalizadas sem necessidade de reciclagem.
- Excelência em benchmarks: Ultrapassa outros detectores de vocabulário aberto, como o MDETR e o GLIP, tanto em termos de velocidade como de eficiência em benchmarks padrão.
Como é que treino um modelo YOLO-World no meu conjunto de dados?
Treinar um modelo YOLO-World no seu conjunto de dados é simples através da API Python fornecida ou dos comandos CLI . Veja como começar a treinar usando Python:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
Ou utilizando CLI:
Quais são os modelos YOLO-World pré-treinados disponíveis e as tarefas que suportam?
Ultralytics oferece vários modelos pré-treinados do YOLO-World que suportam várias tarefas e modos de funcionamento:
Tipo de modelo | Pesos pré-treinados | Tarefas suportadas | Inferência | Validação | Formação | Exportação |
---|---|---|---|---|---|---|
YOLOv8s-mundo | yolov8s-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-mundov2 | yolov8s-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-mundo | yolov8m-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-mundov2 | yolov8m-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-mundo | yolov8l-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-mundov2 | yolov8l-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-mundo | yolov8x-mundo.pt | Deteção de objectos | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-mundov2 | yolov8x-worldv2.pt | Deteção de objectos | ✅ | ✅ | ✅ | ✅ |
Como é que posso reproduzir os resultados oficiais de YOLO-World a partir do zero?
Para reproduzir os resultados oficiais a partir do zero, é necessário preparar os conjuntos de dados e lançar a formação utilizando o código fornecido. O procedimento de treino envolve a criação de um dicionário de dados e a execução do train
com um formador personalizado:
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = {
"train": {
"yolo_data": ["Objects365.yaml"],
"grounding_data": [
{
"img_path": "../datasets/flickr30k/images",
"json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
},
{
"img_path": "../datasets/GQA/images",
"json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
},
],
},
"val": {"yolo_data": ["lvis.yaml"]},
}
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)