时序动作检测《BSN: Boundary Sensitive Network for Temporal Action Proposal Generation》
温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!
时序行为检测
两段式目标检测方法如Faster RCNN先使用RPN网络生成proposal,然后再使用Fast RCNN网络对proposal进行精炼,得到更加准确的结果。两段式时序行为检测方法跟两段式目标检测方法类似,先生成时序行为的proposal候选片段,然后再使用时序动作识别方法对proposal进行行为分类。所以生成的proposal的准确性严重影响时序行为检测的性能,高质量的proposal应该具备两个重要属性:
1、proposal对于GT的召回率和重合度要足够高
2、在实现高的召回率和重合度的前提下,使用的proposal要足够少
一个高质量的proposal方法应该能够灵活的生成不同时序长度,且边界准确的proposal,同时给出proposal中包含动作行为的置信度,这和Faster RCNN网络中的RPN思想基本一致。
BSN使用local to global局部到全局的方式生成高质量的proposal,首先通过局部连接的方式组合具有高置信度的开始和结束位置,构成可能的proposal,然后使用proposal-level特征全局检索过滤高置信度的proposal,BSN算法一共有三步:
Step 1:BSN在视频片段的每个时间位置都预测输出当前时间点属于一个动作的开始概率、结束概率,以及当前时间点属于某个动作的概率,生成一个
Step 2:使用自下而上的方式直接组合具有高预测概率值的开始点(如下图中红色实线的2个峰值点)和结束点(如下图中蓝色虚线的1个峰值点),从而可以生成不同长度不同边界准确性的proposal(如下图中2个开始点和1个结束点组成2个可能的proposal)。
Step 3:BSN利用proposal内部和周围的action prob组成的特征,通过评估proposal是否包含action的置信度来进一步从step 2的输出结果中检索具有高置信度的proposal。这些proposal-level的特征为更好的评估提供了全局信息
问题定义
视频定义:
其中,![20210723194427408.png][]表示视频中的某一帧,![20210723194427415.png][]表示视频的总帧数。
视频action的GT标签定义:
其中![20210723194536131.png][]表示视频中的一个动作片段,![20210723194536133.png][]分别表示动作片段的开始位置和结束位置,![20210723194536132.png][]表示视频中包含的标注动作GT的数量。
不同于时序动作识别和时序动作检测任务,时序动作proposal生成方法并不关注生成的proposal中的具体action类别,只关注proposal中是否包含action,所以是一个二分类问题,和Faster RCNN的RPN模块类似,RPN只识别出可能包含目标物体的区域,然后丢给下一级网络去进一步确定目标物体的类别以及目标的准确位置。
视频特征提取
BSN算法中使用Two-Stream双流网络提取视频特征,双流网络一路提取图像的空间特征,一路提取光流的时序运动特征。在视频片段的每个位置提取图像特征和光流特征,表示如下:
其中,![20210723194645755.png][]表示视频中的第 t 帧图像,![20210723194645757.png][]表示以视频第 t 帧图像为中心的连续图像计算的光流,然后将![20210723194645761.png][]和![20210723194645763.png][]分别输入到Two-stream双流网络提取特征,然后将双流网络的两路输出特征进行concat融合得到![20210723194730961.png][]。对视频的每个时间位置都计算得到![20210723194645769.png][]和![20210723194645768.png][],并提取特征![20210723194645771.png][],从而得到视频的时序特征![20210723194645774.png][],BSN算法在进行视频特征提取时,为了降低计算量,采用步长为![20210723194809737.png][]的间隔采样,所以采样的特征序列总帧数为![20210723194645776.png][]。在视频特征提取方面,BSN算法和上一篇中讲到的SSAD算法有较大区别,具体参见上一篇博客。
BSN**算法主要模块**
Temporal Evaluation Module**(TEM)**
TEM是一个三层的时序卷积网络,网络的输入是上一步视频特征编码中使用双流网络提取的时序特征,然后TEM预测输入的时序特征每个时序位置是一个动作开始点的概率,结束点的概率,以及这个时序位置属于一个动作的概率,从而输出starting开始点的时序概率,ending结束点的时序概率,以及每个点是否属于一个动作的时序概率,starting、ending以及action的概率预测都是二分类问题。网络结构是*Conv*(512*;* 3*; Relu*) ->*Conv*(512*;* 3*; Relu*) *->* *Conv*(3*;* 1*; Sigmoid*),最终输出3通道表示计算3个概率值。
TEM输出的三个概率序列表示如下:
Proposal Generation Module**(PGM)**
PGM组合TEM模块输出的具有高置信度概率值的starting开始点和ending结束点,生成可能的proposal片段,然后基于各个proposal中各个时间序列位置的动作概率构造BSP特征。
筛选开始时间和结束时间点:
根据starting序列概率选择开始时间点:选择![20210723195013732.png][]的点或者峰值点![20210723195013733.png][](比两边都大的凸起点)。Ending时间点采用同样的方式选择。
构造候选**proposal**:
将上一步选择出的开始时间点和结束时间点进行两两组合,并且组合的![20210723195052858.png][]时间点满足设置的视频最大和最小长度参数,![20210723195052861.png][]。其中![20210723195121820.png][]是训练集中标注的动作GT的最大和最小长度大小。
候选**proposal**特征提取:
上一步提取的候选proposal表示为![20210723195228252.png][],将![20210723195228251.png][]之间的片段定义为中间区域![20210723195228253.png][],将以![20210723195228260.png][]为中心的![20210723195228261.png][]片段定义为![20210723195228263.png][],将以![20210723195228271.png][]为中心的![2021072319531891.png][]片段定义为![20210723195228273.png][]。在![20210723195228270.png][]片段内的动作概率序列![20210723195228272.png][]上采用线型插值方式均匀采样16个特征点得到![20210723195228284.png][],在![20210723195228286.png][]和![20210723195228288.png][]片段内的动作概率序列![20210723195228290.png][]上采用线型插值方式分别均匀采样8个特征点得到![20210723195228294.png][]和![20210723195228295.png][]。将采样的特征点进行concat得到这个proposal的BSP特征![20210723195409431.png][]。
Porposal Evaluation Module**(PEM)**
PEM使用多层感知机(多个全连接层)对PGM中每个候选proposal提取的BSP特征进行处理,得到候选proposal与GT的重合置信度。到目前为止,一个候选proposal就可以被表示为下式:
其中,![20210723195455197.png][]表示这个proposal的开始位置和结束位置,![20210723195455200.png][]表示这个proposal开始和结束位置的概率置信度,![20210723195455202.png][]表示这个proposal与GT的重合置信度。在模型预测阶段,使用这些置信度来共同决定模型的预测输出结果。
模型训练
Temporal Evaluation Module**(TEM)训练**
训练数据构造:
在特征序列上F使用长度为![20210723195552439.png][]的不重叠滑窗,窗口表示为![20210723195552440.png][]。![20210723195552443.png][]是窗口内的特征序列,![20210723195552445.png][]是窗口内的GroundTruth实例,每个GT实例表示为![20210723195552449.png][],![20210723195552450.png][]表示GT实例的开始位置和结束位置。定义GT开始位置区域、结束位置区域以及动作实例区域如下:
对于窗口内的序列特征![20210723195804930.png][],TEM网络输出每个序列位置![20210723195820181.png][]的开始概率、结束概率、动作概率,定义序列位置![20210723195804935.png][]的区域表示如下:
![20210808164935664.png][] 是![2021080816492564.png][] 特征序列中连续两个snippet在原始视频帧上的时序间隔,这个时序间隔我理解就是提取视频特征时使用的采样间隔![20210808164924844.png][] 。分别计算每个![2021080817045374.png][] 与所有![20210808170508150.png][] 的IoP比率的最大值得到![20210808170435264.png][] 作为监督信号,IoP定义为snippet区域与某一![20210808170601506.png][] 区域的重叠部分比上snippet区域的比值。![20210808170435263.png][] 时间点的特征可以表示如下:
其中,![20210808165122442.png][] 是![20210808165122444.png][] 时间点的开始、结束以及动作概率,![20210808165122445.png][] 是监督信号,分别是与![20210808165122448.png][] 区域的IoP最大的![20210808165122450.png][] 所对应的IoP值。 ![20210723200036351.png][]就是TEM的输出结果以及监督信号,其中![20210723200036349.png][]是TEM的预测输出结果,![20210723200129106.png][]是监督信号。在训练TEM模块时,通过定义一个IoP的阈值,将![20210808171421968.png][] 的结果减去IoP阈值然后使用sign符号函数得到\[0,1\]的监督信号。比如有一组![2021080817140537.png][] ,IoP的阈值设为0.5,那么训练的监督信号标签为![2021080817140538.png][] 。
损失函数:
TEM处理的是三个二分类问题,其损失函数是三个二分类的加权Logistic Regression损失的加权和。
其中![20210723200208397.png][]是符号函数,![20210723200303424.png][]是超参数阈值,同时加入![20210723200208401.png][]平衡正负样本。
Proposal Evaluation Module**(PEM)训练:**
训练数据构造:
对于TEM的输出结果,PEG模块生成了候选的proposal已经proposal的BSP特征,候选proposal表示如下:
将![20210723200346271.png][]特征输入到PEM网络,得到预测置信度![20210723200346334.png][],同时计算该proposal与窗口内所有GT的IoU值![20210723200346335.png][]。然后一个proposal可以表示为:
设置![20210723200425266.png][]为positive,![20210723200425273.png][]为negative。其中![20210723200425276.png][]是PEM的预测结果,![20210723200425275.png][]是回归模型的监督信号。
损失函数:
PEM网络使用回归损失:
Post-Processing**(后处理):**
在预测阶段的输出结果如下:
- *
是预测的动作开始和结束位置,
是预测的开始和结束位置的概率置信度,
是预测的动作的置信度。对结果进行非极大化抑制,从而去除重叠的结果。采用了soft-nms算法来通过降低分数的方式来抑制重叠的结果。处理后的结果即为BSN算法最终生成的时序动作Proposal。
模型评价指标
AR(Average Recall): 基于多种IoU阈值的Average Recall (AR)模型平均召回率评价指标
AR@AN(Average Recall @ Average Number of proposals): 为了评估不同模型在达到相同性能的条件下需要使用的proposal的数量多少,定义了AR@AN评价指标
mAP(mean Average Precision): 基于多种IoU阈值的mean average precision(mAP)模型预测平均准确率评价指标
参考:https://zhuanlan.zhihu.com/p/39327364
开源代码:https://github.com/wzmsltw/BSN-boundary-sensitive-network
还没有评论,来说两句吧...