Exportação de modelos com Ultralytics YOLO
Introdução
O objetivo final do treino de um modelo é implementá-lo em aplicações do mundo real. O modo de exportação em Ultralytics YOLOv8 oferece uma gama versátil de opções para exportar o teu modelo treinado para diferentes formatos, tornando-o implementável em várias plataformas e dispositivos. Este guia completo pretende guiá-lo através das nuances da exportação de modelos, mostrando como obter a máxima compatibilidade e desempenho.
Observa: Como exportar o modelo Ultralytics YOLOv8 personalizado treinado e executar a inferência ao vivo na webcam.
Porquê escolher o modo de exportação do YOLOv8?
- Versatilidade: Exporta para vários formatos, incluindo ONNX, TensorRT, CoreML, e muito mais.
- Desempenho: Obtém até 5x mais velocidade em GPU com TensorRT e 3x mais velocidade em CPU com ONNX ou OpenVINO.
- Compatibilidade: Torna o teu modelo universalmente implementável em vários ambientes de hardware e software.
- Facilidade de utilização: CLI simples e Python API para exportação rápida e direta de modelos.
Principais características do modo de exportação
Apresentamos-te algumas das funcionalidades mais importantes:
- Exportação com um clique: Comandos simples para exportar para diferentes formatos.
- Exportação em lote: Exporta modelos com capacidade de inferência em lote.
- Inferência optimizada: Os modelos exportados são optimizados para tempos de inferência mais rápidos.
- Vídeos tutoriais: Guias e tutoriais detalhados para uma experiência de exportação sem problemas.
Dica
Exemplos de utilização
Export a YOLOv8n model to a different format like ONNX or TensorRT. See the Arguments section below for a full list of export arguments.
Exemplo
Argumentos
Esta tabela detalha as configurações e opções disponíveis para exportar modelos do YOLO para diferentes formatos. Essas configurações são essenciais para otimizar o desempenho, o tamanho e a compatibilidade do modelo exportado em várias plataformas e ambientes. A configuração adequada garante que o modelo esteja pronto para ser implantado na aplicação pretendida com eficiência ideal.
Argumenta | Tipo | Predefinição | Descrição |
---|---|---|---|
format |
str |
'torchscript' |
Formato de destino para o modelo exportado, como por exemplo 'onnx' , 'torchscript' , 'tensorflow' ou outros, definindo a compatibilidade com vários ambientes de implantação. |
imgsz |
int ou tuple |
640 |
Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas. |
keras |
bool |
False |
Permite exportar para o formato Keras para TensorFlow SavedModel , proporcionando compatibilidade com TensorFlow servindo e APIs. |
optimize |
bool |
False |
Aplica a otimização para dispositivos móveis ao exportar para TorchScript, reduzindo potencialmente o tamanho do modelo e melhorando o desempenho. |
half |
bool |
False |
Permite a quantização FP16 (meia-precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência no hardware suportado. |
int8 |
bool |
False |
Ativa a quantização INT8, comprimindo ainda mais o modelo e acelerando a inferência com uma perda mínima de precisão, principalmente para dispositivos de ponta. |
dynamic |
bool |
False |
Permite tamanhos de entrada dinâmicos para as exportações ONNX, TensorRT e OpenVINO , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis. |
simplify |
bool |
False |
Simplifica o gráfico do modelo para ONNX exporta com onnxslim , melhorando potencialmente o desempenho e a compatibilidade. |
opset |
int |
None |
Especifica a versão do ONNX opset para compatibilidade com diferentes analisadores e tempos de execução do ONNX . Se não for definido, utiliza a última versão suportada. |
workspace |
float |
4.0 |
Define o tamanho máximo do espaço de trabalho em GiB para otimizações do TensorRT , equilibrando o uso de memória e o desempenho. |
nms |
bool |
False |
Adiciona Supressão Não Máxima (NMS) à exportação CoreML , essencial para um pós-processamento de deteção preciso e eficiente. |
batch |
int |
1 |
Especifica o tamanho da inferência em lote do modelo de exportação ou o número máximo de imagens que o modelo exportado processará simultaneamente predict modo. |
O ajuste desses parâmetros permite a personalização do processo de exportação para atender a requisitos específicos, como ambiente de implantação, restrições de hardware e metas de desempenho. A seleção do formato e das definições adequadas é essencial para obter o melhor equilíbrio entre o tamanho do modelo, a velocidade e a precisão.
Formatos de exportação
Os formatos de exportação disponíveis em YOLOv8 encontram-se na tabela abaixo. Podes exportar para qualquer formato utilizando o botão format
argumento, ou seja format='onnx'
ou format='engine'
. Podes prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolov8n.onnx
. São apresentados exemplos de utilização para o teu modelo após a conclusão da exportação.
Formato | format Argumenta |
Modelo | Metadados | Argumentos |
---|---|---|---|---|
PyTorch | - | yolov8n.pt |
✅ | - |
TorchScript | torchscript |
yolov8n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolov8n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n.pb |
❌ | imgsz , batch |
TF Leve | tflite |
yolov8n.tflite |
✅ | imgsz , half , int8 , batch |
TF Borda TPU | edgetpu |
yolov8n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolov8n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n_ncnn_model/ |
✅ | imgsz , half , batch |
FAQ
Como é que exporto um modelo YOLOv8 para o formato ONNX ?
A exportação de um modelo YOLOv8 para o formato ONNX é simples com Ultralytics. Fornece os métodos Python e CLI para exportar modelos.
Exemplo
For more details on the process, including advanced options like handling different input sizes, refer to the ONNX section.
Quais são as vantagens de utilizar TensorRT para exportar modelos?
A utilização de TensorRT para a exportação de modelos oferece melhorias significativas de desempenho. Os modelos YOLOv8 exportados para TensorRT podem atingir uma aceleração de até 5x em GPU , tornando-o ideal para aplicações de inferência em tempo real.
- Versatilidade: Optimiza os modelos para uma configuração de hardware específica.
- Velocidade: Obtém uma inferência mais rápida através de optimizações avançadas.
- Compatibilidade: Integra-se sem problemas com o hardware NVIDIA .
To learn more about integrating TensorRT, see the TensorRT integration guide.
Como posso ativar a quantização INT8 ao exportar o meu modelo YOLOv8 ?
A quantização INT8 é uma excelente maneira de comprimir o modelo e acelerar a inferência, especialmente em dispositivos de ponta. Eis como podes ativar a quantização INT8:
Exemplo
INT8 quantization can be applied to various formats, such as TensorRT and CoreML. More details can be found in the Export section.
Porque é que o tamanho da entrada dinâmica é importante quando exportas modelos?
O tamanho de entrada dinâmico permite que o modelo exportado lide com dimensões de imagem variáveis, proporcionando flexibilidade e otimizando a eficiência do processamento para diferentes casos de uso. Ao exportar para formatos como ONNX ou TensorRT, a ativação do tamanho de entrada dinâmico garante que o modelo possa se adaptar a diferentes formas de entrada sem problemas.
Para ativar esta funcionalidade, utiliza a opção dynamic=True
durante a exportação:
Exemplo
Para um contexto adicional, consulta a configuração do tamanho da entrada dinâmica.
Quais são os principais argumentos de exportação a considerar para otimizar o desempenho do modelo?
Compreender e configurar os argumentos de exportação é crucial para otimizar o desempenho do modelo:
format:
O formato de destino para o modelo exportado (por exemplo,onnx
,torchscript
,tensorflow
).imgsz:
Tamanho de imagem desejado para a entrada do modelo (por exemplo,640
ou(height, width)
).half:
Permite a quantização FP16, reduzindo o tamanho do modelo e potencialmente acelerando a inferência.optimize:
Aplica optimizações específicas para ambientes móveis ou com restrições.int8:
Permite a quantização INT8, altamente benéfica para implantações de ponta.
For a detailed list and explanations of all the export arguments, visit the Export Arguments section.