yolov4-pytorch icon indicating copy to clipboard operation
yolov4-pytorch copied to clipboard

loss计算太慢

Open ZGJY95 opened this issue 2 years ago • 7 comments

训练用的COCO数据集,设置的batchsize是96,用的unfreeze training,开启fp16,单GPU。 训练的时候大概5s左右一个batch,但是loss运算就需要4s左右。CPU只用了大概30%。 image

有什么办法可以优化一下吗?

ZGJY95 avatar Jun 20 '23 11:06 ZGJY95

我还想问下,get_target里是计算了9个anchor 和真实框的iou, 然后取最大。 为什么不是只计算当前特征图的三个anchor然后取最大?计算9个的话,y_true里少了bbox,会影响iou loss的吧? 非常感谢! image

ZGJY95 avatar Jun 22 '23 13:06 ZGJY95

训练用的COCO数据集,设置的batchsize是96,用的unfreeze training,开启fp16,单GPU。 训练的时候大概5s左右一个batch,但是loss运算就需要4s左右。CPU只用了大概30%。 image

有什么办法可以优化一下吗?

额……你是怎么知道loss的时间的,loss已经都在gpu上了

bubbliiiing avatar Jun 24 '23 16:06 bubbliiiing

我还想问下,get_target里是计算了9个anchor 和真实框的iou, 然后取最大。 为什么不是只计算当前特征图的三个anchor然后取最大?计算9个的话,y_true里少了bbox,会影响iou loss的吧? 非常感谢! image

还要确定哪个特征图呀

bubbliiiing avatar Jun 24 '23 16:06 bubbliiiing

训练用的COCO数据集,设置的batchsize是96,用的unfreeze training,开启fp16,单GPU。 训练的时候大概5s左右一个batch,但是loss运算就需要4s左右。CPU只用了大概30%。 image 有什么办法可以优化一下吗?

额……你是怎么知道loss的时间的,loss已经都在gpu上了

直接在outputs = model_train(images)前后加t = time.time(),算了个差值放在进度条里了

ZGJY95 avatar Jun 24 '23 16:06 ZGJY95

我还想问下,get_target里是计算了9个anchor 和真实框的iou, 然后取最大。 为什么不是只计算当前特征图的三个anchor然后取最大?计算9个的话,y_true里少了bbox,会影响iou loss的吧? 非常感谢! image

还要确定哪个特征图呀

特征图不是用输入的l确定的嘛? image

ZGJY95 avatar Jun 24 '23 16:06 ZGJY95

这个l指的是现在在算第几个特征层 但是我们没法知道真实框匹配的是哪个特征层,所以需要把真实框与三个特征层计算,先判断真实框属于哪个特征层 因为这里对bs循环了,所以比较慢,你可以看看我的yolov5的代码,匹配的过程发生在data加载

bubbliiiing avatar Jun 27 '23 16:06 bubbliiiing

这个l指的是现在在算第几个特征层 但是我们没法知道真实框匹配的是哪个特征层,所以需要把真实框与三个特征层计算,先判断真实框属于哪个特征层 因为这里对bs循环了,所以比较慢,你可以看看我的yolov5的代码,匹配的过程发生在data加载

懂了!非常感谢!

ZGJY95 avatar Jun 28 '23 19:06 ZGJY95