CaoWGG / TensorRT-YOLOv4

tensorrt5, yolov4, yolov3,yolov3-tniy,yolov3-tniy-prn
264 stars 76 forks source link

yolov3 模型加速后目标丢失、可信度降低 #6

Open HappyKerry opened 4 years ago

HappyKerry commented 4 years ago

简单对比了几张图,发现darket的检测结果与加速后模型检测结果不一致,tensorRT的检测会丢目标,甚至会丢darknet下可信度为1的目标,可能是什么原因

CaoWGG commented 4 years ago

@HappyKerry https://github.com/CaoWGG/TensorRT-YOLOv4/blob/4d7c2edce99e8794a4cb4ea3540d51ce91158a36/src/trt.cpp#L205 可以设置一下keepration 和 keepcenter 这两个参数,意思resize的时候是否保持物体的的长宽比例,和是否保持图片在中心。 darknet是默认是keepration=0,keepcenter=0( 即darknet在infer时没有设置使用letterbox_image) keepration=0,keepcenter=0 是普通的resize+norm keepration=1,keepcenter=0 是表示物体保持长宽比例,图像左上角对齐的resize+norm keepration=1,keepcenter=1 是表示物体保持长宽比例,图像中心对齐的resize(letterbox_image)+norm

CaoWGG commented 4 years ago

@HappyKerry 还有就是 conv 和maxpool 的 padding 方式会有一些影响(对tiny影响很大),我目前的设置的padding方式可以查看tools/yolo_to_onnx.py

HappyKerry commented 4 years ago

@CaoWGG 我改了keepration=0,keepcenter=0后结果接近了,非常感谢,padding的方式我再测下

HappyKerry commented 4 years ago

@CaoWGG yolov4 改了keepration=0,keepcenter=0这两个参数也不行,darket默认的padding方式是哪种?

CaoWGG commented 4 years ago

@HappyKerry 目前我设置的方式,从tiny版本的效果来看是最接近的。 你可以放一张你跑的对比图嘛

h030162 commented 4 years ago

感谢大神对yolov4进行加速!!!十分感激。。。 predictions 0 我改了keepration=0,keepcenter=0.使用的是默认yolov4权重与coco的label. 座标值和概率值好像都不匹配,不改的情况下也不匹配,左边是darknet. 概率是算出来后我自己标上去的,所以看起来不协调,右边是tensorrt, 加速版的效果。目前不知道原因,请教大神!@CaoWGG

CaoWGG commented 4 years ago

@HappyKerry @h030162 https://github.com/CaoWGG/TensorRT-YOLOv4/blob/4d7c2edce99e8794a4cb4ea3540d51ce91158a36/src/resize.cu#L32 可将32,33,34行其改为 dst[stride*2 + y*dstW + x] = w1 *v1.x + w2 * v2.x + w3 *v3.x + w4 * v4.x; dst[stride*1 + y*dstW + x] = w1 *v1.y + w2 * v2.y + w3 *v3.y + w4 * v4.y ; dst[stride*0 + y*dstW + x] = w1 *v1.z + w2 * v2.z + w3 *v3.z + w4 * v4.z; 目的是将bgr 转为 rgb

HappyKerry commented 4 years ago

@CaoWGG @h030162 非常感谢,改完后结果正常了,yolov3、yolov4的都可以,模型是用AB版训的

h030162 commented 4 years ago

谢谢!@CaoWGG @HappyKerry demo 感觉还是差一点点,左边是tensorrt,右边是darknet. 左边的丢失了一个目标,而且还是一个大目标,虽然pred比较小。

CaoWGG commented 4 years ago

@h030162 可能的原因是infer_thresh设置的大或者是预测的框超出了图片(我没有对预测的xywh做约束处理)