CircleLoss icon indicating copy to clipboard operation
CircleLoss copied to clipboard

我使用了该loss,但在行人reid任务上,最终的性能很难达到作者公布的结果,请问作者有复现出这个结果吗?

Open qiguming opened this issue 4 years ago • 27 comments

qiguming avatar Apr 08 '20 08:04 qiguming

并没有在re-id上测试过,你与采用相同的设定与代码的其他loss比较过吗?复现结果需要考虑很多细节

TinyZeaMays avatar Apr 08 '20 09:04 TinyZeaMays

对比过triplet+softmax,在相同设定的情况下,circle loss不如前者。 @TinyZeaMays

qiguming avatar Apr 08 '20 09:04 qiguming

如果用了softmax的话,是否有对embedding进行归一化?不好意思,没有进行过re-id相关研究

TinyZeaMays avatar Apr 08 '20 09:04 TinyZeaMays

hi, @TinyZeaMays @qiguming 可以给我看下你们的loss下降情况吗?mnist是可以的,但我在人脸数据集上测试了一下,发现loss下降很慢,而且从测试结果来看pair_acc=0.5,网络没有收敛。

anorthman avatar Apr 09 '20 03:04 anorthman

我利用“circle_loss.py”也是训练人脸,loss都没有收敛,一直处于震荡,请问这是什么原因?

yang0817manman avatar Apr 09 '20 03:04 yang0817manman

没有测试过人脸的情况,我猜测问题出在类别数比较多,因此随机batch内正样本对比较少,在实际使用时,可能不能采用随机的sampler构造batch,并未在论文中阅读到batch size与batch设计的tricks

TinyZeaMays avatar Apr 09 '20 03:04 TinyZeaMays

hi, @TinyZeaMays @qiguming 可以给我看下你们的loss下降情况吗?mnist是可以的,但我在人脸数据集上测试了一下,发现loss下降很慢,而且从测试结果来看pair_acc=0.5,网络没有收敛。 loss_c lr r1

上图分别是circle loss和学习率和rank1精度(超低),我是在reid上的结果。

qiguming avatar Apr 09 '20 03:04 qiguming

在声纹识别的分类训练任务上,我用的是我自己实现的circle loss, gamma=64, m=0.3, 之前的训练收敛速度不是很理想,但是使用cos annealing lr schedule以及balanced data sampler似乎可以加快收敛。目前结果还未出来,完成实验我来贴一下结果

nemoramo avatar Apr 10 '20 07:04 nemoramo

在声纹识别的分类训练任务上,我用的是我自己实现的circle loss, gamma=64, m=0.3, 之前的训练收敛速度不是很理想,但是使用cos annealing lr schedule以及balanced data sampler似乎可以加快收敛。目前结果还未出来,完成实验我来贴一下结果

您好,您现在有结果了吗?我也是声纹识别的任务,也发现我的模型很快就不收敛了,并且结果也很差,我感觉这里的min-batch的设置也很重要,我目前batch_size=32*8=256

weiju-ustc avatar Apr 21 '20 12:04 weiju-ustc

我利用“circle_loss.py”也是训练人脸,loss都没有收敛,一直处于震荡,请问这是什么原因?

文章中的人脸实验都是用class-level label的。这个“circle_loss.py”实现的是pair-wise label版本

Ben-Louis avatar Apr 22 '20 09:04 Ben-Louis

是的,人脸识别和reid都是基于class-level label,可以看看这个tensorflow的实现https://github.com/zhen8838/Circle-Loss/blob/master/circle_loss.py

anorthman avatar Apr 23 '20 10:04 anorthman

我尝试用自己的数据基于res34训练,并且将类别减小到10,acc依然很低

willxian avatar Apr 23 '20 11:04 willxian

Screenshot - 2020年04月24日 - 10时37分09秒 Screenshot - 2020年04月24日 - 10时36分37秒 facedataset:10001id,50Wimgs,bs512 class-level label https://github.com/anorthman/CircleLoss

anorthman avatar Apr 24 '20 02:04 anorthman

Hi, everyone, I have reproduced circle loss in Market1501, please refer https://github.com/JDAI-CV/fast-reid/issues/41

L1aoXingyu avatar Apr 24 '20 03:04 L1aoXingyu

@L1aoXingyu Hi,我用了你实现的circle loss代码,在Cityflow数据集上暴打Arcface 2%-3%,感谢大神!不过感觉好像和原作者说的还是不太一样,譬如market1501上也复现不了

Xiangyu-CAS avatar Apr 24 '20 13:04 Xiangyu-CAS

@Xiangyu-CAS 你需要按照我的训练配置才可以复现 market1501 结果,这个loss对 batch 很敏感

L1aoXingyu avatar Apr 24 '20 14:04 L1aoXingyu

@L1aoXingyu 我觉得84%这个结果也不能叫复现吧,直接用softmax都能训到84% mAP,更何况freeze feature这个本身就会带来提升...这个形式的loss包括arcface在market上都是崩的,不知道为什么

Xiangyu-CAS avatar Apr 27 '20 13:04 Xiangyu-CAS

image paper 里面不是 84.9 吗,我跑出来 84.6 我觉得已经在误差范围内了。

L1aoXingyu avatar Apr 27 '20 16:04 L1aoXingyu

记混了...我之前看sun yifan一直在一个群里发86.4%的结果....那确实算是复现了

Xiangyu-CAS avatar Apr 27 '20 16:04 Xiangyu-CAS

把 size 改成 384x128,mAP 能跑到 86.4 左右

L1aoXingyu avatar Apr 27 '20 16:04 L1aoXingyu

我用P=16, N=4,m=0.35,s=64,resnet+circle loss在market1501上能跑到86.1%了,256*128分辨率下,我在cityflow上用的也是这组参数,所以感觉circle loss适合cls比较少的情况?

Xiangyu-CAS avatar Apr 27 '20 17:04 Xiangyu-CAS

是的,我也做了实验,batch 里面 id 少一些会好,每个 id 的图片多一些会好,我猜测是每个 id 图片多了可以尽可能多地覆盖所有的 camera,让类内更 compact,另外就是 id 多了可能不太好优化

L1aoXingyu avatar Apr 28 '20 01:04 L1aoXingyu

您好,我问下您在

loss = self.soft_plus(torch.logsumexp(logit_n, dim=0) + torch.logsumexp(logit_p, dim=0))

这一行代码写的loss函数,是不是和原文函数不太一样啊?

mistake

原文中log中还要再加上1吖?是我理解错了么 @TinyZeaMays

Zhang-haotian avatar May 10 '20 18:05 Zhang-haotian

您好,我问下您在

loss = self.soft_plus(torch.logsumexp(logit_n, dim=0) + torch.logsumexp(logit_p, dim=0))

这一行代码写的loss函数,是不是和原文函数不太一样啊?

mistake

原文中log中还要再加上1吖?是我理解错了么 @TinyZeaMays

nn.SoftPlus() = log(1 + e ^ x)

xialuxi avatar May 11 '20 08:05 xialuxi

您好,我问下您在 loss = self.soft_plus(torch.logsumexp(logit_n, dim=0) + torch.logsumexp(logit_p, dim=0)) 这一行代码写的loss函数,是不是和原文函数不太一样啊? mistake 原文中log中还要再加上1吖?是我理解错了么 @TinyZeaMays

e的0次方等于1,自己看看代码。

好的,感谢🙇‍

Zhang-haotian avatar May 11 '20 10:05 Zhang-haotian

人脸识别可以参考我的实现,欢迎大家指正: https://github.com/xialuxi/CircleLoss_Face/blob/master/CircleLoss.py

xialuxi avatar May 13 '20 14:05 xialuxi

在声纹识别的分类训练任务上,我用的是我自己实现的circle loss, gamma=64, m=0.3, 之前的训练收敛速度不是很理想,但是使用cos annealing lr schedule以及balanced data sampler似乎可以加快收敛。目前结果还未出来,完成实验我来贴一下结果

您好!您现在的结果怎么样?有效果么?

shz0519 avatar Jun 16 '20 11:06 shz0519