DiffusionRet icon indicating copy to clipboard operation
DiffusionRet copied to clipboard

关于评估指标的问题

Open yiranxie233 opened this issue 1 year ago • 6 comments

大佬您好,冒昧打扰。 我看了您做的diffusionret的工作,思路非常的好, 在对评测指标里面我对里面的代码比较疑惑, 在进行msvd数据集技能型评估时, 在main_retrieval的595行sim_matrix = new_t2vmatrix这里,为什么这里不直接采用 indices = torch.argsort(sim_matrix , dim=1, descending=True) 这种方式直接取求它们的rank,而是采用了按照每个视频对应的文本的定位的地方进行切分, 然后利用了一个函数tensor_text_to_video_metrics,函数里面的就看的不是很理解了。 这里我直接使用sim_matrix进行衡量,利用了里面的cut_off_points, 我把sim_matrix的tensor和利用的函数存了起来

q_ids = []
g_ids = []
k = 0
for idx, i in enumerate(cut_off):
    if idx == 0:
        for j in range(i+1):
            q_ids.append(k)
            j += 1
            
    else:
        for j in range(i - cut_off[idx-1]):
            q_ids.append(k)
            j += 1
    k += 1
    g_ids.append(idx)

g_ids = torch.tensor(g_ids)
q_ids = torch.tensor(q_ids)


indices = torch.argsort(sim_mitr, dim=1, descending=True)

pred_labels = g_ids[indices.cpu()]  # q * k
matches = pred_labels.eq(q_ids.view(-1, 1))  # q * k

all_cmc = matches[:, :10].cumsum(1) # cumulative sum
all_cmc[all_cmc > 1] = 1
all_cmc = all_cmc.float().mean(0) * 100
print(all_cmc)

这是结果,下面是利用函数求出的结果:

## 自己修改的
tensor([31.0773, 42.8160, 49.8073, 54.6807, 58.0845, 61.1641, 63.6170, 65.5621,
        67.1613, 68.6525])

## 原代码中求得
{'R1': 30.448095321655273, 'R5': 56.901519775390625, 'R10': 67.25740051269531, 'R50': 85.40090942382812, 'MedianR': 4.0, 'MeanR': 35.03951444420431, 'Std_Rank': 90.75078858220705, 'MR': 4.0}

如果大佬能回复,说明一下这两个评估之间的差异,我将不胜感激!!

yiranxie233 avatar Aug 25 '24 07:08 yiranxie233

抱歉这么晚才回复你,这部分代码来自于CLIP4Clip,所以我也不是很了解这部分代码

https://github.com/ArrowLuo/CLIP4Clip/blob/508ffa3de39ba0563a03199c440ab602a72e9b6f/main_task_retrieval.py#L432-L445‘

为了对齐不同工作的性能,还是建议采用相同的评测代码

jpthu17 avatar Aug 27 '24 02:08 jpthu17

好的好的,谢谢大佬的回复

yiranxie233 avatar Aug 27 '24 03:08 yiranxie233

大佬您好, 抱歉再次打扰,可以上传一下MSVD的相关checkpoint吗

yiranxie233 avatar Sep 11 '24 13:09 yiranxie233

抱歉啊,因为已经过去一年了,checkpoint已经被我清理了。MSVD训练很慢,重新训练一个模型也比较麻烦

jpthu17 avatar Sep 12 '24 06:09 jpthu17

哦哦,好的,感谢大佬的回复

yiranxie233 avatar Sep 12 '24 09:09 yiranxie233

大佬, 您好,不好意思又打扰您了, 我利用您给的checkpoint在msr-vtt, 在生成阶段的_run_one_gpu里的clip算出来的相似度矩阵取出来,然后也把最终diffusion的相似度矩阵取出来,然后利用compute_metrics进行计算得到的结果如下 image 按道理来说clip阶段算出来的是第一阶段的相似度矩阵,第二阶段并没有对他们的参数进行更新,所以应该是第一阶段discrimination的结果,第二阶段的结果是diffusion进行的测试,两个生成的过程比较近似,所以我的理解是第一阶段就是生成得到的48.7, diffusion阶段只促进了0.3的提升,希望大佬能给一个解释

yiranxie233 avatar Sep 13 '24 08:09 yiranxie233

大佬, 您好,不好意思又打扰您了, 我利用您给的checkpoint在msr-vtt, 在生成阶段的_run_one_gpu里的clip算出来的相似度矩阵取出来,然后也把最终diffusion的相似度矩阵取出来,然后利用compute_metrics进行计算得到的结果如下 image 按道理来说clip阶段算出来的是第一阶段的相似度矩阵,第二阶段并没有对他们的参数进行更新,所以应该是第一阶段discrimination的结果,第二阶段的结果是diffusion进行的测试,两个生成的过程比较近似,所以我的理解是第一阶段就是生成得到的48.7, diffusion阶段只促进了0.3的提升,希望大佬能给一个解释

确实如此,但能有提升说明diffusion是有效的,或者可以计算mAP值来更直观感受效果?

knif-knif avatar Oct 22 '24 15:10 knif-knif

你好,我在MSR-VTT上进行Eval的时候一直卡住是什么原因,而且gpu利用率极低,希望可以帮忙解答一下,谢谢 (DiffusionRet) brccq@lab:~/DiffusionRet$ CUDA_VISIBLE_DEVICES=1 python -m torch.distributed.launch --master_port 33000 --nproc_per_node=1 eval.py --workers 8 --batch_size_val 128 --anno_path data/MSR-VTT/anns --video_path /home/brccq/DiffusionRet/data/MSR-VTT/Vide os --数据类型 msrvtt --max_words 32 --max_frames 12 --video_framerate 1 --diffusion_steps 50 --noise_schedule cosine --init_model/home/brccq/DiffusionRet/checkpiont/msrvtt.bin --output_dir /home/brccq/DiffusionRet/output_dir /home/brccq/miniconda3/envs/DiffusionRet/lib/python3.9/site-packages/timm/models/layers/init.py:48: 未来警告:从 timm.models.layers 导入已弃用,请通过 timm.layers 导入 warnings.warn(f“从 {name} 导入已弃用,请通过 timm.layers 导入”, FutureWarning”) [2024-11-25 15:] 10:01,310 tvr 111 INFO]: local_rank: 0 world_size: 1 [2024-11-25 15:10:01,310 tvr 118 INFO]: 有效参数: [2024-11-25 15:10:01,310 tvr 120 INFO]: <<< agg_module: seqTransf [2024-11-25 15:10:01,310 tvr 120 INFO]: <<< anno_path: data/MSR-VTT/anns [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< base_encoder: ViT-B/32 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< batch_size:128 [2024-11-25 15:10:01,311 tvr 120 信息]:<<< batch_size_val:128 [2024-11-25 15:10:01,311 tvr 120 信息]:<<< d_temp:100 [2024-11-25 15:10:01,311 tvr 120 信息]:<<<数据类型:msrvtt [2024-11-25 15:10:01,311 tvr 120 信息]:<<<设备:cuda:0 [2024-11-25 15:10:01,311 tvr 120 信息]:<<< diffusion_steps: 50 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< 已分发: 0 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< epochs: 5 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< init_model: /home/brccq/DiffusionRet/checkpiont/msrvtt.bin [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< interaction: wti [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< local_rank: 0 [2024-11-25 15:] 10:01,311 tvr 120 信息]: <<< max_frames:12 [2024-11-25 15:10:01,311 tvr 120 信息]: <<< max_words:32 [2024-11-25 15:10:01,311 tvr 120 信息]: <<< 负: 0 [2024-11-25 15:10:01,311 tvr 120 信息]: <<< noise_schedule: 余弦 [2024-11-25 15:10:01,311 tvr 120 信息]: <<< num: 127 [2024-11-25 15:10:01,311 tvr 120 信息]: <<< num_hidden_layers:4 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< output_dir: /home/brccq/DiffusionRet/output_dir [2024-11-25 15:10:01,311 tvr 120 INFO]: <<<种子: 42 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< sigma_small: True [2024-11-25 15:10:01,311 tvr 120 INFO]: <<<阶段: 一代 [2024-11-25 15:10:01,311 tvr 120 INFO]: <<< t2v_alpha:1 [2024-11-25 15:10:01,311 TVR 120 信息]:<<< t2v_num:32 [2024-11-25 15:10:01,311 TVR 120 信息]:<<< t2v_temp:1 [2024-11-25 15:10:01,312 TVR 120 信息]:<<<温度:1 [2024-11-25 15:10:01,312 TVR 120 信息]:<<< v2t_alpha:1 [2024-11-25 15:10:01,312 tvr 120 信息]:<<< v2t_num:32 [2024-11-25 15:10:01,312 tvr 120 信息]:<<< v2t_temp:1 [2024-11-25 15:10:01,312 tvr 120 信息]:<<< video_framerate:1 [2024-11-25 15:10:01,312 tvr 120 信息]:<<< video_path:/home/brccq/DiffusionRet/data/MSR-VTT/Videos [2024-11-25 15:10:01,312 tvr 120 信息]:<<<工作者: 8 [2024-11-25 15:] 10:01,312 tvr 120 INFO]: <<< world_size: 1 [val] 唯一句子为 995 ,所有数字为 1000 视频编号:1000 总对数:1000 [2024-11-25 15:10:13,190 tvr 160 INFO]: ***** 运行测试 ***** [2024-11-25 15:10:13,190 tvr 161 INFO]: 示例数 = 1000 [2024-11-25 15:10:13,190 tvr 162 INFO]: 批量大小 = 128 [2024-11-25 15:10:13,190 tvr 163 INFO]: 步骤数 = 8 [2024-11-25 15:10:13,190 tvr 164 INFO]:***** 运行 val ***** [2024-11-25 15:10:13,190 tvr 165 INFO]:示例数 = 1000 [2024-11-25 15:10:13,195 tvr 376 INFO]:[开始] 提取文本 + 视频特征 0%| |0/8 [00:00<?, ?it/s]/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7701.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7701.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8268.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8268.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8446.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8446.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8664.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video8664.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7793.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7793.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/视频/video7366.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7366.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video9813.mp4

/home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4 /home/brccq/DiffusionRet/data/MSR-VTT/Videos/video7333.mp4

brccqs avatar Nov 28 '24 07:11 brccqs

看看是不是dataloader那里出问题了呢,时间隔得有点久,我也有点忘记复现细节了,抱歉

yiranxie233 avatar Nov 28 '24 13:11 yiranxie233

看看是不是 dataloader那里出问题了呢,时间隔得有点久,我也有点忘记复现细节了,抱歉

好的谢谢

brccqs avatar Nov 28 '24 14:11 brccqs

你的视频路径出错了,在dataloader里,如果视频路径不存在,则打印这个路径:

https://github.com/jpthu17/DiffusionRet/blob/0316c974de05219bd1aa2bc1ec41479565a4428e/DiffusionRet/dataloaders/dataloader_retrieval.py#L207-L211

由于读取不到视频,进程卡在dataloader里了。

jpthu17 avatar Nov 28 '24 14:11 jpthu17

你的视频路径出错了,在dataloader里,如果视频路径不存在,则打印这个路径:

https://github.com/jpthu17/DiffusionRet/blob/0316c974de05219bd1aa2bc1ec41479565a4428e/DiffusionRet/dataloaders/dataloader_retrieval.py#L207-L211

由于读取不到视频,进程卡在dataloader里了。

好像不是这个问题,因为他既没有进行打印也没报错, if exists(video_path): vreader = VideoReader(video_path, ctx=cpu(0)) else: print(video_path) print("file not found") raise FileNotFoundError 我也试着加了个打印文件错误,但是没有执行这一行,然后就是看似在运行但是每次就运行一部分,后面就半天不动了,不知道什么原因。而且gpu利用率很低,应该不是显卡的问题。

brccqs avatar Nov 28 '24 14:11 brccqs

检查一下内存利用率,可能是内存满了

jpthu17 avatar Nov 28 '24 15:11 jpthu17

我把这个issue关了,如果后续还有问题可以新开issue问作者大佬

yiranxie233 avatar Nov 29 '24 07:11 yiranxie233