Temporal Convolutional Networks for Action Segmentation and Detection论文阅读笔记

IEEE, 2016

 

现有的动作识别问题基本分为三种,(1)用滑动窗口来检测动作(2)用分段模型将视频分为多段再识别每段的动作(3)循环模型。(1)没有捕捉长范围的时序信息(2)没有考虑段间关系(3)关注范围有限且难以训练。

 

由此,作者提出了两种TCN模型:

(1)ED-TCN:使用编码解码结构,只用了卷积、池化和上采样,但能够有效捕捉长范围的时序信息,并且层数相对较少,但每层包含一组长卷积核。

(2)Dilated TCN:不使用池化和上采样,而使用空洞卷积,并在层间加入skip connection。这个模型是对WaveNet的改进,与ED-TCN也有相同点,但这个模型是为语音处理问题设计的。Dilated TCN的层数更多,但每层的空洞卷积的时间步很小。

 

两种TCN结构都能捕捉分段模型的特征,如动作持续时间,片段之间的转换和类似于循环模型的长范围的时序信息。两种TCN结构的特性有:

(1)计算是按层执行的,每个时间步同时更新,而不是按帧顺序更新;

(2)卷积是随着时间计算的;

(3)每帧的预测是固定长度的时间(被称为感受野)的函数

TCN的输入是一组视频特征(如CNN的输出)

 

ED-TCN结构:

### Temporal Convolutional Networks (TCN) 架构 TCN是一种强大的深度学习架构,能够处理任意长度的输入序列并生成相应长度的输出序列[^1]。这种特性使得TCN在网络中可以利用非常深远的历史数据来进行预测。 #### 膨胀卷积与残差连接 为了实现这一目标,TCN采用了膨胀卷积(Dilated Convolutions)以及残差层(Residual Layers)。膨胀卷积允许网络在不增加参数数量的情况下扩大感受野,从而覆盖更长时间范围内的上下文信息。而残差连接则有助于构建更深的网络结构,缓解梯度消失问题,提高训练效率和效果。 ```python import torch.nn as nn class TCNBlock(nn.Module): def __init__(self, n_inputs, n_outputs, kernel_size, stride, dilation, padding, dropout=0.2): super(TCNBlock, self).__init__() self.conv1 = nn.Conv1d(n_inputs, n_outputs, kernel_size, stride=stride, padding=padding, dilation=dilation) self.bn1 = nn.BatchNorm1d(n_outputs) self.dropout1 = nn.Dropout(dropout) self.net = nn.Sequential(self.conv1, self.bn1, nn.ReLU(), self.dropout1) self.downsample = nn.Conv1d( n_inputs, n_outputs, 1) if n_inputs != n_outputs else None self.relu = nn.ReLU() def forward(self, x): out = self.net(x) res = x if self.downsample is None else self.downsample(x) return self.relu(out + res) ``` 此代码片段展示了如何定义一个基本的TCN模块,其中包括了膨胀卷积操作及其后的批标准化、激活函数应用及dropout机制来防止过拟合现象的发生。此外还实现了跳跃链接以支持深层网络的学习过程。 #### 时间维度上的滑动窗口 不同于传统的RNN系列模型依靠递归单元间的状态传递来捕捉时间动态特征的方式,TCN则是通过沿着时间轴方向移动的小型局部滤波器——即所谓的“滑窗”——提取模式。这种方法不仅简化了计算流程而且提高了并行化程度,在实际应用场景下往往能带来更好的性能表现[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值