-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
询问一个关于模型量化问题 #1
Comments
原因应该是驱动加载时未设置 on chip ram 的地址和大小。使用 modprobe 加载 vha 时可以追加命令参数: |
首先,十分感谢大佬的回复,就是这个解决方法在大佬你的那个语雀有看到,尝试过,那个报错但是那个框输出是正常的,然后那个推理过程好像很卡,不知道是不是npu驱动的问题。 |
错误信息看起来还是驱动中报出来的。我这边的环境没复现现象。 你现在执行的时候,有修改 inference.py 和 yolov5n.c 中的源码嘛?将其中的输入预处理换成对应于 640 x 640的 |
1、单纯修改inference.py文件的输入尺寸为640*640,不修改yolov5n.c 会包那个错误,但是框的标注是准确的 使用解决方法后是这样 然后我看到那个npu推理的卡住的地方主要是"./yolov5n_example ./hhb_out/hhb.bm image_preprocessed.bin" |
|
大佬有哪个参考资料我可以学着去修改吗,因为yolov5模型我一般都是用到640640,我看github官网那个也是输入尺寸为640640 |
github 官网的 export.py 导出的时候可以设置输入大小。比如 |
十分感谢大佬的回复,学到了。 ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# ./yolov5n_example ./shl.hhb.bm image_preprocessed.bin |
|
十分感谢大佬,辛苦大佬了,那个我可以补充问两个个问题吗, |
问题1:
问题2:
|
大佬我想问一个问题hhb -f的这个-f这个参数是,我在mobilenetv2示例看到的,然后那我用yolov5可以直接使用大佬的预编译opencv吗 |
|
大佬,我说一下我细读了代码,mobilenetv2里面图像预处理c代码是crop进行剪裁,而yolov5那个是创建蒙版,就是按照那个比例缩小后,图像缺少的部分是用灰色去填补,就是保证了图像完整性,所以说通过图像剪裁方式和那种蒙版方式都可以,蒙版保存图像的完整会更好是吗 |
这个问题我不清楚。。。 |
是的,我目前复现了一下大佬的代码,相当于把python那部分预处理用c++写了,我把每个阶段的图片进行对比以及hwc格式转chw格式,然后变成一维数组,终于对比之后bin文件大小和python预处理的代码一模一样,我看tensor不一样,可能是小数位数不同,然后我把bin文件发送到开发板刚刚实验了,可以正确识别并框选 |
嗯。只要能编译,能执行,应该就可行。中间遇到问题解决问题即可。 |
大佬,编译过了,然后测试速度快了不少,我觉得还有提高的空间,目前就是我用usb摄像头,帧率还行,一秒有2-3帧,比之前摄像头是2-3秒才1帧,然后我这个做的工作有价值吗,如果有价值我可以给大佬仓库提交我目前的实现功能吗 counter += 1 # 计算帧数 |
提交肯定欢迎呀 |
大佬,就是目前我想把那个图像预处理部分以及对detect的标注到图片上直接整合进yolov5n.c,我有一个问题,就是在阅读源码时候,我是不是可以不用写bin过度,直接传参进去,是不是就会少一个文件的写入而提高速度 |
你好大佬,就是我在我代码上加入了cap,然后编译报错,我加入了百度上说的一些要求, |
我明白了,是不是那个prebuilt那个是不是没加入4l2 |
|
十分感谢大佬的回复,好的,我去尝试一下,我今天自己编译opencv源码怪怪的 cmake ../ -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/OutLib -D BUILD_SHARED_LIBS=0 make 应该不用make install |
|
这个错误提示的原因是 NPU 用户态驱动和内核态驱动不匹配。需要等开发板镜像更新后,更新到最新版本来解决。 |
收到,就是大佬我可以问一下吗 set(CMAKE_C_COMPILER riscv64-unknown-linux-gnu-gcc) Don't run the linker on compiler checkset(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_C_FLAGS "-static -march=rv64imafdcxtheadc -mabi=lp64d -mtune=c920 -O3 -Wl,-whole-archive -lpthread -Wl,-no-whole-archive") set(CMAKE_FIND_ROOT_PATH /root/opencv_hat/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.0-rc3) 输出信息 |
不好意思,opencv 的东西我也不太清楚,给不了建设性意见。。。你可以在 opencv 的社区问问情况。 |
大佬就是我交叉编译还是没有gtk2.0,然后我现在是尝试在riscv docker容器中拉取官方的编译工具链,在编译,如果编译得到的库文件,可以用于开发板那个文件的编译吗,因为编译工具链版本不同,我现在编译的工具链是官方工具链,就是用大佬的那个交叉编译命令可以编译不带gtk2.0的,但是如果opencv c++调用摄像头和imshow操作就编译不过了 |
不同工具链编译出来的动态库 so 是可以混用的。静态库 .a 最好不要混用 |
大佬,请求help,就是我交叉编译opencv源码,我先交叉编译了opencv的依赖库,我就是想把所有代码都用c++写,所以就是想要调用videocapture和imshow,但是哪个prebuilt_opencv应该没有加入那个,然后我尝试了一个星期,查找资料,然后把依赖库都编译好了,然后但是编译还是报错,下面是报错信息(大佬可以编译一个带可以使用摄像头和imshow的吗,求求大佬了): "\n" |
我也不懂 opencv 的东西。。。推荐你去 opencv 社区问问 |
好的,大佬,我在试试,那个大佬,hhb4tools/hhb2.6比hb2.4有什么提升,npu优化计算速度越来越快吗 |
额。其实 2.6 没修改 NPU 性能相关的东西。。。2.6 主要是做了新型号 CPU 的适配,以及让 onnxruntime 支持了 npu 执行。 |
驱动的问题在1023的镜像中已经解决,新镜像已经上传到百度网盘中,若手上有容量大于 8G emmc 的开发板,可以直接烧录 FULL 压缩包的镜像,默认已配置好AI环境,可直接测试HHB编译出来的可执行文件。 |
是的,我那天测试用的是1023镜像,速度提升不少,后续我把代码提交到仓库,我现在是图像预处理和图像标签显示都用c++,本来想所以都用c++写,那个编译opencv C++版本加入ffmpeg和gtk2.0还在摸索
…---- 回复的原邮件 ----
| 发件人 | ***@***.***> |
| 日期 | 2023年10月30日 15:24 |
| 收件人 | ***@***.***> |
| 抄送至 | ***@***.***>***@***.***> |
| 主题 | Re: [zhangwm-pt/hhb-examples] 询问一个关于模型量化问题 (Issue #1) |
十分感谢大佬的回复,学到了。 1、第一个疑问:那个修改输入尺寸,我训练640*640转384 640对训练的模型效果影响大吗,下面是我百度到的,我刚刚量化以及转换都效果还行,用的官方模型,还没实验自己的 在YOLOv5中使用export.py修改模型输入尺寸可能会对模型的性能和准确性产生影响。模型的输入尺寸通常在训练过程中确定,并且模型对于特定尺寸的输入图像进行了优化。 2、第二个疑问: 当前环境: 20230920 debian镜像 licheepi 4a yolov5n模型按照大佬转换为onnx时候改了尺寸,其他命令都没修改 还是会报之前的下面错误,但是标定框运行正常,这个是不是硬件的问题,还是说我的licheepi 4a有问题, FATAL: Importing 737280 bytes of CPU memory has failed (Invalid argument)
ort) ***@***.***:/home/sipeed/Desktop/udisk/yolov5n# ./yolov5n_example ./shl.hhb.bm image_preprocessed.bin INFO: NNA clock:792000 [kHz] INFO: Heap :ocm (0x18) INFO: Heap :anonymous (0x2) INFO: Heap :dmabuf (0x2) INFO: Heap :unified (0x5) FATAL: Importing 737280 bytes of CPU memory has failed (Invalid argument) Run graph execution time: 13.20488ms, FPS=75.73 detect num: 4 id: label score x1 y1 x2 y2 [0]: 0 0.895277 273.492188 161.245056 359.559814 330.644257 [1]: 0 0.887368 79.860062 179.181244 190.755692 354.304474 [2]: 0 0.815214 222.054565 224.477600 279.828979 333.717285 [3]: 33 0.563324 67.625580 173.948883 201.687988 219.065765 (ort) ***@***.***:/home/sipeed/Desktop/udisk/yolov5n# python3 inference.py ********** preprocess image ********** ******* run yolov5 and postprocess ******* INFO: NNA clock:792000 [kHz] INFO: Heap :ocm (0x18) INFO: Heap :anonymous (0x2) INFO: Heap :dmabuf (0x2) INFO: Heap :unified (0x5) FATAL: Importing 737280 bytes of CPU memory has failed (Invalid argument) Run graph execution time: 11.86316ms, FPS=84.29 detect num: 4 id: label score x1 y1 x2 y2 [0]: 0 0.895277 273.492188 161.245056 359.559814 330.644257 [1]: 0 0.887368 79.860062 179.181244 190.755692 354.304474 [2]: 0 0.815214 222.054565 224.477600 279.828979 333.717285 [3]: 33 0.563324 67.625580 173.948883 201.687988 219.065765 ********** draw bbox ********** [273.492188, 161.245056, 359.559814, 330.644257, 0.895277, 0] [79.860062, 179.181244, 190.755692, 354.304474, 0.887368, 0] [222.054565, 224.4776, 279.828979, 333.717285, 0.815214, 0] [67.62558, 173.948883, 201.687988, 219.065765, 0.563324, 33] (ort) ***@***.***:/home/sipeed/Desktop/udisk/yolov5n#
驱动的问题在1023的镜像中已经解决,新镜像已经上传到百度网盘中,若手上有容量大于 8G emmc 的开发板,可以直接烧录 FULL 压缩包的镜像,默认已配置好AI环境,可直接测试HHB编译出来的可执行文件。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
我的设备环境:
licheepi 4a debian20230920最新镜像
HHB环境:docker的 hhb4tools/hhb:2.4.5
这是那个sipeed文档里面的量化命令:
hhb -D --model-file yolov5n.onnx --data-scale-div 255 --board th1520 --input-name "images" --output-name "/model.24/m.0/Conv_output_0;/model.24/m.1/Conv_output_0;/model.24/m.2/Conv_output_0" --input-shape "1 3 384 640" --calibrate-dataset kite.jpg --quantization-scheme "int8_asym"
我先按照文档测试的yolov5n模型,然后执行命令失败,我通过netron查看模型输入尺寸我就把--input-shape "1 3 384 640" 修改为--input-shape "1 3 640640" ,然后量化成功了,然后我将整个文件夹拷贝到开发板,确认npu驱动是挂载成功的。
下面这些是报错信息,但是可以通过,我看是cpu内存报错,是我硬件问题还是我量化的问题,我有点摸不着头脑,量化时候,命令是没有任何报错信息的,然后这个运行可以通过,但是会cpu报错,然后帧率也比文档说明的帧率会低一些,因为我使用cpu去进行模型推理,帧率不太高,甚至比较卡,所以想这npu推理会快一些。
我的问题是:是我硬件问题还是我量化的问题,我有点摸不着头脑,大佬可以提供一个思路吗
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# ls
coco.names hhb_out image_preprocessed.tensor kite.jpg shl.hhb.bm yolov5n.c yolov5n_example
detect.txt image_preprocessed.bin inference.py kite_result.jpg soccer.jpg yolov5n.onnx
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# python3 inference.py
********** preprocess image **********
******* run yolov5 and postprocess *******
INFO: NNA clock:1001624 [kHz]
INFO: Heap :anonymous (0x2)
INFO: Heap :dmabuf (0x2)
INFO: Heap :unified (0x5)
WARNING: Mapping to the on chip ram failed (128 > 0), continuing...
FATAL: Importing 1228800 bytes of CPU memory has failed (Invalid argument)
Run graph execution time: 15.32188ms, FPS=65.27
detect num: 3
id: label score x1 y1 x2 y2
[0]: 0 0.840377 143.673843 124.767212 324.287476 510.595825
[1]: 32 0.793254 190.266235 465.577087 247.116486 514.476807
[2]: 0 0.645619 219.326797 159.139938 537.784119 510.424500
********** draw bbox **********
[143.673843, 124.767212, 324.287476, 510.595825, 0.840377, 0]
[190.266235, 465.577087, 247.116486, 514.476807, 0.793254, 32]
[219.326797, 159.139938, 537.784119, 510.4245, 0.645619, 0]
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# lsmod
Module Size Used by
vha_info 90112 0
vha 811008 1 vha_info
img_mem 696320 1 vha
snd_usb_audio 1609728 0
uvcvideo 778240 0
snd_hwdep 65536 1 snd_usb_audio
snd_usbmidi_lib 204800 1 snd_usb_audio
videobuf2_vmalloc 57344 1 uvcvideo
snd_rawmidi 241664 1 snd_usbmidi_lib
binfmt_misc 81920 1
pvrsrvkm 8572928 17
dwc3 2457600 0
roles 40960 1 dwc3
galcore 3166208 0
dwc3_thead 36864 0
vc8000 618496 0
memalloc 28672 0
hantrodec 888832 0
vidmem 139264 0
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# python3 inference.py
********** preprocess image **********
******* run yolov5 and postprocess *******
INFO: NNA clock:1001624 [kHz]
INFO: Heap :anonymous (0x2)
INFO: Heap :dmabuf (0x2)
INFO: Heap :unified (0x5)
WARNING: Mapping to the on chip ram failed (128 > 0), continuing...
FATAL: Importing 1228800 bytes of CPU memory has failed (Invalid argument)
Run graph execution time: 15.16949ms, FPS=65.92
detect num: 3
id: label score x1 y1 x2 y2
[0]: 0 0.840377 143.673843 124.767212 324.287476 510.595825
[1]: 32 0.793254 190.266235 465.577087 247.116486 514.476807
[2]: 0 0.645619 219.326797 159.139938 537.784119 510.424500
********** draw bbox **********
[143.673843, 124.767212, 324.287476, 510.595825, 0.840377, 0]
[190.266235, 465.577087, 247.116486, 514.476807, 0.793254, 32]
[219.326797, 159.139938, 537.784119, 510.4245, 0.645619, 0]
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n# ^C
(ort) root@lpi4a:/home/sipeed/Desktop/udisk/yolov5n#
The text was updated successfully, but these errors were encountered: