实现一个对于dcm格式的人体切下来的组织就行钙化点检测。我采用了unet分割算法,期间pth模型训练已经到达了一定精度。准备部署到嵌入设备上。期间遇到一个印象深刻的坑,pth转onnx转trt。用trt跑的时候精度变低了。试了trtexec的命令进行各种参数设置并没有改观该现象。在onnx转trt过程中查了很多资料也辗转了很久以为是onnx转换过程出现了问题。后来无意一次心血来潮想试一下onnx的本身精度。发现onnx的精度也有问题,那么问题原来处在onnx上。问题解决的也挺奇特的,本来onnx是放在baiduaistudio环境下转的onnx版本也是1.10.1的,转换下来有误差。后来在自己电脑上转了竟然发现之前明显的误差没有了这就很奇怪,我的onnx版本也是一样的哈。这就很奇怪。那么问题处在哪里呢,个人感觉问题处在torch版本上,baiduaistudio的torch版本是1.4.0而我的电脑版本是1.9.0的,但是我训练环境又是1.4.0的版本这就有点诡异了。
可能原因是1.4.0还没有混合精度概念,而1.9.0转onnx的时候载入模型参数后进入eval模式应该转onnx时候能够保存了更多的精度。这是我的猜想,后面还要验证下