biubug6 / Face-Detector-1MB-with-landmark

1M人脸检测模型(含关键点)
MIT License
1.02k stars 271 forks source link

pytorch模型精度与ncnn模型精度不一致 #60

Closed 408550969 closed 2 years ago

408550969 commented 2 years ago

我用的backbone是mobile0.25,使用的是widerface训练集,使用mobile0.25的预训练模型进行训练。得到的pth模型经test_widerface检测 ,eazy精度是81.2,复现了论文的精度。但是当我把这个模型转到ncnn后,在c++上进行检测,发现eazy的精度是69.3。 大家有碰到这个问题吗?

408550969 commented 2 years ago

用了作者给的RFB模型,转换前后精度几乎一致。使用作者的mobilenet0.25 转换前后精度依旧不一致,现在看来貌似是mobilenet0.25转换会丢失精度

408550969 commented 2 years ago

已解决,是pytorch转onnx时,当模型中含有F.interpolate时,不同的opset_version会转换成不同的层的问题,opset_version9会转换成upsample,,而opset_version11会转成成resize,resize层转到sim后会输出成固定的尺寸,导致最后转到ncnn也变成输出固定尺寸,从而影响了精度。(所以最后的结论就是运行convert_to_onnx.py时,不要管warning就行了)