Toybrick

楼主: yangyi129

转换darknet模型问题

yangyi129

注册会员

积分
50
楼主
发表于 2020-3-24 15:08:01    查看: 21969|回复: 10 | [复制链接]    打印 | 显示全部楼层
我使用自己训练好的权重和训练时用的cfg文件转换模型时报错,请问可能是什么原因造成的?错误如下:
--> Building model
Traceback (most recent call last):
  File "rknn_transform_512x512.py", line 27, in <module>
    rknn.build(do_quantization=False, dataset='./dataset_512x512.txt', pre_compile=False)
  File "/home/yy/.local/lib/python3.6/site-packages/rknn/api/rknn.py", line 220, in build
    inputs = self.rknn_base.net.get_input_layers()
AttributeError: 'NoneType' object has no attribute 'get_input_layers'
由于darknet没有MobileNet的DW_CONV层,因此我在cfg文件内设置conv层的group以替代DW_CONV层,如下:
[convolutional]
group=64
batch_normalize=1
filters=64   
size=3
stride=1
pad=1
activation=relu
但是我看转换模型时生成的.cfg.dat文件里的group_number依然是1。可能是这个原因造成的模型转换失败吗?


回复

使用道具 举报

yangyi129

注册会员

积分
50
沙发
 楼主| 发表于 2020-3-24 15:17:23 | 显示全部楼层
使用的是rknn-toolkit-V1.3.0
下载官方的yolov3的demo模型转换成功。
回复

使用道具 举报

yangyi129

注册会员

积分
50
板凳
 楼主| 发表于 2020-3-24 17:12:54 | 显示全部楼层
找到原因了,就是因为卷积的group_number=1造成的。
我配置文件修改了groups,所以训练生成的权重尺寸是1x256x3x3。但是转换代码没有读入我的修改,group_number还是1导致卷积的权重尺寸是256x256x3x3。
请问应该如何解决这个问题?
回复

使用道具 举报

yangyi129

注册会员

积分
50
地板
 楼主| 发表于 2020-3-25 09:37:38 | 显示全部楼层
jefferyzhang 发表于 2020-3-25 09:03
dw卷积目的是稍微降低精度的情况下提高速度,但我们npu不需要这个,我们npu常规卷积的运算速度远大于dw卷积 ...

那样模型大小不是会增加吗?请问RK3399Pro的模型大小上限是多少呢?
回复

使用道具 举报

yangyi129

注册会员

积分
50
5#
 楼主| 发表于 2020-3-31 15:56:48 | 显示全部楼层
jefferyzhang 发表于 2020-3-25 14:18
理论上是这样的。。
去掉dw conv,他就不叫mobilenet了。。。应该就是个vgg吧 ...

    你好,我把dw conv去掉之后,模型转换成功了。由于我的算法前面很多预处理代码是C++写的,所以测试的时候,我用C++调用python,使用yolov3_demo里的rknn_picture_320*320.py测试。  
    在cpp文件里pModule = PyImport_ImportModule("rknn_picture_320*320")一直无法导入.py文件,pModule 为NULL。
    可是测试过调用其他.py又是可以的。在原来可以导入的.py文件里加入from rknn.api import RKNN,又会导致导入失败,pModule 又变为NULL。
    直接在python环境下直接调用rknn_picture_320*320.py文件又是可以运行的,说明我的rknn是安装成功的。请问这可能是什么原因呢?
回复

使用道具 举报

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

本版积分规则

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


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