如何将训练好的yolov11模型离线部署到MaixCam上
把yolov11离线部署到maixcam上
3112126
目录
3.8磁盘大小选50GB20GB可能不够用,拆分多个磁盘就是你用多少他就生成多少不会浪费编辑
3.10.2选择印象文件就选之前下的ubuntu的光盘文件(正常就一个DVD,先别管为什么我有俩等会装vmware tool就知道了)
4.安装Ubuntu(如果说长时间没自动弹出安装界面可以点击下面图标来安装)
4.3选择网络方式(我这是宽带所以自动给我选了第一项如果无线网应该会自动选第二项)
4.9之后就按默认的来让他自动下载然后立即重启(大概要个十分钟左右)
6.1.1打开刚刚在data目录下的那块终端(这里的文件都是之前共享文件夹的文件来的)
7.1.1用一个usb-typec的线连接maixcam和你的电脑
1.下载安装VMware虚拟机(17.6版本)
链接:https://pan.quark.cn/s/ec46cb2dc6d5
提取码:msV9
这里是安装包。之后的操作只有四点需要注意:
1.管理员权限运行;
2.安装的位置可以更改;
3.许可证可加可不加(因为vm对个人用户是免费的,许可证是给企业用的;
4.用户体验设置可以两个都不勾选。
其他就按默认配置即可
2.下载Unbuntu(24.04.03)
清华镜像下载链接:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/24.04.2/
选择iso的那一行就会自动下载速度还是挺快的,下载完会有个光盘文件不用管他不要点击他
3.创建并配置虚拟机环境
按照一下图示进行
3.1自定义

3.2默认
3.3稍后安装
3.4选择linux和ubuntu64位

3.5命名虚拟机名称和储存位置(建议不放c盘)

3.6选内存建议4GB
3.7之后三步按默认的选一直下一步即可
3.8磁盘大小选50GB20GB可能不够用,拆分多个磁盘就是你用多少他就生成多少不会浪费
3.9之后也继续默认即可
3.10配置DVD等
3.10.1点击编辑环境配置

3.10.2选择印象文件就选之前下的ubuntu的光盘文件(正常就一个DVD,先别管为什么我有俩等会装vmware tool就知道了)

3.10.4取消勾选加速3D图形

3.10.5添加共享文件夹
1.在自己电脑上新建一个文件夹用来链接虚拟机和主机
2.在文件夹中存入以下文件之后要用
3.各文件说明
images:随机挑选的200张从训练集来的照片要求各角度各种类型的照片(名字和数量尽量统一如果不一样后面进行onnx->cvimodel脚本时要改)
best.onnx:从你训练完的权重模型的best.pt文件导出成onnx
rotate538.jpg:随机一张图
tpu_mlir-1.17-py3-none-any.whl链接:https://pypi.tuna.tsinghua.edu.cn/packages/ed/b0/99fbab2a125f88f756bbf8ea0786f97c05bb2891ad4a01fd670dce28f905/tpu_mlir-1.17-py3-none-any.whl#sha256=0cc9592d90e3921f32d08a73822e863b536a72987d9d33ae217a73fdc195e637
sophgo-tpuc_dev-v3.2_191a433358ad.tar.gz链接:https://sophon-file.sophon.cn/sophon-prod-s3/drive/24/06/14/12/sophgo-tpuc_dev-v3.2_191a433358ad.tar.gz
3.10.6选择UEFI
3.10.7安装VMware Tool(可以放到装完Ubuntu之后在进行即完成第四大步)
下载链接:https://packages-prod.broadcom.com/tools/frozen/linux/linux.iso
1.添加一个新的DVD文件
2.选择刚才下的linux文件步骤与之前装ubuntu一样(记得点确定)
3.重启(之后就能复制主机的代码直接到虚拟机上了)

4.安装Ubuntu(如果说长时间没自动弹出安装界面可以点击下面图标来安装)

4.1下拉选语言

4.2后面两步不用管直接next
4.3选择网络方式(我这是宽带所以自动给我选了第一项如果无线网应该会自动选第二项)

4.4选择交互式安装

4.5选择扩展集合

4.6这个优化可装可不装(我这全装)

4.7选擦除

4.8个人信息随便填(密码,用户名之后要用所以记一下)

4.9之后就按默认的来让他自动下载然后立即重启(大概要个十分钟左右)

tip:如果重启时长时间打转直接按回车
5.下载并安装docker
5.1打开终端(快捷键Ctrl+Alt+T)

5.2一些常用的命令解释
cd:跳转到某个文件夹。
cp:把某文件复制到某文件中
ls:列出此文件夹中的文件名称
5.3环境准备
5.3.1更新源
指令:
sudo apt-get update
运行效果:
注意:输密码时是隐藏了的你只是看不见但是已经输入了输完回车就行
5.3.2升级现有系统
指令:
sudo apt-get upgrade
运行结果:
注意:有选择[Y/n]时选y(后面也是一样)
5.3.3 添加依赖项
指令:
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
运行效果:
5.3.4 添加密钥
指令:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
运行结果:
注意:如果出现找不到指令等问题注意输入时的空格(这个可以丢给deepseek一下就能查出来)
5.3.5添加docker源
指令:
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
运行结果:
注意:遇到这种直接按回车键(后面也同理)
5.3.6安装docker
指令:
sudo apt-get install docker-ce docker-ce-cli containerd.io
运行结果:

5.4docker加载
指令:
sudo docker load -i/mnt/hgfs/shared/sophgo-tpuc_dev-v3.2_191a433358ad.tar.gz
运行结果:

5.5创建一个docker容器
指令:
sudo docker run --privileged --name tpu-env -v /home/$USER/data:/home/$USER/data -it sophgo/tpuc_dev:v3.2
运行结果:
注意:之后在想打开就输入以下指令
sudo docker start tpu-env && sudo docker attach tpu-env
5.6安装tpu-mlir
1.再开启一个新的终端按照图示来进行(出了权限不够那一行不用管我打错了其他照抄就是)
cp指令:
sudo cp /mnt/hgfs/shared/tpu_mlir-1.17-py3-none-any.whl ./

2.切回原来的那块终端在特定位置进行pip指令(如图最上面也是打错了不用管从我序号标的开始)
注意这里除了的cm就是用户名cm这里输入什么取决你的用户名是什么别的是一样的

指令:
pip install tpu_mlir-1.17-py3-none-any.whl
运行结果:

这样就算成功了
6.开始转换模型从onnx->cvimodel->mud
6.1转cvimodel
6.1.1打开刚刚在data目录下的那块终端(这里的文件都是之前共享文件夹的文件来的)

(这里的步骤都在把主机的文件转移到虚拟机里)

注意:画横线是有效代码,如果出现权限不够问题就在代码最前面加一个sudo
指令:
复制onnx文件
sudo cp /mnt/hgfs/shared/best.onnx ./
复制那一个验证照片
sudo cp /mnt/hgfs/shared/rotate538.jpg ./
创建images文件夹
sudo mkdir images
复制主机的images文件的所有照片到虚拟机中images文件夹中
sudo cp /mnt/hgfs/shared/images/* ./images
做完可以cd到images文件夹中看看照片是否都在如:
6.1.2先下载gedit
指令:
sudo apt-get install gedit
运行结果:

这一步有问题啊注意上面这一副图要先执行cd ..指令在继续下面的步骤不然会找不到convert_cvimodel文件
6.1.3开始使用脚本进行转换
1.打开文本框
sudo gedit convert_cvimodel.sh
2.输入脚本
#!/bin/bash
set -e
net_name=best
input_w=640
input_h=640
# mean: 0, 0, 0
# std: 255, 255, 255
# mean
# 1/std
# mean: 0, 0, 0
# scale: 0.00392156862745098, 0.00392156862745098, 0.00392156862745098
mkdir -p workspace
cd workspace
# convert to mlir
model_transform.py \
--model_name ${net_name} \
--model_def ../${net_name}.onnx \
--input_shapes [[1,3,${input_h},${input_w}]] \
--mean "0,0,0" \
--scale "0.00392156862745098,0.00392156862745098,0.00392156862745098" \
--keep_aspect_ratio \
--pixel_format rgb \
--channel_format nchw \
--output_names "/model.23/dfl/conv/Conv_output_0,/model.23/Sigmoid_output_0" \
--test_input ../rotate538.jpg \
--test_result ${net_name}_top_outputs.npz \
--tolerance 0.99,0.99 \
--mlir ${net_name}.mlir
# export bf16 model
# not use --quant_input, use float32 for easy coding
model_deploy.py \
--mlir ${net_name}.mlir \
--quantize BF16 \
--processor cv181x \
--test_input ${net_name}_in_f32.npz \
--test_reference ${net_name}_top_outputs.npz \
--model ${net_name}_bf16.cvimodel
echo "calibrate for int8 model"
# export int8 model
run_calibration.py ${net_name}.mlir \
--dataset ../images \
--input_num 200 \
-o ${net_name}_cali_table
echo "convert to int8 model"
# export int8 model
# add --quant_input, use int8 for faster processing in maix.nn.NN.forward_image
model_deploy.py \
--mlir ${net_name}.mlir \
--quantize INT8 \
--quant_input \
--calibration_table ${net_name}_cali_table \
--processor cv181x \
--test_input ${net_name}_in_f32.npz \
--test_reference ${net_name}_top_outputs.npz \
--tolerance 0.9,0.6 \
--model ${net_name}_int8.cvimodel



这里output_name代码为:
/model.23/dfl/conv/Conv_output_0/model.23/Sigmoid_output_0

这个名字改成你的模型名字和你放一张验证照片的名字和images(你放一堆照片的地方如果跟我一样那也不用改)还有output_name之外别的不用改,最后点保存,要改看需求。
tip:这里包括下面的脚本都在官方文档里找的链接:为 MaixCAM MaixPy 离线训练 YOLO11/YOLOv8 模型,自定义检测物体、关键点检测 - MaixPy


特别是上面onnx部署到maixcam那个图中往下拉你会知道这个脚本参数的意义利于修改。
6.2执行转换和编写mud文件脚本
6.2.1
指令:
chmod a+x convert_cvimodel.sh
./convert_cvimodel.sh
运行结果:(没有任何error)
6.2.2
指令:
cd workspace/
ls
运行结果:
6.2.3先切另一块终端把cvimodel文件转到主机的shared文件
指令:
cd workspace/
cp best_int8.cvimodel /mnt/hgfs/shared/
返回data文件下
cd ..
这一个代码best_int8.cvimodel就是量化过的模型了best是我之前best.onnx文件来的
这时我们再看主机上的shared文件夹中已经出现了cvimodel文件

6.2.3正式开始编写mud脚本
指令:
sudo gedit best_int8.mud
脚本:(依旧从官方文档中来)
[basic]
type = cvimodel
model = best_int8.cvimodel
[extra]
model_type = yolo11
input_type = rgb
mean = 0, 0, 0
scale = 0.00392156862745098, 0.00392156862745098, 0.00392156862745098
labels = brightness,cesun,flip,hsv,rotate
要改的地方(红线标出):

6.2.4把mud文件复制到shared目录下
代码:
cp best_int8.mud /mnt/hgfs/shared/
运行结果:(shared文件夹下多了个mud文件)
7.使用Maixvision进行部署
Maixvision下载链接:https://cdn.sipeed.com/maixvision/1.2.2/MaixVision-1.2.2-setup.exe
7.1先配置一下Maixcam(你的摄像头)
7.1.1用一个usb-typec的线连接maixcam和你的电脑
7.1.2按以下顺序点击:设置->安装运行库->更新
7.2配置电脑和摄像头的局域网
摄像头:点击设置->WiFi(连上你的热点或者你家的WiFi)
电脑:连上与摄像头一样的WiFi
7.3上传mud文件并开始运行检测任务
7.3.1打开Maixvision点击如下图的步骤
查找设备

下面圈起来的是我的设备(可以看摄像头的设置->设备信息来确定哪个是你的设备)

之后点击你的设备(此时摄像头会黑屏正常现象)
这时你要把你转换的mud和cvimodel文件上传进来(右上角第二个小框)

打开点击model文件夹

此时点击上传文件

选择shared文件夹里的mud和cvimodel文件
关闭文件管理然后点击左侧的example

在点击vision->aivision->yolov11.....detect文件再把mud文件改成自己的mud文件
8.点击小三角运行

9.效果(有检测框有标签)

10.结语
在后面的转换环节中参考了此博主的作品https://www.bilibili.com/video/BV1h1oLY2EoEvd_source=e73965346445c4e0ff29b64290572439
为什么我要出的原因是因为我有一个垃圾分类的项目需要我用摄像头去识别不同种类的垃圾。虽然有教程但vmware,ubuntu,docker,maixcam的教程都是分散的而且看来看去能用的教程很少咸鱼上查了一下,完整配一次要38。
然后这个博主的视频的很多代码并没有发出来当时我是一步一步手打的贼累,而且有些步骤没说我还要去找别的文章和视频去看,比如共享文件夹没说,ubuntu配置没说,vmware tool没说然后我也找过这个博主但是加了wx才知道需要付费才能帮我解答我的一些问题98元加群但是人家还是对我有帮助并且也一定程度上提供了免费的知识的应该还是要感激的。
我是真的想白嫖于是花了一整天加几个散天找资源再加一天出教程终于帮兄弟们打包好了。
所以真的来之不易,希望大家白嫖但是可以关注加收藏让我之后在做项目的同时还会有接着分享经验的动力,感谢。
更多推荐




所有评论(0)