SDret / Pedestrian-Attribute-Recognition-as-Label-balanced-Multi-label-Learning

Official pytorch implementation of the ICML2024 main conference paper: Pedestrian Attribute Recognition as Label-balanced Multi-label Learning
9 stars 0 forks source link

复现过程疑问 #2

Open 15552664582 opened 2 months ago

15552664582 commented 2 months ago

您好,在复现过程的第一步骤中,我将rethinking的分类器改成了,您代码中的分类器(有separte和logits两层),并且取消了loss的加权(label_ratio变量),以获得一个baseline权重文件,但是在PA100K上,此时mA只有74左右,请问我哪里有些操作不当?

SDret commented 2 months ago

您好,如果您严格按照上面的方式在更改baseline模型的结构,并且确保过程无误,那么最后的mA应该是在80左右。建议分成两步控制变量来去排错:1.不更改模型结构,只去除了weighted BCE,这样mA会下降2-3 2.在这个基础上,再加入分类器的新设置(会提高1-2mA)

15552664582 commented 2 months ago

您好,如果您严格按照上面的方式在更改模型结构,并且确保过程无误,那么最后的mA应该是在80左右。建议拆分两步控制变量来去排错:1.不更改模型结构,只去除了加权BCE,这样mA会下降2-3 2.在这个基础上,再加入分类器的新设置(会提高1-2mA)

您好,首先感谢您的回答,我按照您说的拆分步骤更改模型结构,在resnet50和convnext两个主干网络上,指标都有相似的走势,且第一阶段最后的mA都在80左右,而当我按照readme(替换rethinking中的文件)进行第二阶段复现时,结果却不尽人意,从mA上看,resnet50仅从79+上升至82,convnext仅从80+上升至86.5,且F1都会下降至85左右,不知道哪里有什么不妥当。

SDret commented 1 month ago

你好,你这里具体的问题我不清楚,但是我提交的code文件看起来是没有问题的,因为在另外一个issue poster里,其他的研究者已经复现出来了实验结果,你也可以参考我给他的建议去进行bug排查(建议首先关闭GOAT的所有代码块,仅仅只去跑FRDL,这个是比较简单的所以好排查bug,仅仅使用FRDL在convnext上就能够达到88.5的mA)。如果FRDL可以确保复现,那再加入GOAT

15552664582 commented 1 month ago

好的感谢,我再排查一下代码中的问题

SDret commented 1 month ago

好的,我再补充几点: 1.我上面说的都是在pa100k上的指标 2.resnet-50 at stage#1 mA ~80.5, at FRDL mA~84.5-85, at FRDL+GOAT: 85.5-86,请以这个为标准确保自己复现成功 3.F1确实是会下降1%左右的,这个是因为F1相比mA并不是一个0-1 label之间对称的metric,这就导致了我们用label仍然不平衡的测试集去测试一个平衡化方法会带来由于preicison下降产生的F1降低。对这个问题,在长尾问题中的解决方法是,在imbalanced数据集上训练,然后在balanced测试集上去测试(类似于imagenet-LT)。但是由于标签共现的问题,在par中我们没有办法直接组织一个不平衡度可控的测试集,这个测试问题的进一步的解决方法我们会在后续的工作中解决

15552664582 commented 1 month ago

好的

15552664582 commented 1 month ago

还有一个问题,在二阶段中,超过某个轮次时,会执行classifier.attri_Q.fullfill() 这个函数,这个函数是什么作用,其中显示 “0 attributes are fullfilled!”,属于正常情况嘛

SDret commented 1 month ago

如果你提前了balanced learning的步数,或者更换了数据集,那么有可能出现的情况是balanced learning开始的时候部分少数属性的memory bank还没有装满,所以通过repeat操作对这些没装满的bank进行补充