关于评估指标的问题
大佬您好,冒昧打扰。 我看了您做的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}
如果大佬能回复,说明一下这两个评估之间的差异,我将不胜感激!!
抱歉这么晚才回复你,这部分代码来自于CLIP4Clip,所以我也不是很了解这部分代码
https://github.com/ArrowLuo/CLIP4Clip/blob/508ffa3de39ba0563a03199c440ab602a72e9b6f/main_task_retrieval.py#L432-L445‘
为了对齐不同工作的性能,还是建议采用相同的评测代码
好的好的,谢谢大佬的回复
大佬您好, 抱歉再次打扰,可以上传一下MSVD的相关checkpoint吗
抱歉啊,因为已经过去一年了,checkpoint已经被我清理了。MSVD训练很慢,重新训练一个模型也比较麻烦
哦哦,好的,感谢大佬的回复
大佬, 您好,不好意思又打扰您了, 我利用您给的checkpoint在msr-vtt, 在生成阶段的_run_one_gpu里的clip算出来的相似度矩阵取出来,然后也把最终diffusion的相似度矩阵取出来,然后利用compute_metrics进行计算得到的结果如下
按道理来说clip阶段算出来的是第一阶段的相似度矩阵,第二阶段并没有对他们的参数进行更新,所以应该是第一阶段discrimination的结果,第二阶段的结果是diffusion进行的测试,两个生成的过程比较近似,所以我的理解是第一阶段就是生成得到的48.7, diffusion阶段只促进了0.3的提升,希望大佬能给一个解释
大佬, 您好,不好意思又打扰您了, 我利用您给的checkpoint在msr-vtt, 在生成阶段的_run_one_gpu里的clip算出来的相似度矩阵取出来,然后也把最终diffusion的相似度矩阵取出来,然后利用compute_metrics进行计算得到的结果如下
按道理来说clip阶段算出来的是第一阶段的相似度矩阵,第二阶段并没有对他们的参数进行更新,所以应该是第一阶段discrimination的结果,第二阶段的结果是diffusion进行的测试,两个生成的过程比较近似,所以我的理解是第一阶段就是生成得到的48.7, diffusion阶段只促进了0.3的提升,希望大佬能给一个解释
确实如此,但能有提升说明diffusion是有效的,或者可以计算mAP值来更直观感受效果?
你好,我在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
/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
看看是不是dataloader那里出问题了呢,时间隔得有点久,我也有点忘记复现细节了,抱歉
看看是不是 dataloader那里出问题了呢,时间隔得有点久,我也有点忘记复现细节了,抱歉
好的谢谢
你的视频路径出错了,在dataloader里,如果视频路径不存在,则打印这个路径:
https://github.com/jpthu17/DiffusionRet/blob/0316c974de05219bd1aa2bc1ec41479565a4428e/DiffusionRet/dataloaders/dataloader_retrieval.py#L207-L211
由于读取不到视频,进程卡在dataloader里了。
你的视频路径出错了,在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利用率很低,应该不是显卡的问题。
检查一下内存利用率,可能是内存满了
我把这个issue关了,如果后续还有问题可以新开issue问作者大佬
按道理来说clip阶段算出来的是第一阶段的相似度矩阵,第二阶段并没有对他们的参数进行更新,所以应该是第一阶段discrimination的结果,第二阶段的结果是diffusion进行的测试,两个生成的过程比较近似,所以我的理解是第一阶段就是生成得到的48.7, diffusion阶段只促进了0.3的提升,希望大佬能给一个解释