Toybrick

关于rknn3399proD是否支持conv3D(3D卷积)的测试

kznpt

新手上路

积分
39
楼主
发表于 2021-5-26 23:36:16    查看: 11171|回复: 1 | [复制链接]    打印 | 只看该作者
本帖最后由 kznpt 于 2021-5-26 23:38 编辑

     由于网络中使用了conv3d,所以准备测试一下板子能否转换成功,主要的思路是先写一个只有一层3D卷积层的网络模型,然后对其权重进行初始化,将网络和参数保存为pth文件。接下来有两个思路,一种是将pth文件通过torch的jit包转换为pt文件,然后将pt文件转换为rknn文件(pth--->pt--->rknn);另一种思路是先将pt文件转换为onnx文件,再将onnx文件转换为rknn文件(pth--->onnx--->rknn)。    两种方案的第一步转换都成功了,但是在第二步的时候,都失败了。其中,pt--->rknn出现的错误是:
图片请看附件

可以看出,在3d卷积这一层出现了错误。由于使用了3D卷积,padding自然也是3维的,但是报错提示只支持2维的padding。
onnx--->rknn的报错为:
图片请看附件

可以看到,报错为列表索引越界,并且是在匹配3D卷积的时候报的这个错误。在报错的倒数第二行看到了filter_shape的关键字,因此推测是由于3D卷积的filter是[3, 3, 3],3维的形状,但是转换不支持3维的filter,因此报这个错误。
    在以上实验中,所使用的rknn_toolkit版本为1.6,pytorch版本1.4、1.5、1.6均测试过,故排除版本影响。综合以上实验,基本可以认为目前版本对conv3D不太支持。当然由于学识有限,所做实验或有遗漏之处,所得到的结论可能也不是很严谨,希望论坛中有大佬可以指正。
附所测试的网络结构:图片请看附件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

changchenliang

注册会员

积分
125
沙发
发表于 2021-8-19 10:16:01 | 只看该作者
我最近也想在rk3399pro上跑包含3D卷积的网络,一直没尝试过,非常感谢楼主的研究,真是特别严谨和详细,楼主辛苦!
回复

使用道具 举报

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

本版积分规则

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


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