Enquanto outros sensores se limitam a transmitir imagens e fotogramas, o IMX500 conta uma história completa. Processa os dados diretamente no sensor, permitindo que os dispositivos gerem informações em tempo real.
A IMX500 foi concebida 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 trabalha 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:
Antes de começar: Para obter os melhores resultados, certifica-te de que o teu modelo YOLOv8 está bem preparado para a exportação, seguindo o nosso Guia de Formação de Modelos, Guia de Preparação de Dados e Guia de Afinação de Hiperparâmetros.
Exporta um modelo Ultralytics YOLOv8 para o formato IMX500 e executa a inferência com o modelo exportado.
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, salta para a secção Utilizar a exportação IMX500 na implementação.
Exemplo
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
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.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
Ao exportar um modelo para o formato IMX500, podes especificar vários argumentos:
Chave | Valor | Descrição |
---|---|---|
format | imx | Formato para o qual exportar (imx) |
int8 | True | Ativa a quantização INT8 para o modelo (predefinição: True ) |
imgsz | 640 | Tamanho da imagem para a entrada do modelo (predefinição: 640 ) |
Depois de exportares o modelo Ultralytics YOLOv8n para o formato IMX500, este pode ser implementado na câmara Raspberry Pi AI para inferência.
Certifica-te de que tens o hardware abaixo:
Liga a câmara Raspberry Pi AI ao conetor MIPI CSI de 15 pinos do Raspberry Pi e liga o Raspberry Pi
Nota
Este guia foi testado com o Raspberry Pi OS Bookworm a funcionar num Raspberry Pi 5
Passo 1: Abre uma janela de terminal e executa os seguintes comandos para atualizar o software Raspberry Pi para a versão mais recente.
Passo 2: Instala o firmware IMX500, que é necessário para o funcionamento do sensor IMX500, juntamente com uma ferramenta de empacotamento.
Passo 3: Instala os pré-requisitos para executar picamera2
aplicação. Utilizaremos esta aplicação mais tarde para o processo de implementação.
Passo 4: Reinicia o Raspberry Pi para que as alterações entrem em vigor
Depois de obteres packerOut.zip
do processo de conversão IMX500, podes 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: Empacota o modelo num ficheiro RPK
O procedimento acima irá gerar um network.rpk
dentro da pasta de saída especificada.
Passo 2: Clonar picamera2
instala-o e navega até aos exemplos imx500
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Passo 3: Executa a deteção de objectos em YOLOv8 , utilizando o ficheiro labels.txt que foi gerado durante a exportação do IMX500.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy –labels <path to labels.txt>
Em seguida, poderás ver o resultado da inferência em direto da seguinte forma
YOLOv8 Os benchmarks abaixo foram executados pela equipa Ultralytics na Raspberry Pi AI Camera com imx
formato do modelo que mede a velocidade e a precisão.
Modelo | Formato | Estado | Tamanho (MB) | mAP50-95(B) | Tempo de inferência (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
Nota
A validação da referência acima foi efectuada utilizando o conjunto de dados coco8
O kit de ferramentas de compressão de modelos (MCT) da Sony é uma ferramenta poderosa para otimizar modelos de aprendizagem profunda através da quantização e da 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.
O MCT da Sony oferece uma gama de funcionalidades concebidas para otimizar os modelos de redes neurais:
O MCT suporta vários métodos de quantização para reduzir o tamanho do modelo e melhorar a velocidade de inferência:
O MCT também suporta vários esquemas de quantização para pesos e activações:
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 .
A ferramenta de conversão IMX500 é parte integrante do conjunto de ferramentas IMX500, permitindo a compilação de modelos para implementação no sensor IMX500 da Sony (por exemplo, câmaras Raspberry Pi AI). Esta ferramenta facilita a transição dos modelos Ultralytics YOLOv8 processados através do software Ultralytics , garantindo a sua compatibilidade e desempenho eficiente no hardware especificado. O procedimento de exportação após a quantização do modelo envolve a geração de ficheiros binários que encapsulam dados essenciais e configurações específicas do dispositivo, simplificando o processo de implementação na câmara Raspberry Pi AI.
A exportação para o formato IMX500 tem uma vasta aplicabilidade em todos os sectores. Eis alguns exemplos:
A exportação de modelos Ultralytics YOLOv8 para o formato IMX500 da Sony permite-te implementar os teus modelos para uma inferência eficiente em câmaras baseadas em IMX500. Ao utilizar técnicas de quantização avançadas, podes reduzir o tamanho do modelo e melhorar a velocidade de inferência sem comprometer significativamente a precisão.
Para mais informações e orientações detalhadas, consulta o site IMX500 da Sony.
Para exportar um modelo YOLOv8 para o formato IMX500, utiliza a API Python ou o comando CLI :
from ultralytics import YOLO
model = YOLO("yolov8n.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 usado com a ferramenta de empacotamento IMX500 no Raspberry Pi.
O formato IMX500 oferece várias vantagens importantes para a implantação de ponta:
Para implementar os modelos IMX500, necessitarás de:
Hardware:
Software:
sudo apt install imx500-all imx500-tools
)picamera2
(sudo apt install python3-opencv python3-munkres
)Baseado em Ultralytics benchmarks na câmara Raspberry Pi AI:
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.
Depois de exportares para o formato IMX500:
Utiliza a ferramenta de empacotamento para criar um ficheiro RPK:
Clona e instala o picamera2:
Executa a inferência utilizando o ficheiro RPK gerado: