代码链接:https:// github.com/MCG-NJU/BCN
论文链接:https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123700035.pdf
训练BCN有两个部分:训练前障碍生成模块(BGM)和联合训练阶段级联(SC)和BGM。首先在分割注释上构造动作边界实值,并用二元分类损失对BGM进行预训练。训练前BGM的目的是在联合训练开始时提供准确的边界预测,由于SC和BGM收敛速度不同,充分优化BGM的参数。然后,只使用帧级分类损失在原始地面事实上联合训练SC和BGM,其中BGM的参数也可以通过后向梯度进行微调,因为LBP是可微的。
下载数据集,数据集链接:https://zenodo.org/record/3625992#.Xiv9jGhKhPY
将数据集放在bcn文件下。
训练前障碍生成模块(BGM)
运行python bgm.py --action train --dataset DS --split SP --resolution full,DS换成相应的数据集,SP通过查看data文件下进行选择。
训练后会得到相应的文件 ,用于后面的训练模块。
从图中可以看到三个输出分别为P,R,f1,它们分别表示帧精度,片段编辑评分和在时间交叉联合(tIoU)阈值0.10,0.25和0.5的片段F1评分,用F1 @{10,25,50}表示。
从代码中可以看到三种评估指标的具体计算:
f1:
f1_score = 2 * (precision / (num_iter + 1)) * (recall / (num_iter + 1)) / ((precision / (num_iter + 1)) + (recall / (num_iter + 1)))
p:precision / (num_iter + 1)
r:recall / (num_iter + 1)
即f1=2*P*R/(P+R)
在不考虑过拟合的情况下f1越高越好。
上图为本论文中给出的结果。