NiyunZhou / The21-dayExpendables

We are the 21-day expandables of a kaggle competition.
Apache License 2.0
15 stars 4 forks source link

Temporal segment networks: towards good practices for deep action recognition. #16

Open SophieGuan opened 7 years ago

SophieGuan commented 7 years ago

这篇文章的分类效果非常好,主要的take-away有三点: (1) 对video进行sparse sampling,然后每部分的分类结果做聚合 (2) two-stream convnet的结构设计,包括spatial network 和temporal network (3) 考虑使用Pre-trained model,而不是train from scratch,同时normalization和dropout的使用能够提升模型表现 用的是caffe框架,模型和代码全部开放(https://github.com/yjxiong/temporal-segment-networks ),它在UCF101上的准确率达到了94.2%,其中evaluation metric用的是THUMOS13 challenge的评价指标(大概是把整体数据集按照三种方式来划分,得到三个测试集,计算三个测试集下的平均准确率,每个测试集下的准确率为在所有视频类别下的平均分类准确率)

Model Structure

模型部分借鉴了以往的two-stream ConvNet (Shimonyan et al., 2014), two-stream ConvNet的核心思想是:整个网络分为两个部分:spatial network用于处理单一frame中的空间内容信息,temporal network 处理的是a stack of frames in a short snippet,即获取一小段视频内容中的时序信息,然后,将两个网络进行融合。该结构的一个问题是无法处理long stage video information. 本文提出的结构思路非常简单,即在上述基础上,将一段视频平均分为几个snippet,对每个snippet都做一个two-stream ConvNet处理,几段snippet共享网络参数,最后用一个累加函数对所有snippet的分类结果取平均。整体结构如下:

2017-05-17 2 42 39

模型的formulation如下:

2017-05-17 2 44 21 2017-05-17 2 44 47

T1,T2…TK代表整个video被分为K个snippet,G代表某种segmental consensus function 来把各个snippet的结构做聚合,H 为softmax函数,式(2)为模型的cross entropy loss function 模型优势: 因为所有snippet共享一套网络参数,因此在TSN (temporal segment network)训练的过程中,能够从整个video学习到参数,而不是只从一个frame或一段snippet中学习。

DATASET

UCF-101,包含101个类别和13320段video clips. HMDB51,包含51个类别和6766段video clips.

Implementation Details

具体实现方面,他们使用了改进版的caffe,用4 TITANX GPU训练,时间9个小时。具体learning rate设置方面可以参考原文4.1部分。

RESULTS

结果方面非常详尽的比较了不同的模型训练策略、不同的输入数据模态、不同的segmental consensus function以及不同的convnet结构对于训练效果的影响。

(1) 下表是对不同训练策略做的效果比较。 其中,pre-train spatial是指仅仅对spatial network使用预训练好的Imagenet model,cross modality pre-training是指将预训练好的imagenet model经过转化使其能够对描述optical flow的temporal network初始化,partial BN是指 ‘freeze the mean and variance parameters of all Batch normalization layers except the first one’以预防过拟合情况。从下表可以看到,最后一种方法效果最好。

2017-05-17 3 09 01

(2) 对于不同input modalities的效果比较 RGB difference是指两个连续frame的差值,描述了motion salient region部分,optical flow为以往模型的常用方法,warped flow是一种改进的考虑了camera移动信息的optical flow方法。结果表明,使用除了RGB difference之外的三种方法结合效果最好。

2017-05-17 4 31 07

(3) 对于不同consensus function 的比较 对于不同snippet的分类结果,直接取平均值的效果最好

2017-05-17 4 31 12

(4) 不同ConvNet的比较 BN-Inception结果最好

2017-05-17 4 36 13

(5) 每一个改进带来的效果提升

2017-05-17 4 36 51

(6) 应用了上述所有改进后,和其他方法的比较

2017-05-17 4 38 28
NiyunZhou commented 7 years ago

@SophieGuan 这篇文章我打算先尝试一下再说。

y-wan commented 7 years ago

刚刚搜ActivityNet'16 classification的冠军Limin Wang时发现,他在CVPR'16是作者的两篇文章和你介绍的这篇均在同一个GitHub repo里开源,我觉得里面有若干个模型都很值得尝试。另外几篇我稍后介绍。

另外,他得ActivityNet'16冠军的结果是基于Temporal Segment Networks (TSN)(即这个issue中介绍的)和Trajectory-pooled Deep-convolutional Descriptors (TDD)这两份成果。

NiyunZhou commented 7 years ago

@y-wan ok,我们下午讨论的时候汇总一下现在找到的模型

y-wan commented 7 years ago

先贴一下上面说的另外几篇文章和源码:

  1. Actionness Estimation Using Hybrid Fully Convolutional Networks (source code)
  2. Real-time Action Recognition with Enhanced Motion Vector CNNs (86.4% accuracy and 390.7 FPS on UCF-101, project site & source code)
NiyunZhou commented 7 years ago

仔细看了#16的这篇文章和代码之后,发现结构不是很适合于我们的这个问题。因为我们没有原始的video,所以没法拿到optical flow的特征,因此这个模型的一半是无法使用的。如果只使用一半,其效果类似于一个FC。:joy: