当前位置: 首页 > wzjs >正文

铁路建设标准网站科技与人文

铁路建设标准网站,科技与人文,邮箱格式,seo快速排名软件网址目录 1 开发环境搭建 1.1 下载SDK 1.2 拉取docker镜像 1.3 创建容器 1.4 安装tpu_mlir 1.5 准备工作目录 2 onnx转mlir文件 3 mlir转int8模型 3.1 生成校准表 3.2 编译为int8量化模型 4 混精度 5 准备编译依赖的SDK、库、头文件 5.1 拷贝sophon的库和头文件 5.2 …

目录

1 开发环境搭建

1.1 下载SDK

1.2 拉取docker镜像

1.3 创建容器

1.4 安装tpu_mlir

1.5 准备工作目录

2 onnx转mlir文件

3 mlir转int8模型

3.1 生成校准表

3.2 编译为int8量化模型

4 混精度

5 准备编译依赖的SDK、库、头文件

5.1 拷贝sophon的库和头文件

5.2 拷贝ffmpeg的库和头文件

5.3 拷贝opencv的库和头文件

5.4 修改makefile中库文件和头文件路径

6 解决编译报错以及修改代码

6.1 fatal error: bmnn_utils.h: No such file or directory

6.2 error: ‘string’ is not a member of ‘std’

6.3 error: ‘bmcv_padding_atrr_t’ was not declared in this scope; did you mean ‘bmcv_padding_attr_t’?

6.4 /usr/bin/ld: cannot find -lbmvideo: No such file or directory

7 运行

8 问题排查

9 代码调试

参考文献:


1 开发环境搭建

1.1 下载SDK

技术资料

下载完之后解压

1.2 拉取docker镜像

拉取镜像前有个问题,以前转换bm1684的算法模型的时候,拉取镜像命令也是

docker pull sophgo/tpuc_dev:latest

这次bm1688的拉取镜像命令是一样的,那么latest就重复了,所以我现在把以前的bm1684使用的标签命名为bm1684,然后等会我拉取了bm1688的镜像之后命名为bm1688

上面是把1684的latest命名成了bm1684,接下来下载1688的latest并命名为bm1688

1.3 创建容器

docker run --privileged --name bm1688 -v $PWD:/workspace -it sophgo/tpuc_dev:bm1688

1.4 安装tpu_mlir

加上清华源,要不然下载很慢

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tpu_mlir[all]
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tpu_mlir[onnx,torch]

然后

cd /workspace/sophonsdk_edge_v1.9_official_release/tpu_milr
source envsetup.sh

1.5 准备工作目录

建立 model_yolov5s 目录, 并把模型文件和图片文件都 放入 model_yolov5s 目录中。

mkdir model_yolov5s
cd model_yolov5s
#然后把onnx模型和图片拷贝到当前目录
mkdir workspace  #这个workspace是在model_yolov5s文件夹下面创建的
cd workspace

我这里其实不这样做,我直接把以前bm1684时使用的model_yolov5s拷贝过来,

cp -drf /data/chw/bitedalu_20220713/mlir/Release_v2312-LTS/Release_v2312-LTS/tpu-mlir_20231116_054500/model_yolov5s /data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/tpu_milr/model_yolov5s

然后把以前1684执行时的那些workspace的中间过程文件都给删了

rm -rf  /data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/tpu_milr/model_yolov5s/workspace/*

2 onnx转mlir文件

在/workspace/sophonsdk_edge_v1.9_official_release/tpu_milr/model_yolov5s/workspace文件夹下面执行命令

model_transform.py \--model_name yolov5s \--model_def ../edge_compute_best_20230821.onnx \--input_shapes [[1,3,640,640]] \--mean 0.0,0.0,0.0 \--scale 0.0039216,0.0039216,0.0039216 \--keep_aspect_ratio \--pixel_format rgb \--output_names 339,391,443 \--test_input ../calib/00ca3e9473b4407bb1e72a38a7c6c69f.jpg \--test_result yolov5s_top_outputs.npz \--mlir yolov5s.mlir

 --output_names 320,340,354 这里的三个具体名字通过用netron看onnx模型文件确定, 

3 mlir转int8模型

3.1 生成校准表

	run_calibration.py yolov5s.mlir \--dataset ../calib \--input_num 200 \-o yolov5s_cali_table

这里calib文件夹里面是校准图片,里面是200张图片和200个标注文件。

3.2 编译为int8量化模型

	model_deploy.py \--mlir yolov5s.mlir \--quantize INT8 \--calibration_table yolov5s_cali_table \--chip bm1688 \--test_input yolov5s_in_f32.npz \--test_reference yolov5s_top_outputs.npz \--tolerance 0.85,0.45 \--model yolov5s_pcb_4shuchu_1688_int8_sym.bmodel

4 混精度

混精度参考以前1684的,命令不要照抄,要注意修改,比如1684修改成1688,比如其他的一些名字也注意修改。

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤-CSDN博客

5 准备编译依赖的SDK、库、头文件

7.8. BM1684(X)_to_BM1688(CV186AH)兼容性文档 — SOPHONSDKUserGuide (HEAD detached at 046884f) 文档

在上面链接文档,看到这个介绍

然后我去解压

接下来需要把libsophon下面的头文件和库文件拷到我的工程中

还有media相关的库文件和头文件拷贝我的工程中,

5.1 拷贝sophon的库和头文件

在盒子的/data1/chw/bitmain_all_1688/lib/新建一个sophon,然后在/data1/chw/bitmain_all_1688/lib/sophon路径下执行下面的拷贝命令,
scp -rf root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/libsophon_soc_0.4.11_aarch64/opt/sophon/libsophon-0.4.11/lib/* ./

然后头文件也是,

同样也是新建个sophon文件夹,
scp -r root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/libsophon_soc_0.4.11_aarch64/opt/sophon/libsophon-0.4.11/include/* ./

5.2 拷贝ffmpeg的库和头文件

先把原来1684的ffmpeg的头文件和库文件全都删掉,然后再拷贝。

scp -r root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/sophon-media-soc_1.9.0_aarch64/opt/sophon/sophon-ffmpeg_1.9.0/lib/* /data1/chw/bitmain_all_1688/lib/ffmpeg/
scp -r root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/sophon-media-soc_1.9.0_aarch64/opt/sophon/sophon-ffmpeg_1.9.0/include/* /data1/chw/bitmain_all_1688/include/ffmpeg/

5.3 拷贝opencv的库和头文件

先把原来1684的opencv的头文件和库文件全都删掉,然后再拷贝。

scp -r root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/sophon-media-soc_1.9.0_aarch64/opt/sophon/sophon-opencv_1.9.0/include/* /data1/chw/bitmain_all_1688/include/opencv/
scp -r root@192.168.1.10:/data/chw/bitedalu_20250423/sophonsdk_edge_v1.9_official_release/sophon-img/sophon-media-soc_1.9.0_aarch64/opt/sophon/sophon-opencv_1.9.0/lib/* /data1/chw/bitmain_all_1688/lib/opencv/

5.4 修改makefile中库文件和头文件路径

由于前面我拷贝库文件和头文件的时候,删除了一些文件夹,然后新建了一些文件夹,那么makefile中也需要修改一下相应的文件夹。

6 解决编译报错以及修改代码

直接先make看看错误,慢慢来解决。

6.1 fatal error: bmnn_utils.h: No such file or directory

这个其实是在算能的模型demo的dependencies里面的。

把这几个文件全都拷贝到include/sophon里面,

6.2 error: ‘string’ is not a member of ‘std’

增加头文件 #include <string>

6.3 error: ‘bmcv_padding_atrr_t’ was not declared in this scope; did you mean ‘bmcv_padding_attr_t’?

这是算能SDK更新后,修改了名字,解决方法是,在公共头文件中添加 typedef bmcv_padding_attr_t bmcv_padding_atrr_t;但是其实在include/sophon/bm_wrapper.hpp这个文件中已经有

所以我直接包含bm_wrapper.hpp这个头文件就可以了,

6.4 /usr/bin/ld: cannot find -lbmvideo: No such file or directory

/usr/bin/ld: cannot find -lbmvideo: No such file or directory
/usr/bin/ld: cannot find -lbmjpuapi: No such file or directory
/usr/bin/ld: cannot find -lbmjpulite: No such file or directory

makefile把这几个库去掉,这是bm1684的。

7 运行

经过上面的修改之后,程序就能够运行起来了.但是我发现模型一个目标也没有检测出来,

8 问题排查

用demo跑一下我转的模型看看是否正常,

把\\192.168.1.10\public\data\chw\bitedalu_20250423\sophonsdk_edge_v1.9_official_release\sophon-demo\sophon-demo_v0.2.9_1740285_20250212\sample\YOLOv5整体拷贝到BM1688盒子上,算能的readme里面写的是让交叉编译,我为了省时间,不在X86上安装编译环境了,直接在BM1688盒子上编译,

然后需要修改cpp/yolov5_bmcv/CMakeLists.txt

为什么这里要增加这个,因为本来应该在X86上安装环境,然后这些库和头文件是在类似("${SDK}/lib/")这种目录的,但是我没装,所以直接用我的,

然后

mkdir build
cd build
cmake -DTARGET_ARCH=soc -DSDK=/opt/sophon/ -DCMAKE_BUILD_TYPE=Debug  ..  #这里-DSDK=/opt/sophon/其实没用,因为根本就没安装SDK

然后把我转的模型拷贝过来,再拷贝个测试视频,然后执行下面的命令

./yolov5_bmcv.soc --bmodel=./easnet_pcb_4shuchu_1688_int8_sym.bmodel --input=shigu5.mp4 --classnames=coco.names

然后发现检测效果可以,那么说明我转的模型没有问题,那就是我的代码有问题,可以这个代码在BM1684上都是没问题的,那可能就是BM1688上有些API可能换了,所以我要调试、排查下我的代码。

9 代码调试

参考文献:

技术资料

7.8. BM1684(X)_to_BM1688(CV186AH)兼容性文档 — SOPHONSDKUserGuide (HEAD detached at 046884f) 文档 利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤-CSDN博客


文章转载自:

http://GFc9AkKI.bmzxp.cn
http://GiIADIgO.bmzxp.cn
http://0jJwOXSV.bmzxp.cn
http://KeiFhJD8.bmzxp.cn
http://YqGVM2At.bmzxp.cn
http://PYRWVPur.bmzxp.cn
http://gpBniedS.bmzxp.cn
http://TvrIa31J.bmzxp.cn
http://8kukDQtv.bmzxp.cn
http://ctqjoq5m.bmzxp.cn
http://b5wmCHaC.bmzxp.cn
http://4Fj5TyPR.bmzxp.cn
http://WYDeN1rU.bmzxp.cn
http://IvOj2sKm.bmzxp.cn
http://0uElSPsD.bmzxp.cn
http://gUCxVgko.bmzxp.cn
http://KF1tZ9J2.bmzxp.cn
http://rwWALpGT.bmzxp.cn
http://PgfLpEwh.bmzxp.cn
http://GqAHa92e.bmzxp.cn
http://CjYj9Jcn.bmzxp.cn
http://3ntu9AKQ.bmzxp.cn
http://rrGxi7u7.bmzxp.cn
http://lVE8jrDC.bmzxp.cn
http://48UM1Jp6.bmzxp.cn
http://aKfJt6RA.bmzxp.cn
http://Q5qLgWKc.bmzxp.cn
http://BIiw08d8.bmzxp.cn
http://woV735QD.bmzxp.cn
http://4jZ3MNBR.bmzxp.cn
http://www.dtcms.com/wzjs/705943.html

相关文章:

  • 自己的电脑做网站当服务器使用东莞高端品牌网站建设价格
  • 奥联网站建设怎么自己做免费网站
  • 网站开发要什么软件有哪些网站 流量 不够用
  • 网站建设贵苏州网站开发费用详情
  • 定制手机微网站网站宣传视频
  • 做好三步网站改版工具不降权 无忧老师制作公司网站怎么做
  • 青岛圭谷网站建设公司怎么样网站排名优化外包公司
  • 大型网站服务器架构高端设计网站
  • 网站怎样才有流量各大网站做推广广告
  • 站长之家的作用重庆万州网站建设找谁
  • 管理手机网站首页肥城网站制作
  • 企业门户网站模板分享成都网络营销精英
  • 网站左侧广告代码安庆市重点工程建设局网站
  • 做网站用虚拟主机还是服务器wordpress同学录
  • 丹阳网站建设要多少钱大兴黄村网站建设
  • 成都科盛兴网站建设有限公司description+wordpress
  • 设计素材网站图案免费wordpress上的博客
  • 网站模板文章资讯浙江建设人才网
  • 做网站和编程序网站分享组件
  • 建设一个收入支出持平的网站河北省邢台市建设工程网站
  • 做网站的软件工程师wordpress局域网404
  • storyset自定义插画网站网站建设服
  • 什么网站可以免费做视频写安卓软件用什么工具
  • 台州电子商务网站开发360网站图标怎么做的
  • 域名网站空间网站程序上传教程
  • 无忧网站网站的字体
  • wordpress网站地图提交湖南人事考试网
  • 田园综合体建设网站wordpress加载网页
  • 淮南市潘集区信息建设网站毕业设计除了网站还可以做啥
  • 用asp.net制作一个网站需要多久沈阳网站建设管理