Saltar para o conteúdo

Sony IMX500 Export for Ultralytics YOLO11

This guide covers exporting and deploying Ultralytics YOLO11 models to Raspberry Pi AI Cameras that feature the Sony IMX500 sensor.

A implementação de modelos de visão por computador em dispositivos com poder computacional limitado, como a câmara Raspberry Pi AI, pode ser complicada. A utilização de um formato de modelo optimizado para um desempenho mais rápido faz uma enorme diferença.

The IMX500 model format is designed to use minimal power while delivering fast performance for neural networks. It allows you to optimize your Ultralytics YOLO11 models for high-speed and low-power inferencing. In this guide, we'll walk you through exporting and deploying your models to the IMX500 format while making it easier for your models to perform well on the Raspberry Pi AI Camera.

Câmara de IA Raspberry Pi

Porque é que deve exportar para o IMX500

O sensor de visão inteligente IMX500 da Sony é uma peça de hardware revolucionária no processamento de IA de ponta. É o primeiro sensor de visão inteligente do mundo com capacidades de IA no chip. Este sensor ajuda a ultrapassar muitos desafios na IA de ponta, incluindo estrangulamentos no processamento de dados, preocupações com a privacidade e limitações de desempenho.
Enquanto outros sensores se limitam a transmitir imagens e fotogramas, o IMX500 conta uma história completa. Processa dados diretamente no sensor, permitindo que os dispositivos gerem conhecimentos em tempo real.

Sony's IMX500 Export for YOLO11 Models

O IMX500 foi concebido para transformar a forma como os dispositivos tratam os dados diretamente no sensor, sem necessidade de os enviar para a nuvem para processamento.

A IMX500 funciona com modelos quantizados. A quantização torna os modelos mais pequenos e mais rápidos sem perder muita precisão. É ideal para os recursos limitados da computação periférica, permitindo que as aplicações respondam rapidamente através da redução da latência e do processamento rápido de dados a nível local, sem dependência da nuvem. O processamento local também mantém os dados do utilizador privados e seguros, uma vez que não são enviados para um servidor remoto.

IMX500 Caraterísticas principais:

  • Saída de metadados: Em vez de transmitir apenas imagens, a IMX500 pode emitir imagens e metadados (resultado da inferência), e pode emitir apenas metadados para minimizar o tamanho dos dados, reduzir a largura de banda e diminuir os custos.
  • Responde às preocupações com a privacidade: Ao processar os dados no dispositivo, o IMX500 resolve as preocupações com a privacidade, ideal para aplicações centradas no ser humano, como a contagem de pessoas e o controlo de ocupação.
  • Processamento em tempo real: O processamento rápido e no sensor suporta decisões em tempo real, perfeito para aplicações de IA de ponta, como sistemas autónomos.

Before You Begin: For best results, ensure your YOLO11 model is well-prepared for export by following our Model Training Guide, Data Preparation Guide, and Hyperparameter Tuning Guide.

Exemplos de utilização

Export an Ultralytics YOLO11 model to IMX500 format and run inference with the exported model.

Nota

Aqui realizamos a inferência apenas para garantir que o modelo funciona como esperado. No entanto, para a implementação e inferência na câmara Raspberry Pi AI, consulte a secção Utilizar a exportação IMX500 na implementação.

Exemplo

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Export the model
model.export(format="imx", data="coco8.yaml")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolo11n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml

# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='https://ultralytics.com/images/bus.jpg'

Aviso

The Ultralytics package installs additional export dependencies at runtime. The first time you run the export command, you may need to restart your console to ensure it works correctly.

Argumentos de exportação

Argumento Tipo Predefinição Descrição
format str 'imx' Formato de destino para o modelo exportado, 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.
int8 bool True 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.
data str 'coco8.yaml' Caminho para o conjunto de dados ficheiro de configuração (predefinição: coco8.yaml), essencial para a quantização.
fraction float 1.0 Especifica a fração do conjunto de dados a utilizar para a calibração da quantização INT8. Permite a calibração num subconjunto do conjunto de dados completo, útil para experiências ou quando os recursos são limitados. Se não for especificado com a INT8 activada, será utilizado o conjunto de dados completo.
device str None Especifica o dispositivo para exportação: GPU (device=0), CPU (device=cpu).

Dica

Se estiver a exportar para uma GPU com suporte CUDA , passe o argumento device=0 para uma exportação mais rápida.

Para mais informações sobre o processo de exportação, visite a página de documentaçãoUltralytics sobre exportação.

O processo de exportação criará um modelo ONNX para validação da quantização, juntamente com um diretório denominado <model-name>_imx_model. Este diretório irá incluir o packerOut.zip que é essencial para empacotar o modelo para ser implementado no hardware IMX500. Além disso, o ficheiro <model-name>_imx_model conterá um ficheiro de texto (labels.txt) que enumera todas as etiquetas associadas ao modelo.

yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt

Utilização da exportação IMX500 na implementação

After exporting Ultralytics YOLO11n model to IMX500 format, it can be deployed to Raspberry Pi AI Camera for inference.

Pré-requisitos de hardware

Certifique-se de que possui o hardware abaixo indicado:

  1. Raspberry Pi 5 ou Raspberry Pi 4 Modelo B
  2. Câmara de IA Raspberry Pi

Ligar a câmara Raspberry Pi AI ao conetor MIPI CSI de 15 pinos do Raspberry Pi e ligar o Raspberry Pi

Pré-requisitos do software

Nota

Este guia foi testado com o Raspberry Pi OS Bookworm a funcionar num Raspberry Pi 5

Passo 1: Abra uma janela de terminal e execute os seguintes comandos para atualizar o software Raspberry Pi para a versão mais recente.

sudo apt update && sudo apt full-upgrade

Passo 2: Instalar o firmware IMX500, necessário para o funcionamento do sensor IMX500, juntamente com uma ferramenta de empacotamento.

sudo apt install imx500-all imx500-tools

Passo 3: Instalar os pré-requisitos para executar picamera2 aplicação. Utilizaremos esta aplicação mais tarde para o processo de implementação.

sudo apt install python3-opencv python3-munkres

Passo 4: Reinicie o Raspberry Pi para que as alterações entrem em vigor

sudo reboot

Modelo de pacote e implementação na câmara de IA

Depois de obter packerOut.zip do processo de conversão IMX500, pode passar este ficheiro para a ferramenta de empacotamento para obter um ficheiro RPK. Este ficheiro pode então ser implementado diretamente na câmara AI utilizando picamera2.

Passo 1: Empacotar o modelo num ficheiro RPK

imx500-package -i path/to/packerOut.zip -o path/to/output/folder

O procedimento acima irá gerar um network.rpk dentro da pasta de saída especificada.

Passo 2: Clonar picamera2 instale-o e navegue até aos exemplos imx500

git clone https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500

Step 3: Run YOLO11 object detection, using the labels.txt file that has been generated during the IMX500 export.

python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels path/to/labels.txt

Poderá então ver o resultado da inferência em direto da seguinte forma

Inferência na câmara de IA Raspberry Pi

Referências

YOLOv8 and YOLO11n benchmarks below were run by the Ultralytics team on Raspberry Pi AI Camera with imx velocidade e precisão de medição do formato do modelo.

Modelo Formato Estado Size of RPK (MB) mAP50-95(B) Tempo de inferência (ms/im)
YOLOv8n imx 3.1 0.602 58.82
YOLO11n imx 3.2 0.644 62.50

Nota

Validation for the above benchmark was done using coco8 dataset on a Raspberry Pi 5

O que é que está debaixo do capot?

Implantação do IMX500

Kit de ferramentas de compressão de modelos (MCT) da Sony

O kit de ferramentas de compressão de modelos (MCT) da Sony é uma ferramenta poderosa para otimizar modelos de aprendizagem profunda através de quantização e poda. Suporta vários métodos de quantização e fornece algoritmos avançados para reduzir o tamanho do modelo e a complexidade computacional sem sacrificar significativamente a precisão. O MCT é particularmente útil para implantar modelos em dispositivos com recursos limitados, garantindo inferência eficiente e latência reduzida.

Caraterísticas suportadas pelo MCT

O MCT da Sony oferece uma gama de funcionalidades concebidas para otimizar os modelos de redes neurais:

  1. Optimizações de gráficos: Transforma modelos em versões mais eficientes, dobrando camadas como a normalização de lotes em camadas anteriores.
  2. Pesquisa de parâmetros de quantização: Minimiza o ruído de quantização usando métricas como Erro Quadrático Médio, No-Clipping e Erro Médio Médio.
  3. Algoritmos avançados de quantização:
    • Correção do desvio negativo: Resolve problemas de desempenho da quantização de ativação simétrica.
    • Filtragem de outliers: Utiliza o z-score para detetar e remover os outliers.
    • Agrupamento: Utiliza grelhas de quantização não uniformes para uma melhor correspondência de distribuição.
    • Pesquisa de precisão mista: Atribui diferentes larguras de bits de quantização por camada com base na sensibilidade.
  4. Visualização: Utilize o TensorBoard para observar informações sobre o desempenho do modelo, fases de quantização e configurações de largura de bits.

Quantização

O MCT suporta vários métodos de quantização para reduzir o tamanho do modelo e melhorar a velocidade de inferência:

  1. Quantização pós-formação (PTQ):
    • Disponível através das APIs Keras e PyTorch .
    • Complexidade: Baixa
    • Custo computacional: Baixo (CPU minutos)
  2. Quantização pós-formação baseada em gradiente (GPTQ):
    • Disponível através das APIs Keras e PyTorch .
    • Complexidade: Média
    • Custo computacional: Moderado (2-3 GPU horas)
  3. Formação com consciência da quantização (QAT):
    • Complexidade: elevada
    • Custo computacional: elevado (12-36 GPU horas)

A MCT também suporta vários esquemas de quantização para pesos e activações:

  1. Potência de dois (compatível com o hardware)
  2. Simétrico
  3. Uniforme

Poda estruturada

A MCT introduz a poda de modelos estruturada e sensível ao hardware, concebida para arquitecturas de hardware específicas. Essa técnica aproveita os recursos de Instrução Única, Dados Múltiplos (SIMD) da plataforma de destino, podando grupos SIMD. Isso reduz o tamanho e a complexidade do modelo ao mesmo tempo em que otimiza a utilização do canal, alinhado com a arquitetura SIMD para a utilização de recursos direcionados da pegada de memória de pesos. Disponível através das APIs Keras e PyTorch .

Ferramenta de conversão IMX500 (Compilador)

The IMX500 Converter Tool is integral to the IMX500 toolset, allowing the compilation of models for deployment on Sony's IMX500 sensor (for instance, Raspberry Pi AI Cameras). This tool facilitates the transition of Ultralytics YOLO11 models processed through Ultralytics software, ensuring they are compatible and perform efficiently on the specified hardware. The export procedure following model quantization involves the generation of binary files that encapsulate essential data and device-specific configurations, streamlining the deployment process on the Raspberry Pi AI Camera.

Casos de utilização no mundo real

A exportação para o formato IMX500 tem uma vasta aplicabilidade em todos os sectores. Eis alguns exemplos:

  • IA de ponta e IoT: Permitir a deteção de objectos em drones ou câmaras de segurança, onde o processamento em tempo real em dispositivos de baixo consumo é essencial.
  • Dispositivos vestíveis: Implementar modelos optimizados para processamento de IA em pequena escala em dispositivos portáteis de monitorização da saúde.
  • Smart Cities: Use IMX500-exported YOLO11 models for traffic monitoring and safety analysis with faster processing and minimal latency.
  • Análise de retalho: Melhorar a monitorização na loja através da implementação de modelos optimizados em sistemas de ponto de venda ou prateleiras inteligentes.

Conclusão

Exporting Ultralytics YOLO11 models to Sony's IMX500 format allows you to deploy your models for efficient inference on IMX500-based cameras. By leveraging advanced quantization techniques, you can reduce model size and improve inference speed without significantly compromising accuracy.

Para mais informações e diretrizes detalhadas, consulte o website IMX500 da Sony.

FAQ

How do I export a YOLO11 model to IMX500 format for Raspberry Pi AI Camera?

To export a YOLO11 model to IMX500 format, use either the Python API or CLI command:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

O processo de exportação criará um diretório que contém os ficheiros necessários para a implementação, incluindo packerOut.zip que pode ser utilizado com a ferramenta de empacotamento IMX500 no Raspberry Pi.

Quais são as principais vantagens de utilizar o formato IMX500 para a implementação de IA periférica?

O formato IMX500 oferece várias vantagens importantes para a implantação na periferia:

  • O processamento de IA no chip reduz a latência e o consumo de energia
  • Produz imagens e metadados (resultado da inferência) em vez de apenas imagens
  • Maior privacidade através do processamento local de dados sem dependência da nuvem
  • Capacidades de processamento em tempo real ideais para aplicações sensíveis ao tempo
  • Quantização optimizada para uma implementação eficiente de modelos em dispositivos com recursos limitados

Que pré-requisitos de hardware e software são necessários para a implementação do IMX500?

Para implementar os modelos IMX500, necessita de:

Hardware:

  • Raspberry Pi 5 ou Raspberry Pi 4 Modelo B
  • Câmara Raspberry Pi AI com sensor IMX500

Software:

  • Raspberry Pi OS Bookworm
  • Firmware e ferramentas IMX500 (sudo apt install imx500-all imx500-tools)
  • Python pacotes para picamera2 (sudo apt install python3-opencv python3-munkres)

What performance can I expect from YOLO11 models on the IMX500?

Com base em Ultralytics benchmarks da câmara Raspberry Pi AI:

  • YOLO11n achieves 58.82ms inference time per image
  • mAP50-95 de 0,522 no conjunto de dados COCO8
  • Tamanho do modelo de apenas 2,9MB após a quantização

Isto demonstra que o formato IMX500 proporciona uma inferência eficiente em tempo real, mantendo uma boa precisão para aplicações de IA de ponta.

Como posso empacotar e implementar o meu modelo exportado para a câmara Raspberry Pi AI?

Depois de exportar para o formato IMX500:

  1. Utilize a ferramenta de empacotamento para criar um ficheiro RPK:

    imx500-package -i path/to/packerOut.zip -o path/to/output/folder
    
  2. Clonar e instalar o picamera2:

    git clone https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Executar a inferência utilizando o ficheiro RPK gerado:

    python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt
    


📅C riado há 5 meses ✏️ Atualizado há 9 dias

Comentários