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, CoreMLe muito mais.
- Desempenho: Ganhe até 5x mais velocidade de GPU com TensorRT e 3x mais velocidade de 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' , 'engine' TensorRT), ou outros. Cada formato permite a compatibilidade com diferentes 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 (por exemplo, 640 para 640×640) 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 otimização para dispositivos móveis ao exportar para o TorchScript, reduzindo potencialmente o tamanho do modelo e melhorando o desempenho da inferência. Não é compatível com o formato NCNN ou dispositivos CUDA . |
half |
bool |
False |
Permite a quantização FP16 (meia-precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência em hardware suportado. Não é compatível com a quantização INT8 ou exportações CPU para CPU para ONNX. |
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. Quando utilizado com o TensorRT, efectua a quantização pós-treino (PTQ). |
dynamic |
bool |
False |
Permite tamanhos de entrada dinâmicos para exportações ONNX, TensorRT e OpenVINO , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis. Definido automaticamente para True quando se utiliza o TensorRT com INT8. |
simplify |
bool |
True |
Simplifica o gráfico do modelo para ONNX exportações com onnxslim melhorando potencialmente o desempenho e a compatibilidade com os motores de inferência. |
opset |
int |
None |
Especifica a versão do conjunto de operações ONNX para compatibilidade com diferentes ONNX e tempos de execução. 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 TensorRT optimizações, equilibrando a utilização da memória e o desempenho. Utilizar 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) ao modelo exportado quando suportado (consulte Formatos de exportação), melhorando a eficiência do pós-processamento da deteção. Não disponível para modelos end2end. |
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 em predict mode. Para as exportações de TPU Edge, este valor é automaticamente definido como 1. |
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 ). As exportações TensorRT utilizam automaticamente GPU. |
data |
str |
'coco8.yaml' |
Caminho para o conjunto de dados ficheiro de configuração (predefinição: coco8.yaml ), essencial para a calibração da quantização da INT8. Se não for especificado com a INT8 activada, será atribuído um conjunto de dados por defeito. |
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 , nms , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Leve | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data |
TF Borda TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , 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 , data |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name |
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 mais pormenores sobre o processo, incluindo opções avançadas como o tratamento de diferentes tamanhos de entrada, consulte o guia de integraçã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, tais como TensorRT, OpenVINOe CoreML. Para obter resultados de quantização óptimos, forneça um representante conjunto de dados utilizando o data
parâmetro.
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 diferentes dimensões de imagem, proporcionando flexibilidade e optimizando a eficiência do processamento para diferentes casos de utilização. Ao exportar para formatos como ONNX ou TensorRTa 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
O dimensionamento dinâmico de entrada é particularmente útil para aplicações em que as dimensões de entrada podem variar, como no processamento de vídeo ou no tratamento de imagens de diferentes fontes.
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:
Ativa a quantização INT8, altamente benéfica para IA de ponta implantações.
Para implantação em plataformas de hardware específicas, considere usar formatos de exportação especializados como TensorRT para GPUs NVIDIA , CoreML para dispositivos Apple, ou Edge TPU para dispositivos Google Coral.