⚖️ 模型量化在“模型训练”章节,讲解了如何训练一个yolov8模型,但是为了部署在Grove Vision V2上,我们还需要进一步对模型进行量化。本节内容如下:
模型INT8量化
首先,我们要得到pt模型文件,在“模型训练”中,我讲解了可以通过本地训练和云端训练两种方式得到经过训练后的pt模型文件。
利用anaconda新建一个环境(例如可以命令为petoi_convert_local),在新环境中依次执行:
Copy pip install ultralytics
pip install tensorflow
(!注意:我们在模型训练章节的本地训练部分使用anaconda新建了petoi_train_local环境,而本节使用的petoi_convert_local环境和petoi_train_local环境是两个不同的环境,不可使用petoi_train_local进行以下操作。)
下面,我们需要对模型进行量化,执行:
Copy yolo export model=${your model path} format=tflite imgsz=192 int8
你将会在当前文件夹下看到一个 yolov8n_saved_model
文件夹,其中包含 yolov8n_full_integer_quant.tflite
模型文件。
图优化
下面进行图优化。如果您是windows电脑,您需要安装 Microsoft C++ Build Tools。如果您是Mac用户或者Linux用户,则不需要安装。
执行
Copy pip3 install ethos-u-vela
创建vela_config.ini,将以下内容复制到vela_config.ini
Copy ; 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
在终端执行
Copy 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}
将${Save path of the optimized model}替换为你想要的输出目录
将${The path of the tflite model that needs to be optimized} 替换为你刚才得到的经过量化后的模型文件
然后你就会得到以“_vela”结尾的模型,这个模型是可以用于部署在Grove Vision V2上的模型文件。