Exportação de modelos com Ultralytics YOLO
Introdução
O objetivo final da formação de um modelo é implementá-lo em aplicações do mundo real. O modo de exportação em Ultralytics YOLO11 oferece uma gama versátil de opções para exportar o seu modelo treinado para diferentes formatos, tornando-o implementável em várias plataformas e dispositivos. Este guia completo tem como objetivo guiá-lo através das nuances da exportação de modelos, mostrando como obter a máxima compatibilidade e desempenho.
Ver: Como exportar o modelo Ultralytics YOLO personalizado treinado e executar a inferência em direto na Webcam.
Porquê escolher o modo de exportação do YOLO11?
- Versatilidade: Exportação para vários formatos, incluindo ONNX, TensorRT, CoreML, entre outros.
- Desempenho: Ganhe até 5x mais velocidade em GPU com TensorRT e 3x mais velocidade em CPU com ONNX ou OpenVINO.
- Compatibilidade: Torne o seu 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 caraterísticas do modo de exportação
Eis algumas das funcionalidades que se destacam:
- Exportação com um clique: Comandos simples para exportar para diferentes formatos.
- Exportação em lote: Exportar 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
Exportar um modelo YOLO11n para um formato diferente, como ONNX ou TensorRT. Ver 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.
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
format |
str |
'torchscript' |
Formato de destino para o modelo exportado, tal como '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 a exportação 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 borda. |
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 |
True |
Simplifica o gráfico do modelo para ONNX exportações 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 ou None |
None |
Define o tamanho máximo do espaço de trabalho em GiB para optimizações do TensorRT , equilibrando a utilização da memória e o desempenho; utilize None para atribuição automática por TensorRT até ao máximo do dispositivo. |
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. |
device |
str |
None |
Especifica o dispositivo para exportação: GPU (device=0 ), CPU (device=cpu ), MPS para silício Apple (device=mps ) ou DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1 ). |
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 YOLO11 encontram-se na tabela abaixo. É possível exportar para qualquer formato utilizando o botão format
argumento, ou seja format='onnx'
ou format='engine'
. É possível prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolo11n.onnx
. São apresentados exemplos de utilização para o seu modelo após a conclusão da exportação.
Formato | format Argumento |
Modelo | Metadados | Argumentos |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Leve | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , batch |
TF Borda TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch |
IMX500 | imx |
yolov8n_imx_model/ |
✅ | imgsz , int8 |
FAQ
Como é que exporto um modelo YOLO11 para o formato ONNX ?
A exportação de um modelo YOLO11 para o formato ONNX é simples com Ultralytics. Fornece os métodos Python e CLI para exportar modelos.
Exemplo
Para obter mais detalhes sobre o processo, incluindo opções avançadas como o tratamento de diferentes tamanhos de entrada, consulte a secçãoONNX .
Quais são as vantagens de utilizar TensorRT para a exportação de modelos?
A utilização de TensorRT para a exportação de modelos oferece melhorias significativas de desempenho. Os modelos YOLO11 exportados para TensorRT podem atingir um aumento de velocidade de até 5x em GPU , tornando-o ideal para aplicações de inferência em tempo real.
- Versatilidade: Otimizar modelos para uma configuração de hardware específica.
- Velocidade: Obtenha uma inferência mais rápida através de optimizações avançadas.
- Compatibilidade: Integra-se sem problemas com o hardware NVIDIA .
Para saber mais sobre a integração de TensorRT, consulte o guia de integração deTensorRT .
Como posso ativar a quantização INT8 ao exportar o meu modelo YOLO11 ?
A quantização INT8 é uma excelente maneira de compactar o modelo e acelerar a inferência, especialmente em dispositivos de borda. Veja como pode ativar a quantização INT8:
Exemplo
A quantização INT8 pode ser aplicada a vários formatos, como TensorRT e CoreML. Para mais informações, consulte a secção Exportação.
Porque é que o tamanho da entrada dinâmica é importante quando se exportam modelos?
O tamanho de entrada dinâmico permite que o modelo exportado lide com dimensões de imagem variáveis, proporcionando flexibilidade e optimizando a eficiência de processamento para diferentes casos de utilização. Ao exportar para formatos como ONNX ou TensorRT, a ativação do tamanho de entrada dinâmico garante que o modelo pode adaptar-se a diferentes formas de entrada sem problemas.
Para ativar esta funcionalidade, utilize a opção dynamic=True
durante a exportação:
Exemplo
Para um contexto adicional, consulte 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 pretendido 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.
Para obter uma lista detalhada e explicações de todos os argumentos de exportação, visite a secção Argumentos de exportação.