Toybrick

楼主: chen1234520

请问rknn支持视频分类网络吗?

jefferyzhang

版主

积分
12844
发表于 2022-8-4 11:42:37 | 显示全部楼层
先确定drv和api版本都是最新的1.7.x ,
然后pc上仿真是否运行正常
回复

使用道具 举报

chen1234520

新手上路

积分
44
 楼主| 发表于 2022-8-4 14:07:52 | 显示全部楼层
jefferyzhang 发表于 2022-8-4 11:42
先确定drv和api版本都是最新的1.7.x ,
然后pc上仿真是否运行正常

1.7.1版本,是在ubuntu18.04系统的PC上仿真的,之前转过其它的模型可以。
回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2022-8-4 14:16:35 | 显示全部楼层
chen1234520 发表于 2022-8-4 14:07
1.7.1版本,是在ubuntu18.04系统的PC上仿真的,之前转过其它的模型可以。

仿真可以,板子就肯定能跑。
回复

使用道具 举报

chen1234520

新手上路

积分
44
 楼主| 发表于 2022-8-4 14:21:41 | 显示全部楼层
jefferyzhang 发表于 2022-8-4 14:16
仿真可以,板子就肯定能跑。

只是将模型保存下来了,还没跑通,保存的模型初始化有问题。tensor切片操作得到的尺寸跟onnx上不一样。

前面保存的rknn模型,在rknn.init_runtime()时会报错,提示的错误如下:
D [setup_node:441]Setup node id[22] uid[158] op[CONCAT] name[Concat_Concat_1_158]
D [print_tensor:146]in(0) : id[ 119] vtl[1] const[0] shape[ 56, 56, 3, 1     ] fmt[f16] qnt[NONE]
D [print_tensor:146]in(1) : id[ 135] vtl[1] const[0] shape[ 56, 56, 3, 8     ] fmt[f16] qnt[NONE]
D [print_tensor:146]out(0): id[ 137] vtl[1] const[0] shape[ 56, 56, 3, 9     ] fmt[f16] qnt[NONE]
D [setup_node:441]Setup node id[23] uid[155] op[CONCAT] name[Concat_Concat_2_155]
E [op_check:348]Concat input dims size(8 vs 9)
E [setup_node:456]Check node[23] CONCAT fail

分析问题主要是出现在concat操作,在concat操作前有一个Slice切片操作,在onnx上slice的输出为[56 56 7 3],但是看rknn的log中显示slice的输出尺寸却为[56 56 8 3],导致concat后尺度错误。

下面是onnx模型和转好的rknn模型,以及切片和concat操作的代码,麻烦大佬帮忙看看哪里有问题!非常感谢!!!
链接: https://pan.baidu.com/s/1MXZZhZKBg_O49vQIzzNzdQ  密码: ebv0
链接: https://pan.baidu.com/s/1aMiNk0S12PfemJ1SamsSqQ  密码: fk4l

def shift_paddle_onebatch(x, seg_num, shift_ratio):
    nt, c, h, w = x.shape
    shape = x.shape  # [N*T, C, H, W]
    # print("x.shape:{}".format(x.shape))
    c1 = int(shape[1] * shift_ratio)
    c2 = int(shape[1] * 2 * shift_ratio)

    # left_side部分的slice输出为[7,3,56,56],zeros输出为[1,3,56,56],concat输出为[8,3,56,56]
    left_side = paddle.concat(x=[x[1:, :c1, :, :], paddle.zeros(shape=[1, c1, h, w])],  axis=0)
    # middle_side部分在onnx模型下结果也正常,但是rknn模型的slice输出为[8,3,56,56],导致concat后输出为[9,3,56,56]
    middle_side = paddle.concat(x=[paddle.zeros(shape=[1, c2-c1, h, w]), x[:-1, c1: c2,:,:]],  axis=0)
    out = paddle.concat(x=[left_side, middle_side, x[:, c2:c,:,:]],  axis=1)    # 最终此处concat时导致8:9报错
    print("out:{}".format(out.shape))

    return out
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表