你好,
针对bev的ipm的QAT量化问题我有几个细节没有太理解,希望能点拨以下
问题1. 对于bev_mt_ipm.py的config文件中,QuantStub插入的量化节点scale是通过下面的函数决定的
max_coord = max(*grid_shape, *view_shape)
coord_bit_num = math.ceil(math.log(max_coord + 1, 2))
coord_shift = 15 - coord_bit_num
coord_shift = max(min(coord_shift, 8), 0)
grid_quant_scale = 1.0 / (1 << coord_shift)
return grid_quant_scale
对于这个scale这样计算的目的是什么?因为在做分割bev时的points的scale为1.0/64.0, 而在ipm的vtransformer过程
问题2:
grid_sample函数会对points先进行一次adjust_coords减去一个值,再进行grid_sample过程中又加上去。
它的目的是什么?是为了让伪量化的时候clip尽量小吗?这个与上面的scale关系如何?
附录中是上面提到的操作复制的代码
祝好
给个大概解释就行,不求甚解
