XCLIP代码链接:GitHub - microsoft/VideoX: VideoX: a collection of video cross-modal models
1、关于数据处理:
按照readme.md
说明:
将所有视频文件都放在同一个文件夹中 ,也可以是一个zip/tar压缩文件
train.txt和test.txt按照一定比例划分,并且视频的类别一定要从0开始
---------------------------------------------------------------------------------------------------------------------------------
说明:除了准备视频文件, train.txt和test.txt之外,还需要准备一个.csv文件用于描述每个类别具体指代哪个情形
重点说明:id一定要从0开始
--------------------------------------------------------------------------------------------------------------------
报错:
File "/home/xxxxxx/xxxx/X-CLIP/datasets/blending.py", line 11, in one_hot assert (x >= 0).all() and (x < num_classes).all(), "Index out of bounds in scatter operation" AssertionError: Index out of bounds in scatter operation
错误原因:
根据报错信息,断言失败了,说明 x
中有元素的值不在 [0, num_classes)
的范围内。这可能是因为数据在某些情况下包含了非法索引。排查这个问题的原因,并确保 x
的值总是在合法范围内。
找到one_hot assert (x >= 0).all() and (x < num_classes).all()所在的行,在这行前面增加打印信息:
def one_hot(x, num_classes, on_value=1., off_value=0., device='cuda'):
x = x.long().view(-1, 1)
print(f"x: {x}")
print(f"num_classes: {num_classes}")
print(f"x.min(): {x.min()}, x.max(): {x.max()}")
assert (x >= 0).all() and (x < num_classes).all(), "Index out of bounds in scatter operation"
return torch.full((x.size()[0], num_classes), off_value, device=device).scatter_(1, x, on_value)
打印出结果:
标签越界了,查看后发现.csv中id是从1开始的,并且txt文件中的标签也是从1开始的,更改后,运行成功
-----------------------------------------------------------------------------------------------------------------------