Stinky-Tofu / Stronger-yolo

🔥Improve yolo with latest paper
MIT License
3 stars 0 forks source link

why mixup cause bad performance? #14

Open BowieHsu opened 5 years ago

BowieHsu commented 5 years ago

Hi, your work is awesome, but i have a question, as limu's paper said, the mixup trick can improve mAP a lot on MSCOCO datasets, but results in your readme shows that the mixup trick hurts the performance on VOC2007 datasets, can you share the experience during the process of adding mixup into tensorflow yolov3?

Stinky-Tofu commented 5 years ago

Hi, your work is awesome, but i have a question, as limu's paper said, the mixup trick can improve mAP a lot on MSCOCO datasets, but results in your readme shows that the mixup trick hurts the performance on VOC2007 datasets, can you share the experience during the process of adding mixup into tensorflow yolov3?

如果用darknet53.weights初始化YOLO的话,MIXUP可以提高1.4mAP,但是用yolov3.weights初始化的话,反而降低了0.3mAP。加MIXUP的话,我是完全按照这篇文章加的https://arxiv.org/pdf/1902.04103.pdf 。从beta(1.5, 1.5)分布随机取一个权重值a,image0和image1分别对应权重a和1-a,mixup后得到image = a image0 + (1 - a) image1,原来属于 image0和image1的bbox也分别对应权重a和1-a,假设bbox0原来是image0上的bbox,那么与bbox0相关的损失都乘上权重a,image1上的损失权重同理。

BowieHsu commented 5 years ago

非常感谢您的分享,我想根据您现在的脚本在MSCOCO上进行重训练,想看看这些tricks在MSCOCO上是否有效,这方面实验您有做过或者什么建议么

Stinky-Tofu commented 5 years ago

非常感谢您的分享,我想根据您现在的脚本在MSCOCO上进行重训练,想看看这些tricks在MSCOCO上是否有效,这方面实验您有做过或者什么建议么

您好,因为我就一张1080Ti,所以没在COCO数据集上训练过,您要是用这份代码来训练COCO数据集的话,我建议您先好好改一下训练部分的代码,如学习率衰减方案(推荐使用cosine learning rate)、batch size、训练BN层(我的代码中把BN层冻住了)、训练周期等等,因为我这份代码是用来fine-tune voc的。

BowieHsu commented 5 years ago

@Stinky-Tofu 我现在已经把COCO数据先转换成VOC标注格式,然后修改了你的代码生成了训练和验证的list了,现在我在单张卡上测试,必须要把batch_size修改成8才能运行起来,否则会有OOM,现在是不是应该将训练代码扩展到多张GPU上

BowieHsu commented 5 years ago

@Stinky-Tofu 还有现在读取数据的接口是用placeholder实现的,GPU的利用效率会受到限制吧,这块你打算改掉么,还是我来改掉

Stinky-Tofu commented 5 years ago

@Stinky-Tofu 还有现在读取数据的接口是用placeholder实现的,GPU的利用效率会受到限制吧,这块你打算改掉么,还是我来改掉

我默认是在一块12G的1080Ti训练的,所以batch size最大为6,没有写多GPU并行训练的代码。至于是否使用placeholder还是您自己写吧,最近在找实习刷题,没时间弄这个了,不好意思啊。

BowieHsu commented 5 years ago

@Stinky-Tofu 了解,我来继续扩展吧,有兴趣来阿里试试么

Stinky-Tofu commented 5 years ago

@Stinky-Tofu 了解,我来继续扩展吧,有兴趣来阿里试试么

可以啊,给内推吗?

BowieHsu commented 5 years ago

@Stinky-Tofu 可以内推,你有看好的岗位么

Stinky-Tofu commented 5 years ago

@Stinky-Tofu 可以内推,你有看好的岗位么

请问可以把你的联系方式发我邮箱吗?StinkyTofu95@gmail.com

BowieHsu commented 5 years ago

@Stinky-Tofu 已经发到你邮箱了

BowieHsu commented 5 years ago

@Stinky-Tofu 我已经把multi GPU版本重构跑起来了,现在在双卡p100上batch_size可以跑到24,一张卡上12,针对coco训练和map计算的脚本也都改完了,现在在5000 val数据集上0.5 mAP train到 43%左右

Stinky-Tofu commented 5 years ago

这么低吗?没有在COCO数据集上训过,不太清楚啊。。。

BowieHsu commented 5 years ago

没事,我先多机多卡测一下吧,你原来的版本跑到一定epoch的时候会出现梯度爆炸,改成多卡之后有所缓解

Stinky-Tofu commented 5 years ago

没事,我先多机多卡测一下吧,你原来的版本跑到一定epoch的时候会出现梯度爆炸,改成多卡之后有所缓解

嗯嗯,我的代码仅供参考,不过这些实验数据都是真实的,因为我没在COCO数据集上跑过,所以这些trick可能不在COCO数据集上有效也说不定。

BowieHsu commented 5 years ago

@Stinky-Tofu 我现在还是感觉训练的速度有点慢,我再做一下profile看看热点在什么地方

HochCC commented 5 years ago

@BowieHsu 你好,打扰了。请问后来的试验中mAP有提升么?如果有,是什么原因造成的呢?

BowieHsu commented 5 years ago

@XinjieInformatik 我后来自己写了一个读tfrecord的接口,然后没有做mixup,只用了label smooth和GIOU,训出来的darknet53 yolov3 0.5AP比论文里的高5个点左右

HochCC commented 5 years ago

@BowieHsu 嗯多谢

qiqzhang commented 5 years ago

@BowieHsu 你好,问下后面提高的是单GPU还是多GPU训练的呢?loss降到了多少,还有训练了多久提高5个点呢?谢谢了

jwnirvana commented 4 years ago

@Stinky-Tofu 了解,我来继续扩展吧,有兴趣来阿里试试么

awesome!大神,请问可以release 多gpu code吗?