【j5】按照QAT文档,在模型训练时将图像转换成 了centered_yuv444 格式但是如果要使用nv12输入,那在QAT模型训练时候如何进行前处理呢?(应该不再是使用 rgb2centered_yuv了吧)
你好,你可以用 import horizon_plugin_pytorch.functional as F 然后print(dir(F)) 看一下里面有没有 对应的转换到NV12数据类型的方法。一般来说是QAT训练用的是centered_yuv444数据类型。
你好,我的疑惑在于,按照QAT文档在训练时使用了rgb2centered_yuv,那么我最终上板部署hbm的时候,模型的输入应该是什么格式?(是直接输出yuv444?,但是有看到别的贴子里说hbm推理是会自动完成nv12到yuv444的转换,有点混乱)
我发现模型output的valid_shape是[1, 320, 1, 240],但是我代码中的输出是[1, 1, 240, 320],这个不一致正常吗?并且我看到aligned_shape是[1, 320, 1, 256],不太理解256是怎么出现的~
这个输出看着还好,其实就是把240x320变成了320x240,然后因为是BPU算子直接输出,所以带上了硬件对齐的padding区域,后厨需要自行跳过这些无效区域并且做反量化,才能得到正确的浮点计算结果
老师你好,我发现我打印模型的输出维度,直接就是[1, 320, 1, 240],这样好像不能自行操作跳过无效区域:并且我打印输出的反量化参数self.quantize_model[0].outputs[0].properties.scale_data,这个scale_data的维度为什么是[320, ],这和我的输出维度不匹配。
你好,现在输出部分已经修改了(乘scale),但是模型输出结果还是不对,我怀疑是否是输入数据预处理的问题。我的模型在QAT训练的时候是按照文档修改了(转YUV444_128再除以128进行归一化,然后模型输入设置了QuantStub(scale=1 / 128)),这种设置下,我在板子上做推理的时候,对图像(加载本地的图片)进行bgr2nv12,然后直接输入到模型,最终出来的结果是不对的。请问我是有哪里的操作不正确吗?
你好大佬,抱歉又打扰了~我这边尝试了C++,如果按照sample中的实例,运行的时候会报输入数据的错误,应该是和nv12_separate相关(输入的alignedSize是115200):因此我做了如下修改:修改之后到推理那一步直接segmentation fault了。请问我这样的修改是不是有问题呢?