PaddlePaddle / PaddleYOLO

🚀🚀🚀 YOLO series of PaddlePaddle implementation, PP-YOLOE+, RT-DETR, YOLOv5, YOLOv6, YOLOv7, YOLOv8, YOLOv10, YOLOX, YOLOv5u, YOLOv7u, YOLOv6Lite, RTMDet and so on. 🚀🚀🚀
https://github.com/PaddlePaddle/PaddleYOLO
GNU General Public License v3.0
552 stars 133 forks source link

YOLOv8m训练自己的数据集,几个epoch后loss变0。3090ti,单卡,调整了学习率,取消了mosaic增强。 #166

Open zhangyusen1997 opened 1 year ago

zhangyusen1997 commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

截屏2023-07-12 10 04 47 截屏2023-07-12 10 06 56 截屏2023-07-12 10 09 38
zhangyusen1997 commented 1 year ago

换yolov8s也是同样的问题

nemonameless commented 1 year ago

前几个epoch精度正常吗?前面训练的也截图下。训自己数据集注意加载coco权重做预训练。 单卡资源太少了,建议换更小模型或尺度

LDX17 commented 1 year ago

我用yolov8s也出现同样的问题,从11epoch开始,loss为0 image 而且前面10epoch后eval全为0,加载了coco权重做预训练,用的是aistudio上的A100资源 image image

nemonameless commented 1 year ago

https://github.com/PaddlePaddle/PaddleYOLO/blob/release/2.6/configs/yolov8/_base_/yolov8_cspdarknet.yml#L2 可以注释syncbn试试,COCO或自定义数据集我们内部训练都是8卡以上GPU资源极多训的。 最后推荐可以尝试使用一下ppyoloe+或rtdetr,训自定义数据集快速收敛的关键的是加载极强的预训练权重。

sdreamforchen commented 1 year ago

不知道我说得对不对。 V8这些训练问题,是不是assign的问题,或者说选择回归的loss点太多了(没有处理postive sample 和 negative sample)。造成起始的cls_loss这么大!

[07/18 00:44:35] ppdet.engine INFO: Epoch: [0] [ 0/3665] eta: 81 days, 15:43:15 lr: 0.000000 loss: 1312362.750000 loss_cls: 1312202.375000 loss_iou: 160.321213 loss_dfl: 0.000000 loss_l1: 53.665325 batch_cost: 3.8499 data_cost: 0.0013 ips: 8.3118 images/s [07/18 00:46:30] ppdet.engine INFO: Epoch: [0] [ 100/3665] eta: 24 days, 1:13:14 lr: 0.000001 loss: 1180799.875000 loss_cls: 1180635.000000 loss_iou: 164.957016 loss_dfl: 0.000000 loss_l1: 53.429075 batch_cost: 1.1069 data_cost: 0.7277 ips: 28.9103 images/s [07/18 00:48:33] ppdet.engine INFO: Epoch: [0] [ 200/3665] eta: 24 days, 18:02:08 lr: 0.000003 loss: 1321773.687500 loss_cls: 1321605.875000 loss_iou: 162.622360 loss_dfl: 0.000000 loss_l1: 52.578604 batch_cost: 1.2006 data_cost: 0.7857 ips: 26.6543 images/s [07/18 00:50:36] ppdet.engine INFO: Epoch: [0] [ 300/3665] eta: 24 days, 22:23:33 lr: 0.000007 loss: 1342713.875000 loss_cls: 1342555.562500 loss_iou: 151.517464 loss_dfl: 0.000000 loss_l1: 50.486034 batch_cost: 1.1931 data_cost: 0.8108 ips: 26.8212 images/s [07/18 00:52:35] ppdet.engine INFO: Epoch: [0] [ 400/3665] eta: 24 days, 19:47:10 lr: 0.000013 loss: 991059.343750 loss_cls: 990933.656250 loss_iou: 128.983490 loss_dfl: 0.000000 loss_l1: 42.778625 batch_cost: 1.1555 data_cost: 0.8027 ips: 27.6943 images/s

nemonameless commented 1 year ago

这个起始loss_cls这么大明显是初始化的问题,你是改了初始化的相关代码吗。先按coco数据集训下看正常的情况,自定义数据集如果训的不正常,应该先排查数据集制作的问题。

sdreamforchen commented 1 year ago

我找找,我应该没有改的,就改了head

---原始邮件--- 发件人: "Feng @.> 发送时间: 2023年7月18日(周二) 中午12:47 收件人: @.>; 抄送: @.**@.>; 主题: Re: [PaddlePaddle/PaddleYOLO] YOLOv8m训练自己的数据集,几个epoch后loss变0。3090ti,单卡,调整了学习率,取消了mosaic增强。 (Issue #166)

这个起始loss_cls这么大明显是初始化的问题,你是改了初始化的相关代码吗。先按coco数据集训下看正常的情况,自定义数据集如果训的不正常,应该先排查数据集制作的问题。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

sdreamforchen commented 1 year ago

这个起始loss_cls这么大明显是初始化的问题,你是改了初始化的相关代码吗。先按coco数据集训下看正常的情况,自定义数据集如果训的不正常,应该先排查数据集制作的问题。

未更改初始化,而且在训练前还重新拉取的最新代码。 仅将forward_train\forward_eval\get_loss代码进行了修改

zhangyusen1997 commented 1 year ago

前几个epoch精度正常吗?前面训练的也截图下。训自己数据集注意加载coco权重做预训练。 单卡资源太少了,建议换更小模型或尺度 截图 2023-07-19 11-35-57

zhangyusen1997 commented 1 year ago

数据集应该没问题,跑了ppyoloe,yolof,v3,v5

sdreamforchen commented 1 year ago

我将ppyoloe的head的DFL去掉,训练正常; 将paddleYOLO的v8的backbone和neck拷贝到paddledetection里,用ppyoloe的head,loss正常,和ppyoloe的差不多。但是40epoch,精度还是为0.

54wb commented 1 year ago

我用yolov8s也出现同样的问题,从11epoch开始,loss为0 image 而且前面10epoch后eval全为0,加载了coco权重做预训练,用的是aistudio上的A100资源 image image

hi~,我也遇到了同样的问题,训练自己的数据集,加载了预训练权重,使用bs=16单卡训练,在第3个epochloss变0,跟你发出来的情况几乎一样。请问最后有解决办法嘛

sdreamforchen commented 1 year ago

分享一个我的解决方案,不用paddleyolo,讲yolov8那几个Python文件放到对应的paddledetection里面去,你参考ppyoloe,这样是没问题的,保险一点就是所以的除了head按照以上操作,改ppyoloe的head,也可以不改,因为head不是这俩模型的主要差别,我目前就是这么玩通的。

不改head是因为里面涉及标签分配,loss计算等一大堆内容,这样又可能一堆小问题出现。 ps:fpn输出这俩模型不一样,一个是4 3 2,另一个是2 3 4,顺序是反着的,这地方需要修改一下。

---原始邮件--- 发件人: @.> 发送时间: 2023年9月7日(周四) 下午2:51 收件人: @.>; 抄送: @.**@.>; 主题: Re: [PaddlePaddle/PaddleYOLO] YOLOv8m训练自己的数据集,几个epoch后loss变0。3090ti,单卡,调整了学习率,取消了mosaic增强。 (Issue #166)

我用yolov8s也出现同样的问题,从11epoch开始,loss为0 而且前面10epoch后eval全为0,加载了coco权重做预训练,用的是aistudio上的A100资源

hi~,我也遇到了同样的问题,训练自己的数据集,加载了预训练权重,使用bs=16单卡训练,在第3个epochloss变0,跟你发出来的情况几乎一样。请问最后有解决办法嘛

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

54wb commented 1 year ago

大佬可以交流一下嘛,PPYOLO要求paddle2.4以上,我目前用的ppdetection是2.3,这个可以直接把代码迁移过去嘛

sdreamforchen commented 1 year ago

应该问题不大。你就迁移backbone和fpn的嘛,没啥特别的操作。

---原始邮件--- 发件人: @.> 发送时间: 2023年9月7日(周四) 下午3:16 收件人: @.>; 抄送: @.**@.>; 主题: Re: [PaddlePaddle/PaddleYOLO] YOLOv8m训练自己的数据集,几个epoch后loss变0。3090ti,单卡,调整了学习率,取消了mosaic增强。 (Issue #166)

大佬可以交流一下嘛,PPYOLO要求paddle2.4以上,我目前用的ppdetection是2.3,这个可以直接把代码迁移过去嘛

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

nemonameless commented 7 months ago

感谢建议,后续会排查下这个问题。