跳到主要内容

model-training-and-deployment

stm32n6上训练和部署yolov8n

1、安装yolo运行环境,参考ultralytics官方安装说明,以下通过docker安装:

sudo docker pull ultralytics/ultralytics:latest-export

2、进入docker 容器(使用GPU)

sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v ./your/host/path:/ultralytics/output ultralytics/ultralytics:latest-export /bin/bash

3、验证环境

yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' device=0
Downloading https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt to 'yolov8n.pt': 100% ━━━━━━━━━━━━ 6.2MB 1.6MB/s 4.0s
Ultralytics 8.3.213 🚀 Python-3.11.13 torch-2.8.0+cu128 CUDA:0 (NVIDIA A800 80GB PCIe, 81051MiB)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs

Downloading https://ultralytics.com/images/bus.jpg to 'bus.jpg': 100% ━━━━━━━━━━━━ 134.2KB 1.2MB/s 0.1s
image 1/1 /ultralytics/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 64.5ms
Speed: 4.9ms preprocess, 64.5ms inference, 117.6ms postprocess per image at shape (1, 3, 640, 480)
Results saved to /ultralytics/runs/detect/predict
💡 Learn more at https://docs.ultralytics.com/modes/predict

4、训练&导出模型

a、训练(可选)

# 基于coco预训练模型
yolo detect train data=data.yaml model=yolov8n.pt epochs=100 imgsz=256 device=0
# 或原始模型
yolo detect train data=data.yaml model=yolov8n.yaml epochs=100 imgsz=256 device=0

b、导出tflite格式

yolo export  model=yolov8n.pt format=tflite imgsz=256 int8=True data=data.yaml fraction=0.2
TensorFlow SavedModel: export success ✅ 35.3s, saved as 'yolov8n_saved_model' (40.1 MB)

TensorFlow Lite: starting export with tensorflow 2.19.0...
TensorFlow Lite: export success ✅ 0.0s, saved as 'yolov8n_saved_model/yolov8n_int8.tflite' (3.2 MB)

Export complete (35.4s)
Results saved to /ultralytics
Predict: yolo predict task=detect model=yolov8n_saved_model/yolov8n_int8.tflite imgsz=256 int8
Validate: yolo val task=detect model=yolov8n_saved_model/yolov8n_int8.tflite imgsz=256 data=coco.yaml int8
Visualize: https://netron.app
💡 Learn more at https://docs.ultralytics.com/modes/export

5、量化模型

a、下载量化脚本及配置文件tflite_quant.pyuser_config_quant.yaml

b、下载量化校验数据集coco8

c、修改配置文件user_config_quant.yaml:

model:
name: yolov8n_256
uc: od_coco
model_path: ./yolov8n_saved_model
input_shape: [256, 256, 3]
quantization:
fake: False
quantization_type: per_channel
quantization_input_type: uint8 # float
quantization_output_type: int8 # float
calib_dataset_path: ./coco8/images/val # 校准数据集,重要!可用部分训练集
export_path: ./quantized_models
pre_processing:
rescaling: {scale : 255, offset : 0}

d、开始量化

#安装依赖
pip install hydra-core munch
#量化
python tflite_quant.py --config-name user_config_quant.yaml
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
W0000 00:00:1760435045.538259 834 tf_tfl_flatbuffer_helpers.cc:365] Ignored output_format.
W0000 00:00:1760435045.538286 834 tf_tfl_flatbuffer_helpers.cc:368] Ignored drop_control_dependency.
I0000 00:00:1760435045.567572 834 mlir_graph_optimization_pass.cc:425] MLIR V1 optimization pass is not enabled
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:05<00:00, 5.46it/s]
fully_quantize: 0, inference_type: 6, input_inference_type: UINT8, output_inference_type: INT8
Quantized model generated: yolov8n_256_quant_pc_ui_od_coco.tflite

e、评估模型(可选)

yolo val model=./quantized_models/yolov8n_256_quant_pt_ui_od_coco.tflite data=coco.yaml imgsz=256

6、部署模型

a、git clone aicam

git clone https://github/camthink/aicam

b、生成模型固件包(先安装stedgeai.exe

cd aicam/Model
cp /your/path/quantized_models/yolov8n_256_quant_pt_ui_od_coco.tflite weights/

# 生成reloc model
./generate-reloc-model.sh -m weights/yolov8n_256_quant_pc_ui_od_coco.tflite -f yolov8_od@neural_art_reloc.json -o network_rel_yolov8_od.bin

# 制作package
python model_packager.py create --model network_rel_yolov8_od.bin --config weights/yolov8n_256_quant_pc_ui_od_coco.json --output ../bin/model_yolov8_od_coco.bin

c、部署(二选一)

a、stlink烧录

../Script/maker.sh flash ../bin/model_yolov8_od_coco.bin 0x70900000

b、web 升级 OTA

stm32n6上训练和部署yolov8n