全志V853 NPU 导入模型修改为 yuv输入,导出NBG文件报错
-
按照 NPU 导入 yolov3 模型, 因为默认是 RGB 输入。在服务平台上找到 如何修改 YUV 输入的。
按照解决方法修改 inputmeta 文件 只是生成了一个 input0 , 在导出 NBG 文件 会因为 没有 2个 input 而导出报错。
感觉应该是在 inputmeta 那里再加一个 input,但没有文档介绍 该怎么去修改 获得 2个 input 再导出 NBG? 请教下大神。
-
YML 指定的 IMAGE_NV12 输入模式下,YUV 输入数据的方式是 Y,UV 分成两个文件送给验证程序,所以第一步,我们需要将 dog_416x416 图片转换为 YUV420 格式, 再拆分成两个文件
-
转换
我们使用 ffmpeg 将一张 416*416 的图片转换为 YUV ffmpeg -i dog_416x416.jpg -pix_fmt nv12 image_416x416.nv12.yuv
-
将 Y 和 UV 平面分开,并分成两个文件按存储。 Y 和 UV 分 bin NV12 格式的大小,按理论计算,应该是 4164161.5=259584 字节。所以,Y 分量的大小应该为 4164161 = 173056, UV 分量大小为 86528。
分 Bin 我们使用 Linux 下的 dd 工具:
dd if=image_416x416.nv12.yuv of=Y.bin bs=1 count=173056 dd if=image_416x416.nv12.yuv of=UV.bin skip=173056 bs=1
仿真需要的数据也是要事先处理好的 Y.bin,UV.bin 作为参数,工具不帮忙给做
-
-
@yteraa 感谢大佬。还想请教下,已经分出了 Y.bin UV.bin,如何修改YML文件将这两个作为输入呢。
貌似不能直接把 bin 当做输入。
-
@rain_tk Y和UV的这两个bin是后面仿真,预推理使用的,dataset.txt里还是原来的rgb图片。这里转换的模型本质上还是rgb的,预处理只是把yuv转换rgb,与模型无关
前处理也只是把 CPU 需要做的转换交给NPU的PPU处理
-
@yteraa 哦哦明白了。但我现在卡在导出模型这步了。修改 nv12 格式导出后,最后一步会提示 需要两个输入 报错无法导出NBG。dataset.txt 就是一张 jpg 图片的话不需要修改的话,请问是哪里还需要去修改吗?
-
@rain_tk 可以先跳过,检查下在ovxilb文件夹里能不能找到nbg模型
仿真主要变化总结如下:
- dog_416x416.jpg 不需要了。
- 添加了 Y.bin 和 UV.bin 替换 dog_416x416.jpg 作为输入参数数据。
- 仿真产生了 Input_0.dat,input_1.dat,而 YOLOV3 RGB 输入模式只生成有 input_0.dat.
- UV.bin==input_1.dat, Y.bin==input_0.dat
-
@yteraa 因为导出模型那一步报错了,所以就没有 NBG 模型生成。应该是没办法跳过的。
具体操作 按照资料 - NPU 转换 YOLO V3 模型 。
准备 dataset.txt (1张jpg 416*416)
- 导入模型
- 创建 YML 文件
- 量化
- 预推理
- 导出模板代码与模型
这样导出后是RGB输入的。可以正常生成 nbg 模型文件可以用。
需要修改yuv输入,就按照客户服务平台修改 YML inputmeta 。但会在第五步报错,就没有生成 nbg 模型。暂时我这边还没去仿真,想先把模型文件成功导出先。报错图片就是上面发的,提示需要两个输入,我理解应该是 inputmeta 需要再加一个输入,但是不太清楚需要怎么去修改,因为发现在预推理那一步 只生成了一个 input.sensor
修改后是这样导出:
准备 dataset.txt (1张jpg 416*416)
设置环境变量(工具转化全过程保持变量):export VSI_USE_IMAGE_PROCESS=1- 导入模型
- 创建 YML 文件
- 量化
- 预推理
- 导出模板代码与模型
除了标注的修改点,其他指令都是参照 NPU 转换 YOLO V3 模型 文档(https://v853.docs.aw-ol.com/npu/npu_yolov3/#_6)
-
我这边测试是没有问题的,可能是软件的bug,dataset.txt里放两张图片试试看行不行。因为一般转换模型不会只放一张图片的,可能没考虑过放一张图片的情况。这里的输出nbg是靠前面的权重和模型文件打包得到的,与最后一步导出无关
另外读取nbg文件dump出来的也是包括预处理层的
-
还真的是,data里面再放一张图片就可以了。做测试,没太在意这个细节,谢谢大佬。
-
@yteraa 请问你这个图片的文档是哪里的,可以交流一下吗,微信feidedaoRobot
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号