shikiw / OPERA

[CVPR 2024 Highlight] OPERA: Alleviating Hallucination in Multi-Modal Large Language Models via Over-Trust Penalty and Retrospection-Allocation
MIT License
244 stars 22 forks source link

关于复现POPE的结果问题 #33

Closed 1906200111 closed 1 month ago

1906200111 commented 2 months ago

你好,我尝试使用LLava-v1.5-7b模型复现POPE的Beam-5和greedy,但与论文的值相差很大。 我的beam-5实现方式,按下面注释代码,beam=5;greedy的实现方式按下面注释代码,beam=1。 `out = model.generate( {"image": image, "prompt":qu}, use_nucleus_sampling=args.sample, num_beams=args.beam, max_new_tokens=10, output_attentions=True,

                # opera_decoding=True,
                # scale_factor=args.scale_factor,
                # threshold=args.threshold,
                # num_attn_candidates=args.num_attn_candidates,
                # penalty_weights=args.penalty_weights,
            )`

而且每次运行的值都是一样的,我尝试修改eval_configs/llava-1.5_eval.yaml中的seed,改成其他的值,结果还是一样。 请问我该如何复现beam和greedy的结果呢?

shikiw commented 2 months ago

你好,

这个结果和所选的样本有关,可以参考我们所选的500个sample,放在./log/chair_eval_results。其中包括我们的生成结果,直接测试能得到与论文一致的结果。

1906200111 commented 2 months ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

shikiw commented 2 months ago

不好意思看错了,请问这个差距大吗

同时也建议在LLaVA官方的codebase上跑一下,我记得结果是对上的

itsqyh commented 1 month ago

不好意思看错了,请问这个差距大吗

同时也建议在LLaVA官方的codebase上跑一下,我记得结果是对上的

感谢作者能及时回复我: 您好,我使用LLaVA1.5官方的repo中pope eval code设置temperature=0即greedy,跑出来的结果和llava作者跑出来的几乎一致,计算出llava1.5 7b的F1 average是0.8598,和您论文中的0.822有较大出入,而且居然超过了用上opera的效果(0.854) image 下面是llava-1.5原文的截图,F1 average差不多是是0.859: image

shikiw commented 1 month ago

你好!我看了一下,可能是llava的codebase在1.6出来之后有改动,比如transformers版本。

如果您需要参考opera的pope表现的话,可以参考这边readme里给出的pope得分。

itsqyh commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

1906200111 commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

itsqyh commented 1 month ago

你好,

这个结果和所选的样本有关,可以参考我们所选的500个sample,放在./log/chair_eval_results。其中包括我们的生成结果,直接测试能得到与论文一致的结果。

您好,我在该repo提供的环境下将opera_decoding=False, greedy search得到的chairs是47.2,beam search(beam=5)得到的chairs的50.4,和论文里给出base llava的greedy是45以及beam search是48.8差距较大,然后pope我跑出来beam和greedy都是85.7左右这样的数值,和论文里greedy是82.2也差距较大

itsqyh commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

我试了greedy和beam的pope(opera_decoding = False),F1 AVERAGE 都是85.7左右这个数,但是论文里写greedy是82.2....

itsqyh commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

你这是用了opera嘛还是没用哇

1906200111 commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

你这是用了opera嘛还是没用哇

没用opera,就只有greedy的情况

itsqyh commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

你这是用了opera嘛还是没用哇

没用opera,就只有greedy的情况

你有跑opera_decoding = true的chair和pope嘛,和原文数据相差大吗

1906200111 commented 1 month ago

感谢作者能及时回复我: 我是在POPE评估上,使用LLava-v1.5-7b复现beam-5和greedy的实验结果遇到了问题。

你好,请问你跑出来结果是多少,我在opera_decoding = True/False 的beam和greedy上chair和pope跑出来结果都和论文相差很多,环境用的就是这个repo提供的环境

我用作者的repo环境和代码,LLava-v1.5-7b的greedy的POPE,平均F1是85.62,有点奇怪

你这是用了opera嘛还是没用哇

没用opera,就只有greedy的情况

你有跑opera_decoding = true的chair和pope嘛,和原文数据相差大吗

跑了opera在pope的,这个复现结果和原文差不多。chair还没跑

shikiw commented 1 month ago

你好, 这个结果和所选的样本有关,可以参考我们所选的500个sample,放在./log/chair_eval_results。其中包括我们的生成结果,直接测试能得到与论文一致的结果。

您好,我在该repo提供的环境下将opera_decoding=False, greedy search得到的chairs是47.2,beam search(beam=5)得到的chairs的50.4,和论文里给出base llava的greedy是45以及beam search是48.8差距较大,然后pope我跑出来beam和greedy都是85.7左右这样的数值,和论文里greedy是82.2也差距较大

您好!相关的问题我可能在小红书已回复您,然后这边统一回复一下:

  1. 关于chair的问题,这个确实是比较抖的,而且不同的500sample差异还是挺大的(主要还是当时做的时候sample数不够多),所以我也在代码有个log文件里放了我们随机用的500sample以及生成的caption供参考,这边的点和paper是一致的。其他也有小伙伴复现基本没有出入。

  2. 关于llava pope的话这个问题确实比较尴尬,因为当时是在llava official的codebase下跑的结果(可以看VCD那边结果也是差不多这个数,可能他的情况和我类似),但是可能因为后面在1.6出来后llava作者改动过codebase,包括升级了一些包的版本,所以跑一些benchmark会有一些结果差异,包括我现在重新train的llava1.5在各个bench上也会有差异。还有一点是我repo里是对pope的yes/no判定重新写的,原来是匹配answer中是否有no这个词,我是列了一些否定用词。

BTW: 我这个codebase当时transformers版本是参考minigpt4的,所以和llava1.5原版的不同,他的原来貌似是4.31