Sony IMX500 Exportar para Ultralytics YOLOv8
Este guia abrange a exportação e a implementação de modelos Ultralytics YOLOv8 para as câmaras Raspberry Pi AI que incluem o sensor Sony IMX500.
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.
O formato do modelo IMX500 foi concebido para consumir o mínimo de energia e, ao mesmo tempo, proporcionar um desempenho rápido para redes neuronais. Permite-lhe otimizar os seus Ultralytics YOLOv8 modelos para inferências de alta velocidade e baixo consumo de energia. Neste guia, vamos orientá-lo na exportação e implantação de seus modelos para o formato IMX500, facilitando o bom desempenho de seus modelos na Raspberry Pi AI Camera.
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.
Exportação da IMX500 da Sony para modelos YOLOv8
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.
Antes de começar: Para obter melhores resultados, certifique-se de que o seu 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.
Exemplos de utilização
Exportar um modelo Ultralytics YOLOv8 para o formato IMX500 e executar 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, consulte 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
Argumentos
Ao exportar um modelo para o formato IMX500, pode especificar vários argumentos:
Chave | Valor | Descrição |
---|---|---|
format |
imx |
Formato para o qual exportar (imx) |
int8 |
True |
Ativar a quantização INT8 para o modelo (predefinição: True ) |
imgsz |
640 |
Tamanho da imagem para a entrada do modelo (predefinição: 640 ) |
Utilização da exportação IMX500 na implementação
Depois de exportar o modelo Ultralytics YOLOv8n para o formato IMX500, este pode ser implementado na câmara Raspberry Pi AI para inferência.
Pré-requisitos de hardware
Certifique-se de que possui o hardware abaixo indicado:
- Raspberry Pi 5 ou Raspberry Pi 4 Modelo B
- 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.
Passo 2: Instalar o firmware IMX500, necessário para o funcionamento do sensor IMX500, juntamente com uma ferramenta de empacotamento.
Passo 3: Instalar os pré-requisitos para executar picamera2
aplicação. Utilizaremos esta aplicação mais tarde para o processo de implementação.
Passo 4: Reinicie o Raspberry Pi para que as alterações entrem em vigor
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
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 -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Passo 3: Execute a deteção de objectos do 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>
Poderá então ver o resultado da inferência em direto da seguinte forma
Referências
YOLOv8 Os parâmetros de referência abaixo foram executados pela equipa Ultralytics na câmara Raspberry Pi AI com imx
velocidade e precisão de medição do formato do modelo.
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 do parâmetro de referência acima foi efectuada utilizando o conjunto de dados coco8
O que é que está debaixo do capot?
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:
- Optimizações de gráficos: Transforma modelos em versões mais eficientes, dobrando camadas como a normalização de lotes em camadas anteriores.
- 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.
- 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.
- 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:
- Quantização pós-formação (PTQ):
- Disponível através das APIs Keras e PyTorch .
- Complexidade: Baixa
- Custo computacional: Baixo (CPU minutos)
- 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)
- 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:
- Potência de dois (compatível com o hardware)
- Simétrico
- 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)
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.
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.
- Cidades inteligentes: Utilize os modelos YOLOv8 exportados pelo IMX500 para monitorização do tráfego e análise de segurança com processamento mais rápido e latência mínima.
- 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
A exportação de modelos Ultralytics YOLOv8 para o formato IMX500 da Sony permite-lhe implementar os seus modelos para uma inferência eficiente em câmaras baseadas em IMX500. Ao tirar partido de técnicas de quantização avançadas, pode reduzir o tamanho do modelo e melhorar a velocidade de inferência sem comprometer significativamente a precisão.
Para mais informações e diretrizes detalhadas, consulte o website IMX500 da Sony.
FAQ
Como é que exporto um modelo YOLOv8 para o formato IMX500 para a câmara Raspberry Pi AI?
Para exportar um modelo YOLOv8 para o formato IMX500, utilize 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 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
)
Que desempenho posso esperar dos modelos YOLOv8 no IMX500?
Com base em Ultralytics benchmarks da câmara Raspberry Pi AI:
- YOLOv8n atinge um tempo de inferência de 66,66 ms por imagem
- 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:
-
Utilize a ferramenta de empacotamento para criar um ficheiro RPK:
-
Clonar e instalar o picamera2:
-
Executar a inferência utilizando o ficheiro RPK gerado: