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 a velocidade da GPU com TensorRT e 3x a velocidade da 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
Exporta um modelo YOLOv8n para um formato diferente, como ONNX ou TensorRT. Consulte a secção Argumentos abaixo para obter uma lista completa dos argumentos de exportação.
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 exportações para ONNX e TensorRT , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis. |
simplify |
bool |
False |
Simplifica o gráfico do modelo para ONNX exportações, 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 irá processar em simultâneo em 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 , batch |
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 |