Salta para o conteúdo

Otimizar YOLOv8 Inferências com o motor DeepSparse de Neural Magic

Ao implementar modelos de deteção de objectos como o Ultralytics YOLOv8 em vários hardwares, podes esbarrar em questões únicas como a otimização. É aqui que entra a integração do YOLOv8com o DeepSparse Engine do Neural Magic. Transforma a forma como os modelos YOLOv8 são executados e permite o desempenho ao nível da GPU diretamente em CPUs.

Este guia mostra-te como implementar YOLOv8 utilizando o DeepSparse de Neural Magic, como executar inferências e também como avaliar o desempenho para garantir que está optimizado.

Neural Magic's DeepSparse

Neural MagicVisão geral do DeepSparse da 's

Neural MagicO DeepSparse da Microsoft é um tempo de execução de inferência projetado para otimizar a execução de redes neurais em CPUs. Aplica técnicas avançadas como esparsidade, poda e quantização para reduzir drasticamente as demandas computacionais, mantendo a precisão. O DeepSparse oferece uma solução ágil para a execução eficiente e escalável de redes neurais em vários dispositivos.

Benefícios da integração do DeepSparse de Neural Magiccom YOLOv8

Antes de mergulhar em como implantar YOLOV8 usando DeepSparse, vamos entender os benefícios de usar DeepSparse. Algumas das principais vantagens incluem:

  • Velocidade de inferência melhorada: Atinge até 525 FPS (em YOLOv8n), acelerando significativamente as capacidades de inferência de YOLOv8 em comparação com os métodos tradicionais.

Velocidade de inferência melhorada

  • Eficiência optimizada do modelo: Usa a poda e a quantização para melhorar a eficiência do YOLOv8, reduzindo o tamanho do modelo e os requisitos computacionais, mantendo a precisão.

Eficiência do modelo optimizado

  • Alto desempenho em CPUs padrão: Oferece um desempenho semelhante ao da GPU em CPUs, proporcionando uma opção mais acessível e económica para várias aplicações.

  • Integração e implementação simplificadas: Oferece ferramentas fáceis de utilizar para uma integração fácil de YOLOv8 em aplicações, incluindo funcionalidades de anotação de imagem e vídeo.

  • Suporte para vários tipos de modelos: Compatível com modelos YOLOv8 padrão e otimizados para esparsidade, adicionando flexibilidade de implantação.

  • Solução económica e escalável: Reduz as despesas operacionais e oferece uma implementação escalável de modelos avançados de deteção de objectos.

Como funciona a tecnologia DeepSparse da Neural Magic?

Neural MagicA tecnologia Deep Sparse da Microsoft é inspirada na eficiência do cérebro humano na computação de redes neurais. Adopta dois princípios-chave do cérebro, como se segue:

  • Esparsidade: O processo de esparsificação envolve a poda de informações redundantes de redes de aprendizagem profunda, levando a modelos menores e mais rápidos sem comprometer a precisão. Esta técnica reduz significativamente o tamanho da rede e as necessidades computacionais.

  • Localidade de referência: O DeepSparse usa um método de execução exclusivo, dividindo a rede em Tensor Colunas. Essas colunas são executadas em profundidade, cabendo inteiramente no cache da CPU. Essa abordagem imita a eficiência do cérebro, minimizando a movimentação de dados e maximizando o uso do cache da CPU.

Como funciona a tecnologia DeepSparse da Neural Magic

Para mais informações sobre o funcionamento da tecnologia DeepSparse da Neural Magic, consulta a publicação no blogue.

Criando uma versão esparsa de YOLOv8 treinada em um conjunto de dados personalizado

O SparseZoo, um repositório de modelos de código aberto criado por Neural Magic, oferece uma coleção de pontos de controlo de modelos YOLOv8 pré-esparsos. Com o SparseML, perfeitamente integrado em Ultralytics, os utilizadores podem afinar sem esforço estes pontos de verificação esparsos nos seus conjuntos de dados específicos, utilizando uma interface de linha de comandos simples.

Consulta a documentação SparseML YOLOv8 deNeural Magic para obteres mais detalhes.

Usa: Implementando YOLOV8 usando DeepSparse

A implementação do YOLOv8 com o DeepSparse do Neural Magic envolve alguns passos simples. Antes de mergulhar nas instruções de utilização, não te esqueças de verificar a gama de modelosYOLOv8 oferecidos por Ultralytics. Isto irá ajudar-te a escolher o modelo mais apropriado para os requisitos do teu projeto. Eis como podes começar.

Passo 1: Instalação

Para instalar os pacotes necessários, executa:

Instalação

# Install the required packages
pip install deepsparse[yolov8]

Passo 2: Exportar YOLOv8 para o formato ONNX

O DeepSparse Engine requer modelos YOLOv8 no formato ONNX . Exportar o teu modelo para este formato é essencial para a compatibilidade com o DeepSparse. Usa o seguinte comando para exportar modelos YOLOv8 :

Modelo de exportação

# Export YOLOv8 model to ONNX format
yolo task=detect mode=export model=yolov8n.pt format=onnx opset=13

Este comando guarda o yolov8n.onnx para o teu disco.

Etapa 3: Implantação e execução de inferências

Com o teu modelo YOLOv8 em formato ONNX , podes implementar e executar inferências utilizando o DeepSparse. Isso pode ser feito facilmente com sua intuitiva Python API:

Implantação e execução de inferências

from deepsparse import Pipeline

# Specify the path to your YOLOv8 ONNX model
model_path = "path/to/yolov8n.onnx"

# Set up the DeepSparse Pipeline
yolo_pipeline = Pipeline.create(task="yolov8", model_path=model_path)

# Run the model on your images
images = ["path/to/image.jpg"]
pipeline_outputs = yolo_pipeline(images=images)

Passo 4: Aferição do desempenho

É importante verificar se o teu modelo YOLOv8 tem um desempenho ideal no DeepSparse. Podes comparar o desempenho do teu modelo para analisar a taxa de transferência e a latência:

Avaliação comparativa

# Benchmark performance
deepsparse.benchmark model_path="path/to/yolov8n.onnx" --scenario=sync --input_shapes="[1,3,640,640]"

Passo 5: Características adicionais

O DeepSparse fornece funcionalidades adicionais para a integração prática de YOLOv8 em aplicações, como a anotação de imagens e a avaliação de conjuntos de dados.

Características adicionais

# For image annotation
deepsparse.yolov8.annotate --source "path/to/image.jpg" --model_filepath "path/to/yolov8n.onnx"

# For evaluating model performance on a dataset
deepsparse.yolov8.eval --model_path "path/to/yolov8n.onnx"

A execução do comando de anotação processa a imagem especificada, detectando objectos e guardando a imagem anotada com caixas delimitadoras e classificações. A imagem anotada será armazenada em uma pasta de resultados de anotação. Isto ajuda a fornecer uma representação visual das capacidades de deteção do modelo.

Recurso de anotação de imagens

Depois de executar o comando eval, receberás métricas de saída detalhadas, como precisão, recuperação e mAP (precisão média média). Isto fornece uma visão abrangente do desempenho do teu modelo no conjunto de dados. Essa funcionalidade é particularmente útil para ajustar e otimizar seus modelos YOLOv8 para casos de uso específicos, garantindo alta precisão e eficiência.

Resumo

Este guia explorou a integração de Ultralytics' YOLOv8 com Neural Magic's DeepSparse Engine. Destacou como essa integração melhora o desempenho do YOLOv8 em plataformas de CPU, oferecendo eficiência no nível da GPU e técnicas avançadas de esparsidade de rede neural.

Para informações mais detalhadas e utilização avançada, visita Neural Magic's DeepSparse documentation. Além disso, consulta a documentação de Neural Magicsobre a integração com YOLOv8 aqui e assiste a uma excelente sessão sobre o assunto aqui.

Além disso, para uma compreensão mais ampla das várias integrações de YOLOv8 , visita a página do guia de integração deUltralytics , onde podes descobrir uma série de outras possibilidades de integração interessantes.



Criado em 2023-12-30, Atualizado em 2024-05-18
Autores: glenn-jocher (4), abirami-vina (1)

Comentários