|
我又来麻烦各位大神帮我解答疑惑了~~~我用的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:如果我没有开启量化,那么这里有应该如何选择?
感谢大家的帮助!多谢!
|
|