guanghuixu / AnchorCaptioner

Other
32 stars 10 forks source link

多条描述生成 #15

Closed PAradoxLG closed 1 year ago

PAradoxLG commented 1 year ago

@guanghuixu 非常感谢您之前的建议,我按照之前你的第二条方案选择不同的锚点并运行多次模型,但是每次的结果并没有什么差别,下面是我的运行命令与修改过的代码 python tools/run.py --tasks captioning --datasets m4c_textcaps --model m4c_captioner --config configs/captioning/m4c_textcaps/m4c_captioner.yml --save_dir save/m4c_captioner --run_type val --evalai_inference 1 --resume_file /home/test_1/AnchorCaptioner/save/m4c_captioner/m4c_textcaps_m4c_captioner_2021/best.ckpt image

guanghuixu commented 1 year ago

检查下不同的achor生成的anchor graph是不是一样的 如果anchor graph一致,会导致生成结果差不多

guanghuixu commented 1 year ago

如果更加侧重多样性,可以提前对OCR进行随机分组 比如一张图片中有20个OCR token 可以将1-5归为一组,6-10归为第二组... 对每一组里面的token,选anchor,然后构造anchor-graph 这样可以保证每一组的anchor-graph肯定是不同的,生成的结果自然会不同

guanghuixu commented 1 year ago

注意上面说的随机分组,这个修改仅限测试阶段,不用改变训练过程 基于你训练的checkpoint来推理即可

PAradoxLG commented 1 year ago

非常感谢您的回复,我的确并没有改变训练阶段,我只在测试阶段调整了您的代码,但无论我如何修改选取的anchor,结果都没有变化。

PAradoxLG commented 1 year ago

我使用sort函数排序后,通过选取不同的sort_scores_index选择anchor,sort_scores_index==0时与您的argmax是等效的,而sort_scores_index==49时应该是得分最小的anchor,为什么也会得到相同的结果呢。

guanghuixu commented 1 year ago

试试随机分组 不要让第一组的OCR跟第二组的OCR交互 不然训练到后期收敛的模型,会倾向于给同一个anchor-graph 举个例子 人工标注的5条caption中,一共提到了a,b,c三个OCR 不管选择abc中的任何一个作为anchor,出来的anchor-graph都是a-b-c

测试阶段随机分组,要求模型只能选择同一组内的token来构建anchor-graph,这样可以保证anchor-graph的多样性

PAradoxLG commented 1 year ago

那我是需要修改哪一部分的代码呢?数据嵌入的部分还是?

guanghuixu commented 1 year ago

改数据部分应该是最简单的

PAradoxLG commented 1 year ago

好的,我会尝试您的建议。再次感谢您的回复。

guanghuixu commented 1 year ago

突然想起来,这些OCR token本身就是乱序的 1-5为一组,6-10为一组就应该可以了 那你直接在ocr embeding上乘一个zero mask,这样就可以直接屏蔽不同组OCR tokens 这个实现应该更简单

PAradoxLG commented 1 year ago

您是说下面的的这部分代码吗 image

guanghuixu commented 1 year ago

改这里也可以吧,你试试

我本来是打算让你随便在某个位置将OCR embdding置空 比如 f_ocr [N, 50, 768] 你生成个全0初始化的mask  [N, 50, 1] 然后将前5个复制为1,mask[:,:5, 1]=1 f_ocr = f_ocr * mask 这样就能保证不同组的OCR不交互

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年5月25日(星期四) 下午5:54 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [guanghuixu/AnchorCaptioner] 多条描述生成 (Issue #15)

您是说下面的的这部分代码吗

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

PAradoxLG commented 1 year ago

非常感谢你的建议,在多次试验后,的确产生了非常不同的描述,结果令人惊喜。再次感谢您的回复,祝您一切安好