网站建设在淘宝上以后让还让发布吗,网站建设具体工作总结,网站wordpress,安徽餐饮网站建设若该文为原创文章#xff0c;转载请注明原文出处。
基于Yolov8的训练及部署#xff0c;参考鲁班猫的手册训练自己的数据集部署到RK3568,用的是正点的板子。
1、 使用 conda 创建虚拟环境
conda create -n yolov8 python3.8
conda activate yolov8
2、 安装 pytorch 等…若该文为原创文章转载请注明原文出处。
基于Yolov8的训练及部署参考鲁班猫的手册训练自己的数据集部署到RK3568,用的是正点的板子。
1、 使用 conda 创建虚拟环境
conda create -n yolov8 python3.8
conda activate yolov8
2、 安装 pytorch 等等
根据pytorch自行安装
3、 安装 直接使用命令安装
方法有两种个人使用的是第二种方法
方法一
通过pip安装
pip install ultralytics -i https://mirror.baidu.com/pypi/simple
方法二
通过拉取仓库然后安装
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .
# 安装成功后使用命令 yolo 简单看下版本
(yolov8) llhanhao:/$ yolo version
8.0.206
4、简单测试
下载权重文件
wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
*获取测试图片可以下面位置获取可能会失败也可以从配套例程获取
wget https://ultralytics.com/images/bus.jpg
使用 yolo 命令进行测试
yolo detect predict model./yolov8n.pt source./bus.jpg
# 预测图片结果保存在当前 runs 目录下具体路径是./runs/detect/predict/bus.jpg 参数说明
# 第一个参数是指任务 [detect, segment, classify], 这里测试目标检测是 detect该参数
是可选的
# 第二个参数 model设置模型该参数必须指定
# 其他参数source 指定要预测的图片路径imgsz 指定图像尺寸等等更多参数具体参考下
https://docs.ultralytics.com/usage/cfg/ 5、模型训练
以COCO128为例训练测试
yolo detect train datacoco128.yaml modelyolov8n.pt epochs300 imgsz640
测试
yolo detect predict model./runs/detect/train/weights/best.pt source./bus.jpg
6、模型导出
使用 airockchip/ultralytics_yolov8 可以直接导出适配 rknpu 的模型在 npu 上获得更高的推理效率。
该仓库对模型进行了优化
• dfl 结构在 NPU 处理上性能不佳移至模型外部。
• 假设有 6000 个候选框原模型将 dfl 结构放置于’’框置信度过滤”前则 6000 个候选框
都需要计算经过 dfl 计算而将 dfl 结构放置于’’框置信度过滤”后假设过滤后剩 100 个
候选框则 dfl 部分计算量减少至 100 个大幅减少了计算资源、带宽资源的占用。
假设有 6000 个候选框检测类别是 80 类则阈值检索操作需要重复 6000* 80 ~ 4.8*10^5 次占据
了较多耗时。故导出模型时在模型中额外新增了对 80 类检测目标进行求和操作用于快速过滤
置信度。
(该结构在部分情况下有效与模型的训练结果有关) 可以在./ultralytics/nn/modules/head.py
52 行 ~54 行的位置注释掉这部分优化对应的代码是:
cls_sum torch.clamp(y[-1].sum(1, keepdimTrue), 0, 1)
y.append(cls_sum)
具体参考下 RKOPT_README.md 。
导出torchscript模型
# 拉取 airockchip/ultralytics_yolov8
git clone https://github.com/airockchip/ultralytics_yolov8.git
cd ultralytics_yolov8
# 复制训练的模型 yolov8n.pt 到 ultralytics_yolov8 目录下
# 然后修改./ultralytics/cfg/default.yaml 文件主要是设置下 model为自己训练的模型
路径
model: ./yolov8n.pt # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
data: # (str, optional) path to data file, i.e. coco128.yaml
epochs: 100 # (int) number of epochs to train for
# 导出模型
python ./ultralytics/engine/exporter.py
#导出的模型保存在当前目录下的 yolov8n_rknnopt.torchscript
导出ONNX模型
yolo export modelpath/to/best.pt formatonnx # export custom trained model 7、RKNN模型转换
模型转换是通过tooolkit2转成rknn模型的需要先安装toolkit2具体安装参考正点原子的。
这是使用的是 rknn_model_zoo 仓库 的程序直接转换模型,
# 拉取 rknn_model_zoo注意教程测试时 rknn_model_zoo 的 SHA 是
22462182b91c7d856b59a8ec3e4a25bba8813d17
git clone https://github.com/airockchip/rknn_model_zoo.git
# 然后切换到 models/CV/object_detection/yolo/RKNN_model_convert 目录下
cd rknn_model_zoo/models/CV/object_detection/yolo/RKNN_model_convert
在录前目录下创建yolov8_rk3568.yml文件内容如下
# model_framework: onnx
model_framework: pytorch
model_file_path: /mnt/f/wsl_file/wsl_ai/yolov8/ultralytics_yolov8/yolov8n_rknnopt.torchscript
RK_device_platform: rk3568
# RK_device_id: simulator
dataset: ../../../../../datasets/COCO/coco_subset_10.txt
quantize: True
# pre_compile: online
graph:
in_0:
shape: 1,3,640,640
mean_values: 0
std_values: 255
img_type: RGB
configs:
quantized_dtype: asymmetric_quantized-8
quantized_algorithm: normal
optimization_level: 3
# force_builtin_perm: True
注意三个地方
1、model_framework可以使用onnx也可以是pytorch
2、model_file_path模型路径
3、RK_device_platform 平台
使用命令或者创建脚本执行模型转换等操作
# 使用 rknn_convert.py转换模型
python ../../../../../common/rknn_converter/rknn_convert.py --yml_path ./yolov8_rk3568.yml
转换的模型保存在当前目录 model_cvt/RK3568/下模型文件是 yolov8n_rknnopt_RK3568_i8.rknn。
8、部署
使用 rknn_model_zoo 仓库 提供的 RKNN_C_demo在板端部署
# 拉取 rknn_model_zoo 仓库源码注意教程测试的 rknn_model_zoo 仓库版本是
22462182b91c7d856b59a8ec3e4a25bba8813d17
git clone https://github.com/airockchip/rknn_model_zoo.git
# 切换到~/rknn_model_zoo/libs/rklibs 目录然后拉取相关库包括 rknpu2 和 librga
cd ~/rknn_model_zoo/libs/rklibs
git clone https://github.com/rockchip-linux/rknpu2
git clone https://github.com/airockchip/librga
# 然后切换到~/rknn_model_zoo/models/CV/object_detection/yolo/RKNN_C_demo/RKNN_toolkit_2/rknn_yolo_demo 目录
cd rknn_model_zoo/models/CV/object_detection/yolo/RKNN_C_→demo/RKNN_toolkit_2/rknn_yolo_demo
# 运行 build-linux_RK3568.sh 脚本编译工程使用系统默认的编译器最后生成的文件安装
在 build/目录下
./build-linux_RK3568.sh
执行命令进行模型推理
# 切换到 install/rk3568/Linux/rknn_yolo_demo 目录下复制前面转换出的 yolov8n_→rknnopt_RK3568_i8.rknn 模型文件到目录下
# 然后把文件拷贝到开发板上执行下面命令./rknn_yolo_demo␣yolov8 q8 ./yolov8n_rknnopt_RK3588_i8.rknn ./model/bus640.jpg
#运行后会在目录下生成out.jpg 参考链接
Quickstart - Ultralytics YOLOv8 Docs
GitHub - ultralytics/ultralytics: NEW - YOLOv8 in PyTorch ONNX OpenVINO CoreML TFLite
GitHub - airockchip/ultralytics_yolov8: NEW - YOLOv8 in PyTorch ONNX CoreML TFLite
GitHub - airockchip/rknn_model_zoo 如有侵权或需要完整代码请及时联系博主。