无法配置DeepStream分类器以给出与其构建的TRT引擎相同的softmax输出。
有遇到此类问题欢迎联系我大家一起研究交流。目前我还不知道怎么解决,如果有大佬解决了恳请帮忙解惑。
原issue链接:
https://forums.developer.nvidia.com/t/cant-configure-deepstream-classifier-to-give-the-same-softmax-outputs-as-the-trt-engine-it-builds/275581/1
这篇帖子来自NVIDIA开发者论坛,讨论的是关于DeepStream SDK中自定义分类器的配置问题。用户遇到了一个问题,即无法配置DeepStream分类器以产生与由TRT引擎构建的模型相同的softmax输出。以下是问题的总结和解决方案的分析:
问题概述:
用户使用PyTorch自定义训练了一个2类ResNet34分类器,并将其保存为ONNX和TRT格式。
用户发现,当使用相同的预处理和模型时,PyTorch、ONNX和TRT模型都能产生相同的推理softmax输出。
但是,在DeepStream管道中使用nvinfer时,无法获得相同的结果,无论是作为主推理还是次推理。
用户已经检查了所有合理的归一化设置,包括net-scale-factor、offsets和model-color-format。
用户尝试的解决方案:
用户尝试了不同的配置,包括改变scaling-filter,但这导致了softmax输出的完全变化,这是出乎意料的,因为DeepStream管道中不需要图像/视频缩放。
论坛上的建议:
检查管道配置:有建议指出用户可能引入了额外的图像缩放,但用户确认输入视频、streammux设置和分类器网络输入尺寸都是224x224,理论上没有配置缩放。
使用硬件视频解码器:建议使用硬件视频解码器代替软件解码器avdec_h264,但用户认为这不会影响结果的有效性。
检查PyTorch文档:用户被建议检查PyTorch文档以确定图像缩放算法,但用户确认在PyTorch中没有缩放发生。
设置scaling-filter参数:用户被建议设置scaling-filter参数以使nvinfer执行相同的缩放,但用户认为由于没有缩放应该发生,所以这不应该是问题。
网络类型设置:用户被建议在配置文件中设置network-type=1,用户尝试后发现结果没有变化。
给的解决方案:
用户被建议跳过gst-nvinfer内部预处理,并使用nvdspreprocess插件自定义预处理(缩放、格式转换、归一化),以使输入张量与PyTorch相同。
用户尝试了新的管道配置,并提供了preprocess.txt配置文件,但发现归一化和缩放仍然由nvinfer而不是nvdspreprocess应用。
用户被建议自定义自己的nvdspreprocess低级库,以与PyTorch算法兼容,因为示例nvdspreprocess库不符合用户的要求。
结论:
问题没解决。