BMN算法代码一些解读

1 对于BMN时序点定位算法,原作者知乎解读https://zhuanlan.zhihu.com/p/80333569,对应的官方paddle代码https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/video,对应的pytorch版本https://github.com/JJBOY/BMN-Boundary-Matching-Network
2 本文主要参考pytorch代码
3 首先对data处理,主要以activity-net数据集作为参照,处理是对每个视频先根据tsn提取特征(rgb+光流特征),然后进行线性差值成 100 ∗ 400 100*400 100400(100是对应帧数)。对于data处理,主要是计算gt_iou_map,match_score_start,match_score_end。以不同的起点和长度构建时序特征序列,这里起始点从0到0.99,长度是从0.01到1,构成了 100 ∗ 100 100*100 100100个时序序列,同时构建起始点和结束点anchor(起点从-0.005到0.985,结束点从0.015到1.005,分别对应组成100对anchor,例如第一个anchor从-0.005到0.015就是代表这个时间段)。这样对于时序序列和ground truth的时间序列计算iou得到gt_iou_map;对于gt的起始和结束点会在对应的起始和结束点周围扩展0.03的范围,然后计算构建的起始点和结束点anchor与gt的起始结束点的分别计算ioa(对于这个anchor和gt的ioa就是计算相交部分除以anchor的长度,而不是iou是相交部分除以anchor长度和gt长度之和减去相交部分),进而得到match_score_start, match_score_end。
4 model部分,对输入的特征,首先分别生成是否是起点和结束点的得分,然后计算tem_loss,tem_loss对于输入的gt_start,gt_end 得分大于0.5的属于正样例,然后计算weighted binary logistic regression loss,这一块是temporal evaluation module;然后是proposal evaluation module,对于输入的特征经过boundary matching layer,其实就是对第二步中的时序特征序列计算特征,得到BM特征图。具体做法:同样是从0到100起始,长度从1到101,一共 100 ∗ 100 100*100 100100个序列,但是对于每个序列会扩展一个长度,即假设起始结束是0和100,扩展到-50到150,对应的百分比是-0.5到1.5(对于这个扩展,个人感觉略大,这一段对应gt_iou_map中的0和1),然后在对-0.5到1.5之间进行线性差值得到32个点,然后对每个点去计算特征(计算方法,假设其中一个点是1.6,那个该点的特征就是对应1点的特征 ∗ 0.4 *0.4 0.4+对应2点的特征 ∗ 0.4 *0.4 0.4),以此计算得到每个时序对应的特征,然后得到每个序列的得分。然后计算pem_loss,分成两块,第一块是cls_loss选取gt_iou_map大于0.9的作为正样本,其余负样本然后计算weighted binary logistic regression loss,因为该loss比较小,所以乘以weight=10;第二块reg_loss,选取gt_iou_map大于0.7是正样本,小于0.3负样本,计算weighted mse loss,最终loss是这几类loss相加(这一块和论文中说明不太一样,具体可参考论文)。
5 评价和前向部分,前向部分是对输入的clip段,分别计算start,end,confidence_map,然后对于每个start和end,如果该点得分比前后都要大或者比最大得分的一半大即作为一个候选点,对于所有的候选点进行匹配成对,形成最终的proposal,每个proposal得分是该proposal起始点,结束点,该时间序列对应的分类得分和回归得分,四个得分相乘,最后采用softnms进行proposal后处理;评价指标采用的MAR,计算平均找回率,这里对每个测试视频选取经过softnms之后的前100个proposal,计算在不同iou阈值下recall,最终计算一个平均recall得到MAR@100值75.01%。
6 对于该算法,感觉应用起来超参特别多,实际调参比较麻烦,比如扩展的长度大小,构建起始点结束点的gap大小等。这种是自下而上算法,即通过起始结束点去构造proposal的位置,而不是类似faster rcnn的先设定anchor大小再去回归proposal

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值