yolo-tensorrt icon indicating copy to clipboard operation
yolo-tensorrt copied to clipboard

精度不一致问题

Open PowerDi opened this issue 3 years ago • 4 comments

想请教下有没有验证过精度差别问题?(fp32)模式

同样的图片在训练环境的测试环境中没有出现误检的情况,但是在AGX平台的tensorRT推理中,则出现了与训练环境不一样的误检(或者是突然很大的一个框),平台出现了Some tactics do not have sufficient workspace memory to run. Increaseing workspace size may increase performance的提示有关系吗?

PowerDi avatar Apr 06 '21 11:04 PowerDi

没出现过,再就是engine文件不通用,在jetson平台需要重新生成engine

enazoe avatar Apr 06 '21 11:04 enazoe

没出现过,再就是engine文件不通用,在jetson平台需要重新生成engine

正常的物体在agx上置信度推理出来的高1%左右,但是会有误检

PowerDi avatar Apr 06 '21 12:04 PowerDi

您好,这边在学习的过程中遇到了一些新的问题,可以帮忙看一下吗? 我将网络的输入修改成了512尺寸,并将focus层之后的卷积层的步长改为了1想要让yolo层的特征尺度放大一倍,诸如

# YOLOv5 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 1]],  # 1-P2/4

但我将训练后的模型在trt转换后所有框的置信度输出,发现结果都是异常值,于是我进行了逐层分析。 发现在将focus层后的CBL层,同样的位置在不修改其他参数只修改步长由2->1之后,出现了训练环境pytorch与TRT输出不一样的结果(正常模型在该层输出是一样的) 于是我将该层的输出逐个导入到pytorch相应的层输出中看是否能推理成功,发现最后结果也是异常了,但同样的导出方法在步长没改1的模型中可以将值逐个导入到pytorch进行推理,可见focus层后的CBL层输出结果不对之外,也不是因为精度损失导致的,有解决的思路吗?即

nvinfer1::ILayer * out = layer_conv_bn_act(trtWeights,
				"model."+std::to_string(i-1), model_wts, previous, m_Network, n_out_channel, kernel_size, stride);

只将stride设成1.此时输出维度是对应128256256

PowerDi avatar Apr 16 '21 19:04 PowerDi

是的。当使用yolov3-voc.cfg时,此程序的输出与darknet的输出不一致。简单测试以下 darknet 附带的 person.jpg就会发现。

zhangjian-neu avatar Jul 19 '21 10:07 zhangjian-neu