jbwang1997 / CrossKD

CrossKD: Cross-Head Knowledge Distillation for Dense Object Detection
Other
125 stars 15 forks source link

在yolov8 实现的一些困惑 #7

Open wangtao2668129173 opened 1 year ago

wangtao2668129173 commented 1 year ago

感谢您的工作,我在yolov8实现您这篇工作的想法,分别在reg_conv 和cls_conv 设置了蒸馏点位,遇到以下奇怪的问题: 1.模型蒸馏loss 收敛的很快,后期很容易过拟合。模型精度先上升后下降,大概我看了下有0.9%提升,不及预期(比我之前做的其它蒸馏要差) 2.由于cls_conv 老师和学生通道无法对齐,我增加了conv+bn 对齐通道的。 3.我没有在silu 之前的特征做蒸馏loss,是否影响精度 4.对齐老师和学生的统计量是否有效。 ...

Stephen-K1 commented 1 year ago

你好,请问一下你用的哪个蒸馏方法最有效呢?我也是在yolov8上蒸馏,我复现的Prediction-guided distillation (ECCV 2022), 论文里面性能性能提升巨大,但是复现效果性能基本没提升,所以想请教一下你目前觉得哪个蒸馏方法比较有效呢?有1%的提升我就觉得不错了(泪目)

wangtao2668129173 commented 12 months ago

1.Prediction-guided distillation 这篇在yolov8 复现无效,我也复现过(可能在一些小数据集可能有效把,coco 上别想涨点了),我还特意问了作者(他做也没效)2.logit distillation 要比feature distillation 好,蒸馏还得看检测器,yolo 这种参数量极小,性能极佳,很难涨点。在mmdetection 做蒸馏没有啥意思 ,基本上mmdetection 给的检测器参数量比较大,上蒸馏一般都会涨点。

Stephen-K1 commented 12 months ago

1.Prediction-guided distillation 这篇在yolov8 复现无效,我也复现过(可能在一些小数据集可能有效把,coco 上别想涨点了),我还特意问了作者(他做也没效)2.logit distillation 要比feature distillation 好,蒸馏还得看检测器,yolo 这种参数量极小,性能极佳,很难涨点。在mmdetection 做蒸馏没有啥意思 ,基本上mmdetection 给的检测器参数量比较大,上蒸馏一般都会涨点。

感谢回复,我用的是剪枝后的yolov8n,我也试了这个方法link ,结果还是没提升,放弃了 -_-

Feynman1999 commented 10 months ago

感谢您的工作,我在yolov8实现您这篇工作的想法,分别在reg_conv 和cls_conv 设置了蒸馏点位,遇到以下奇怪的问题: 1.模型蒸馏loss 收敛的很快,后期很容易过拟合。模型精度先上升后下降,大概我看了下有0.9%提升,不及预期(比我之前做的其它蒸馏要差) 2.由于cls_conv 老师和学生通道无法对齐,我增加了conv+bn 对齐通道的。 3.我没有在silu 之前的特征做蒸馏loss,是否影响精度 4.对齐老师和学生的统计量是否有效。 ...

使用conv来对齐通道,conv的参数也是一起优化吗? 这个会不会影响蒸馏?

wangtao2668129173 commented 10 months ago

感谢您的工作,我在yolov8实现您这篇工作的想法,分别在reg_conv 和cls_conv 设置了蒸馏点位,遇到以下奇怪的问题: 1.模型蒸馏loss 收敛的很快,后期很容易过拟合。模型精度先上升后下降,大概我看了下有0.9%提升,不及预期(比我之前做的其它蒸馏要差) 2.由于cls_conv 老师和学生通道无法对齐,我增加了conv+bn 对齐通道的。 3.我没有在silu 之前的特征做蒸馏loss,是否影响精度 4.对齐老师和学生的统计量是否有效。 ...

使用conv来对齐通道,conv的参数也是一起优化吗? 这个会不会影响蒸馏?

是的,我是将这组参数直接加入到优化器中一起优化。

zhangyusen1997 commented 2 months ago

各位大佬好,不太懂知识蒸馏,想问一下,CrossKD计算蒸馏损失的时候,是直接比较最终检测结果的差异吗,计算对应box的cls分数以及giou?还是其他的什么

zhangyusen1997 commented 2 months ago

感谢您的工作,我在yolov8实现您这篇工作的想法,分别在reg_conv 和cls_conv 设置了蒸馏点位,遇到以下奇怪的问题: 1.模型蒸馏loss 收敛的很快,后期很容易过拟合。模型精度先上升后下降,大概我看了下有0.9%提升,不及预期(比我之前做的其它蒸馏要差) 2.由于cls_conv 老师和学生通道无法对齐,我增加了conv+bn 对齐通道的。 3.我没有在silu 之前的特征做蒸馏loss,是否影响精度 4.对齐老师和学生的统计量是否有效。 ...

您好,我想问一下,crossKD也是把teacher模型输出的检测结果当做label去训练student模型吗,还是输出的正样本,论文里提到模仿预测效果不佳是因为动态标签分配的原因。