Toybrick

标题: 关于rknn3399proD是否支持conv3D(3D卷积)的测试 [打印本页]

作者: kznpt    时间: 2021-5-26 23:36
标题: 关于rknn3399proD是否支持conv3D(3D卷积)的测试
本帖最后由 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不太支持。当然由于学识有限,所做实验或有遗漏之处,所得到的结论可能也不是很严谨,希望论坛中有大佬可以指正。
附所测试的网络结构:图片请看附件



作者: changchenliang    时间: 2021-8-19 10:16
我最近也想在rk3399pro上跑包含3D卷积的网络,一直没尝试过,非常感谢楼主的研究,真是特别严谨和详细,楼主辛苦!




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3