Implantar modelo de detecção de objetos YOLOv8

Este wiki apresentará como treinar o modelo oficial de detecção de alvos YOLOv8 e implantar o modelo treinado no dispositivo Grove Vision AI (V2) ou em dispositivos XIAO ESP32S3.
Preparação do conjunto de dados
Recomenda-se usar a plataforma roboflow para conjuntos de dados. Esta plataforma pode realizar anotação de conjunto de dados e algumas estratégias de aumento de dados, além de suportar a exportação de vários formatos de conjuntos de dados.
Instalar a ferramenta de linha de comando YOLOv8
- Por padrão, você já possui o ambiente
pythone a ferramenta de gerenciamento de pacotespip, e python>=3.8.
- pip
- conda
- Git
Instale o pacote ultralytics, executando pip install -U ultralytics. Visite o Python Package Index (PyPI) para saber mais sobre o pacote ultralytics em https://pypi.org/project/ultralytics/.
# Install using pip
pip install ultralytics
# Chinese users can use mirror acceleration
# pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
Conda é um gerenciador de pacotes alternativo ao pip e também pode ser usado para instalação. Visite o Anaconda para mais detalhes: https://anaconda.org/conda-forge/ultralytics. O repositório feedstock do Ultralytics para atualização de pacotes conda está localizado em https://github.com/conda-forge/ultralytics-feedstock/.
# Install using conda
conda install -c conda-forge ultralytics
Clone ultralytics se você estiver interessado em participar do desenvolvimento ou desejar experimentar o código-fonte mais recente, visite o repositório. Após clonar, navegue até o diretório e instale o pacote em modo desenvolvedor usando o parâmetro -e.
# Clone the official repository
git clone https://github.com/ultralytics/ultralytics
# Go into the cloned folder
cd ultralytics
# Install in developer mode
pip install -e .
Tips: Se você não estiver familiarizado com o código do YOLOv8, recomenda-se que use pip ou conda para instalá-lo.
- Você pode usar o comando de consulta de versão para testar se a ferramenta de linha de comando
yolofoi instalada com sucesso.
# version query
yolo -v
Treinar
-
Primeiro, vá para a pasta do conjunto de dados baixado
-
Execute o seguinte comando para iniciar o treinamento do modelo
yolo train detect model=yolov8n.pt data=./data.yaml imgsz=192
Exportar modelo para tflite
- Após o treinamento, o modelo estará na pasta
runs/train/exp*/weights/. Certifique-se de que os indicadores de avaliação do seu modelo atendam às suas necessidades. - Use o seguinte comando para exportar o modelo
tflite
yolo export model=${your model path} format=tflite imgsz=192 int8
- Em seguida, você verá uma pasta
yolov8n_saved_modelna pasta atual, que contém o arquivo de modeloyolov8n_full_integer_quant.tflite. Este arquivo de modelo pode ser implantado em dispositivosGrove Vision AI(V2)ouXIAO ESP32S3.
Otimização do grafo do modelo
- O Grove Vision AI (V2) suporta modelos otimizados com vela e também pode acelerar a inferência do modelo. Primeiro, execute o seguinte comando para instalar a ferramenta de linha de comando vela (o dispositivo
XIAO ESP32S3ainda não é suportado)
pip3 install ethos-u-vela
- Depois disso, você precisa baixar o arquivo de configuração relacionado ao
vela, ou copiar o seguinte conteúdo para um arquivo, que pode ser nomeado comovela_config.ini
; file: my_vela_cfg.ini ; -----------------------------------------------------------------------------
; Vela configuration file ; -----------------------------------------------------------------------------
; System Configuration
; My_Sys_Cfg
[System_Config.My_Sys_Cfg]
core_clock=400e6
axi0_port=Sram
axi1_port=OffChipFlash
Sram_clock_scale=1.0
Sram_burst_length=32
Sram_read_latency=16
Sram_write_latency=16
Dram_clock_scale=0.75
Dram_burst_length=128
Dram_read_latency=500
Dram_write_latency=250
OnChipFlash_clock_scale=0.25
OffChipFlash_clock_scale=0.015625
OffChipFlash_burst_length=32
OffChipFlash_read_latency=64
OffChipFlash_write_latency=64
; -----------------------------------------------------------------------------
; Memory Mode
; My_Mem_Mode_Parent
[Memory_Mode.My_Mem_Mode_Parent]
const_mem_area=Axi1
arena_mem_area=Axi0
cache_mem_area=Axi0
- Por fim, use o seguinte comando para otimizar o grafo
vela --accelerator-config ethos-u55-64 \
--config vela_config.ini \
--system-config My_Sys_Cfg \
--memory-mode My_Mem_Mode_Parent \
--output-dir ${Save path of the optimized model} \
${The path of the tflite model that needs to be optimized}
Após a execução, um modelo tflite com grafo otimizado será gerado no caminho especificado por --output-dir.
Implantar
-
O arquivo de modelo que precisa ser implantado é o arquivo
tfliteexportado acima. Você pode gravar o arquivo de modelo no dispositivo de destino de acordo com o seguinte tutorial. -
Recomendamos fortemente o uso de nossa ferramenta web para gravar o modelo tflite treinado no dispositivo. Operações detalhadas são fornecidas no Tutorial de Implantação
Note: Como o dispositivo ESP32S3 não suporta implantação de modelo após a otimização de grafo com vela, você não precisa realizar a otimização de grafo do modelo tflite se quiser implantar o modelo no dispositivo XIAO ESP32S3.