Exportação DEEPX para modelos Ultralytics YOLO#
A implementação de modelos de visão computacional em hardware NPU especializado exige um formato de modelo compatível e otimizado. Exportar modelos Ultralytics YOLO para o formato DEEPX permite uma inferência eficiente, quantizada para INT8, nos aceleradores NPU DEEPX. Este guia mostra como converter os teus modelos YOLO para o formato DEEPX e implementá-los em hardware equipado com DEEPX.
O que é DEEPX?#
DEEPX é uma empresa de semicondutores de IA especializada em unidades de processamento neural (NPUs) concebidas para inferência de aprendizagem profunda na periferia, com eficiência energética. As NPUs DEEPX são concebidas para aplicações de IA industriais e incorporadas exigentes, oferecendo alto rendimento com consumo mínimo de energia. O hardware é adequado para cenários de implementação em que a conectividade à nuvem não é fiável ou não é desejável, como robótica, câmaras inteligentes e sistemas de automação industrial.
Formato de exportação DEEPX#
A exportação DEEPX produz um binário de modelo .dxnn compilado e otimizado para execução em hardware NPU DEEPX. O fluxo de compilação utiliza o conjunto de ferramentas dx_com para realizar a quantização INT8 e a otimização específica para o hardware, gerando um diretório de modelo autónomo, pronto para implementação.
Principais funcionalidades dos modelos DEEPX#
Os modelos DEEPX oferecem várias vantagens para a implementação na periferia:
- Quantização INT8: Os modelos são quantizados para precisão INT8 durante a exportação, reduzindo significativamente o tamanho do modelo e maximizando o rendimento da NPU. Saiba mais sobre a quantização de modelos.
- Otimizado para NPU: O formato
.dxnné compilado especificamente para hardware NPU DEEPX e aproveita unidades de aceleração dedicadas para uma inferência rápida e eficiente. - Baixo consumo de energia: Ao transferir a inferência para a NPU, os modelos DEEPX consomem muito menos energia do que a inferência equivalente em CPU ou GPU.
- Precisão baseada em calibração: A exportação utiliza calibração baseada em EMA com imagens reais do conjunto de dados para minimizar a perda de precisão durante a quantização.
- Saída autónoma: O diretório do modelo exportado inclui o binário compilado, a configuração de calibração e os metadados para uma implementação simples.
Tarefas compatíveis#
A exportação DEEPX é compatível com as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui esses cabeçalhos.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar para DEEPX: converter o teu modelo YOLO#
Exporta um modelo Ultralytics YOLO para o formato DEEPX e executa a inferência com o modelo exportado.
A exportação DEEPX só é compatível com máquinas Linux x86-64. A arquitetura ARM64 (aarch64) não é compatível com a etapa de exportação. No entanto, os modelos dxnn exportados são totalmente compatíveis e executáveis em plataformas ARM64.
Instalação#
Para instalar os pacotes necessários, execute:
# Install the required package for YOLO
pip install ultralyticsO compilador dx_com é instalado automaticamente a partir do repositório do SDK da DEEPX na primeira exportação. O fluxo de exportação atual utiliza o DX-COM 2.3.0, que disponibiliza wheels para Python 3.8–3.12 em Linux x86-64 com glibc 2.31 ou posterior.
As versões do compilador no PyPI foram retiradas. Para pré-instalar as dependências de exportação, indica a página de wheels do SDK com --find-links; isto funciona tanto com pip como com uv pip:
pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.htmlPara instalar o repositório em modo editável, substitui "ultralytics[export-deepx]" por -e ".[export-base,export-deepx]". Para reproduzir o ambiente Python 3.12 e o teste rápido de exportação utilizados pela CI, executa o construtor de ambientes existente a partir da raiz do repositório:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepxO construtor de ambientes requer uv e uma cópia instalada da Ultralytics. Instala o compilador a partir da origem do SDK e aplica automaticamente as restrições de dependências testadas.
Utilização#
O formato DEEPX é compatível com os modos Exportar, Prever e Validar. A inferência e a validação são executadas em hardware NPU DEEPX. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a sua precisão.
from ultralytics import YOLO
# Carregar um modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta o modelo para o formato DEEPX (quantize=8 é aplicado automaticamente)
model.export(format="deepx") # creates 'yolo26n_deepx_model/'from ultralytics import YOLO
# Carrega o modelo DEEPX exportado
model = YOLO("yolo26n_deepx_model")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carrega o modelo DEEPX exportado
model = YOLO("yolo26n_deepx_model")
# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportação#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'deepx' | Formato de destino do modelo exportado, que define a compatibilidade com o hardware NPU DEEPX. |
imgsz | int ou tuple | 640 | Tamanho de imagem pretendido para a entrada do modelo. A exportação DEEPX requer uma entrada quadrada — passa um inteiro (por exemplo, 640) ou um tuplo em que a altura seja igual à largura. |
quantize | int ou str | 8/automático | Precisão da quantização. 8 (INT8) é necessária para a exportação DEEPX e é ativada automaticamente se não for especificada. Substitui as opções obsoletas half/int8. |
simplify | bool | True | Simplifica o grafo ONNX intermédio com onnxslim. |
opset | int | None | Especifica a versão do opset ONNX para o grafo ONNX intermédio. Se não for definida, utiliza a versão mais recente compatível. |
data | str | None | Ficheiro YAML do conjunto de dados utilizado para a calibração INT8; para classificação, utiliza-se um diretório de conjunto de dados ou o nome de um conjunto de dados integrado. Se for omitido com quantize=8, a Ultralytics seleciona o conjunto de dados de calibração predefinido para a tarefa do modelo. |
device | str | None | Especifica o dispositivo para exportação: GPU (device=0) ou CPU (device=cpu). |
optimize | bool | False | Ativa uma otimização superior do compilador, reduzindo a latência da inferência e aumentando o tempo de compilação. |
Executa sempre a exportação DEEPX num anfitrião Linux x86-64. O compilador dx_com não é compatível com ARM64.
Para saber mais sobre o processo de exportação, acesse a página da documentação da Ultralytics sobre exportação.
Estrutura de saída#
Após uma exportação bem-sucedida, é criado um diretório de modelo com a seguinte estrutura:
yolo26n_deepx_model/
├── yolo26n.dxnn # Compiled DEEPX model binary (NPU executable)
├── config.json # Calibration and preprocessing configuration
└── metadata.yaml # Model metadata (classes, image size, task, etc.)O ficheiro .dxnn é o binário do modelo compilado, que o runtime dx_engine carrega diretamente na NPU. O ficheiro metadata.yaml contém os nomes das classes, o tamanho da imagem e outras informações utilizadas pelo pipeline de inferência da Ultralytics.
Implementar modelos YOLO DEEPX exportados#
Depois de exportares com sucesso o teu modelo Ultralytics YOLO para o formato DEEPX, o passo seguinte é implementá-lo em hardware NPU DEEPX.
Instalação do runtime#
A inferência requer o controlador NPU DEEPX, o runtime libdxrt e o pacote Python dx_engine.
O runtime DEEPX é compatível com Linux x86-64 e ARM64 (por exemplo, Raspberry Pi 5).
# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb
# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh
# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whlVerifica se o runtime está instalado corretamente com dxrt-cli --version. Deverás ver um resultado semelhante a:
DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6Depois de instalares o runtime, executa a inferência e a validação no teu dispositivo DEEPX exatamente como indicado na secção Utilização acima — o modelo _deepx_model exportado é carregado diretamente com YOLO(...).
Visualização com dxtron#
dxtron é o visualizador de grafos da DEEPX, utilizado para inspecionar o modelo .dxnn compilado.
Instala dxtron em Linux x86-64, transferindo o pacote .deb do SDK DEEPX e instalando-o através de dpkg:
wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.debEm seguida, abre o modelo exportado:
dxtron yolo26n_deepx_model/yolo26n.dxnndxtron está disponível para plataformas x86-64 e aarch64.
Benchmarks#
A equipa da Ultralytics avaliou os modelos YOLO26, comparando a velocidade e a precisão entre PyTorch e DEEPX.
| Modelo | Formato | Estado | Tamanho (MB) | metrics/mAP50-95(B) | Tempo de inferência (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4760 | 315.2 |
| YOLO26n | DEEPX | ✅ | 6.6 | 0.4660 | 34.6 |
| YOLO26n-seg | PyTorch | ✅ | 6.5 | 0.4080 | 485.4 |
| YOLO26n-seg | DEEPX | ✅ | 7.9 | 0.3920 | 53.8 |
| YOLO26n-pose | PyTorch | ✅ | 7.6 | 0.4230 | 506.3 |
| YOLO26n-pose | DEEPX | ✅ | 8.8 | 0.4590 | 37.6 |
| YOLO26n-obb | PyTorch | ✅ | 5.7 | 0.817 | 1094.4 |
| YOLO26n-obb | DEEPX | ✅ | 7.3 | 0.783 | 56.4 |
| Modelo | Formato | Estado | Tamanho (MB) | precisão (top1) | precisão (top5) | Tempo de inferência (ms/im) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.6 | 0.431 | 0.716 | 23.8 |
| YOLO26n-cls | DEEPX | ✅ | 5.9 | 0.333 | 0.686 | 2.7 |
A validação das avaliações acima foi realizada com COCO128 para deteção, COCO128-seg para segmentação, COCO8-pose para estimativa de pose, ImageNet100 para classificação e DOTA128 para modelos OBB. O tempo de inferência não inclui o pré-processamento nem o pós-processamento.
Para obter o melhor rendimento de inferência da NPU DX-M1 ligada a um Raspberry Pi 5, abre o ficheiro de configuração de arranque e ativa o suporte para PCIe Gen 3.
sudo nano /boot/firmware/config.txtAdiciona as seguintes linhas ao fim do ficheiro:
dtparam=pciex1
dtparam=pciex1_gen=3Guarda e sai (Ctrl+X, depois Y e, em seguida, Enter) e reinicia:
sudo rebootVerifica a geração PCIe. A velocidade esperada é de 8GT/s para PCIe Gen3.
sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"Fluxo de trabalho recomendado#
- Treina o teu modelo usando o Modo de Treino da Ultralytics
- Exporta para o formato DEEPX com
model.export(format="deepx") - Valida a precisão com
yolo valpara verificar se a perda de quantização é mínima - Faz previsões usando
yolo predictpara validação qualitativa - Implementa o diretório
_deepx_model/exportado em hardware NPU DEEPX com o runtimedx_engine
Aplicações no mundo real#
Os modelos YOLO implementados em hardware NPU DEEPX são adequados para uma vasta gama de aplicações de IA na periferia:
- Vigilância inteligente: Deteção de objetos em tempo real para sistemas de segurança e monitorização, com baixo consumo de energia e sem dependência da nuvem.
- Automação industrial: Controlo de qualidade no dispositivo, deteção de defeitos e monitorização de processos em ambientes fabris.
- Robótica: Navegação baseada em visão, prevenção de obstáculos e reconhecimento de objetos em robôs e drones autónomos.
- Agricultura inteligente: Monitorização da saúde das culturas, deteção de pragas e estimativa da produção através da visão computacional na agricultura.
- Análise do retalho: Análise do fluxo de clientes, monitorização de prateleiras e acompanhamento do inventário com inferência na periferia em tempo real.
Resumo#
Neste guia, aprendeste a exportar modelos Ultralytics YOLO para o formato DEEPX e a implementá-los em hardware NPU DEEPX. O pipeline de exportação utiliza a calibração INT8 e o compilador dx_com para produzir um binário .dxnn otimizado para o hardware, enquanto o runtime dx_engine processa a inferência no dispositivo.
A combinação de Ultralytics YOLO e da tecnologia NPU da DEEPX oferece uma solução eficaz para executar cargas de trabalho avançadas de visão computacional em dispositivos incorporados e periféricos, com alto rendimento e baixo consumo de energia para aplicações em tempo real.
Para mais informações sobre a utilização, visita o site oficial da DEEPX.
Além disso, se quiseres saber mais sobre outras integrações da Ultralytics YOLO, visita a nossa página do guia de integrações. Vais encontrar muitos recursos e informações úteis.
Perguntas frequentes#
Podes exportar o teu modelo com o método
export()em Python ou através da CLI. A exportação ativa automaticamente a quantização INT8 e utiliza um conjunto de dados de calibração para minimizar a perda de precisão. O pacote do compiladordx_comé instalado automaticamente se ainda não estiver presente.Exemplofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="deepx")As NPUs DEEPX foram concebidas para executar operações INT8 com a máxima eficiência. O compilador
dx_comquantiza o modelo durante a exportação, utilizando calibração baseada em EMA com imagens reais do conjunto de dados, para que a NPU possa oferecer todo o seu desempenho. A quantização INT8 é sempre aplicada nas exportações DEEPX — se pedires outra precisão, esta será substituída e será apresentado um aviso.A exportação (compilação) de modelos DEEPX requer um anfitrião Linux x86-64. A etapa de exportação não é compatível com máquinas ARM64 (aarch64) nem Windows. A inferência com o modelo
.dxnnexportado pode ser executada em qualquer plataforma Linux (x86-64 e ARM64) compatível com o runtimedx_engine.A exportação cria um diretório (por exemplo,
yolo26n_deepx_model/) que contém:yolo26n.dxnn— o binário NPU compiladoconfig.json— definições de calibração e pré-processamentometadata.yaml— metadados do modelo, incluindo os nomes das classes e o tamanho da imagem
Sim. Qualquer modelo treinado com o modo de treino da Ultralytics e exportado com
format="deepx"pode ser implementado em hardware NPU DEEPX, desde que utilize operações de camada compatíveis. A exportação é compatível com as sete tarefas da Ultralytics: deteção, segmentação de instâncias, segmentação semântica, estimativa de profundidade, classificação, estimativa de pose e caixa delimitadora orientada (OBB).O pipeline de exportação DEEPX configura o compilador
dx_compara 100 passos de calibração EMA com imagens do conjunto de dados de calibração. Normalmente, algumas centenas de imagens são suficientes para obter uma boa precisão de quantização. Se o tempo de compilação com conjuntos de dados grandes for uma preocupação, apontadatapara um conjunto de dados mais pequeno.O runtime DEEPX não está incluído em
ultralyticse tem de ser instalado separadamente antes de executar a inferência. Em máquinas Linux x86-64 e ARM64 (por exemplo, Raspberry Pi 5), instala o controlador NPU (dxrt-driver-dkms) e o runtime (libdxrt) a partir das versões do DEEPX-AI no GitHub e, em seguida, instala o wheel Pythondx_engineincluído. Consulta a secção Instalação do runtime acima para ver os comandos passo a passo.