Toybrick

对于rknn\api\rknn.py 中几个函数参数的疑问,我又困惑了……

abcehac

注册会员

积分
163
楼主
发表于 2019-8-13 02:23:15    查看: 8829|回复: 1 | [复制链接]    打印 | 只看该作者
我又来麻烦各位大神帮我解答疑惑了~~~我用的PC(ubuntu)来transfrom yolov3_demo模型,用rk3399pro开发板来跑模型。
我在rknn_transform_tiny.py中依次看到两个函数rknn.config(......)、rknn.build(......)。在rknn_camera_tiny.py中看到rknn.init_runtime()、rknn.inference()。
然后查看了下rknn.py中的这4个函数的参数解释,有些我不是很清楚:

问题1:
如果我想确保模型精度更好,在开启量化后,想量化假设1w张图片,是不是应该:
rknn.config(...... , batch_size = 100,epoch=100, ......)  
rknn.build(...... , rknn_batch_size = 30, ......)  
这里的epoch=100,是循环100个batch_size,还是把一个batch_size循环100次?
rknn_batch_size这里根据我的显存填写相应的值?

问题2:
如果我没有开启量化:
rknn.config(...... , quantized_dtype='asymmetric_quantized-u8', ......)
rknn.build(do_quantization=False)
是不是只要不开启量化,那么在rknn.config中 quantized_dtype无论取asymmetric_quantized-u8, dynamic_fixed_point-8, dynamic_fixed_point-16,这3个中的哪个值对于结果来说都没啥区别?

问题3:
针对于yolov3和yolov3-tiny模型,quantized_dtype的取值有什么推荐吗?上面这3个值哪个会更好一些?

问题4:
如果我在开发板上运行rknn_camera_tiny.py,那么rknn.init_runtime()中是不是就需要填写target='rk3399pro',否则就无法使用NPU呢?

问题5:
我在rknn.py中看到def inference(......, data_type='uint8', ......)。它的取值可以有int8, uint8, int16, float16, float32, (default uint8)这些值让我很困惑,不知道如何选择?这里的int8 和 uint8什么区别?什么时候用int8, uint8, int16, float16, float32?
5-1:jefferyzhang 超级版主曾经回答过我:“NPU计算单元最多的是INT8,其次是FP16,最少的是FP32。量化后全部使用INT8,是可以达到满3T的算力的。FP16和FP32算力就会下降很多。” 那么,如果我量化后的模型在开发板上跑是不是rknn.inference(......, data_type='int8', ......) 这样设置?
5-2:开启量化后,quantized_dtype的这三个可能的取值asymmetric_quantized-u8, dynamic_fixed_point-8, dynamic_fixed_point-16和int8, uint8, int16, float16, float32的对应关系是什么?
5-3:如果我没有开启量化,那么这里有应该如何选择?


感谢大家的帮助!多谢!

回复

使用道具 举报

abcehac

注册会员

积分
163
沙发
 楼主| 发表于 2019-8-13 13:02:46 | 只看该作者
hisping 发表于 2019-8-13 09:20
问题1:
循环100个batch_size,也就是一万张图片
文档中build没有rknn_batch_size参数吧

非常感谢您的解答!太感谢了!!!

文档中的确没有提到这参数。我只是在开发板中python库rknn/api/rknn.py 查看这些函数时看到的
def build(self, do_quantization=True, dataset=None, pre_compile=False, rknn_batch_size=1)

那我现在理解的是:
开启量化:
quantized_dtype = asymmetric_quantized-u8 , data_type会自动选择'uint8'
quantized_dtype =dynamic_fixed_point-8 ,       data_type会自动选择'float16'
quantized_dtype =dynamic_fixed_point-16,      
data_type会自动选择'float32'


不开启量化:
data_type 我可以选择'
float16
' 或者'
float32
'
回复

使用道具 举报

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

本版积分规则

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


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