图片到视频肯定是科研发展的方向,可惜需要的资源太多,主要关注动作识别方向
未完成,主要给自己看
[201905-arxiv] Unsupervised Learning from Video with Deep Neural Embeddings
Self-supervised Learning for Video Correspondence Flow
[2019-arxiv]DistInit: Learning Video Representations without a Single Labeled Video
[2018-IJCAI] Watching a small portion could be as good as watching all: Towards efficient video classification
[201811-arxiv] AdaFrame: Adaptive Frame Selection for Fast Video Recognition
[201809-arxiv-竞赛报告]Non-local NetVLAD Encoding for Video Classification
Evolving Space-Time Neural Architectures for Videos
Long-Term Feature Banks for Detailed Video Understanding
[2018-AAAI]Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action [paper](有GCN,有代码,重点学习)
[2019-arxiv]DistInit: Learning Video Representations without a Single Labeled Video
第一眼看到题目以为是做视频分类的时候不用label,看了论文才知道理解错了。很简单的思路
[201905-arxiv] Unsupervised Learning from Video with Deep Neural Embeddings
[201906-arxiv]FASTER Recurrent Networks for Video Classification [paper]
FASTER for Feature Aggregation for Spatio-TEmporal Redundancy, by focusing on the temporal aggregation stage.
出发点非常清新,解决的问题也比较重要. 我一直不太喜欢之前或者现在主流的采样方案,非常不智能,如下图a部分。作者采用的思路有点类似于视频的PI帧的味道,一些clip用大网络,其余用小网络,各个clip用rnn连接。不过感觉这种设计也只能有实力的实验室才能做的出来,这种架构放在我这里显存肯定爆了。
RNN部分主要采用conv替换FC,这个思路在很多前作中已经采用了
[2019-CVPR]Learning Spatio-Temporal Representation with Local and Global Diffusion[paper]
下图是框架图
下图是LGD网络图
bilinear kernel,看过又忘了,在caption里面也有用到
其实更好奇的是为什么2d的增长比3d要低。因为按照TSN的取法,各帧的关系基本是没有提取的,通过global的path可以得到这个信息,感觉带来的效用会更大些,而C3D如果学的比较好的话,GAP带来的提升应该要小些。 从所以从这点看,现在的C3D有比较大的改进空间。另外一个猜测是TSN的取法对于名词部分已经做的比较好了,动词部分受限于采样的问题,就算有LGD带来的提升也有限。
[201904-arixv] Local Aggregation for Unsupervised Learning of Visual Embeddings[paper]
这个主要是图片级别的非监督学习,但是上面那篇关于视频的跟这篇强相关,所以也就放在这了。另外这块很少看,因此主要记录作者的思路,也有可能理解上有偏差。无监督深度学习由于没有标注用来训练,所以为了训练网络,得找个训练目标。作者提出了一种叫Local Aggregation的方法让相似数据的embeeding特征靠近,而让差别比较大的数据特征互相离得比较远,以图片分类为例,就是让同类别的图片特征距离较小,不同类别的距离交大,类似于聚类的标准。
具体的做法是数据通过cnn处理后会得到一个feature vector f,f经过归一化后会在一个超球体内。对于一个特定的fi,可以找到两个集合,一个集合叫B,这个可以通过对两两特征做点积,角度最小的top k个点; 另外一个集合是C,这个可以通过kmeans对所有的f进行聚类,那么fi的集合C就是跟f1聚到一类的所有feature. 那训练的目标就是,如果某个feature是属于fi 集合B的点,那么我希望它也属于fi的集合C。
记录的只是一个非常浅的大意,论文里还对这个loss做了一些解释,还有计算上用memory bank等做了一些优化
[201905-arxiv]Design Light-Weight 3D Convolutional Networks for Video Recognition: Temporal Residual, Fully Separable Block, and Fast Algorithm[paper]
友情吐个槽,图画得好晕。
1 Temporal Residual 是个创新点,但是作者的解释(the gradient between adjacent image frames indicates the motions of the objects)没有任何东西支持。因为现在对weight的理解都很差,更不要说梯度了,要支持作者的解释,建议作者至少画出 Temporal Residual让读者直观感受下
2 Fully Separable Block 把C3D分解下,这一块其实仁者见仁,智者见智,有很多分解的方法。不过个人的一点友好小建议是,因为有很多论文都说了flops不能等价于速度,作者可以把速度信息报告出来,最近我就发现在pytorch里面普通的kernel(3,1,1)的C3D要比其对应得depthwise的要快,之前不能想象。
3 Fast Algorithm,这个对于我是新知识,一直没有关注底层怎么对卷积进行加速,有机会得看参考文献,暂时还没看明白,Fast Fourier Transform,Fast FIR,WinoA
[2019-CVPR] TACNet: Transition-Aware Context Network for Spatio-Temporal Action Detection[paper]
跟普通的trimmed video 分类不一样,action detection有点类似于物体检测,用在视频中定位出动作的位置,这里的位置包括二维和时间轴的位置。 由于目前这类论文看的比较少,按照作者讲的记录下。在物体检测里一般有着框不是很准的情况,在action detection里面也存在类似的情况,之前已经有工作统计了35-40%的错误来自于时间维度上的不准确。所以该工作主要的着力点主要解决时间轴上的精度。作者引入了一个transitional state,也就是过渡状态,如下图
当然数据库不会提供这样的标注,那作者就用了一个简洁的方案动态的产生这样的标注,后面会提到。
作者认为本文的主要两个创新点分别是temporal context detector 和transition-aware classifier。第一个主要去解决视频理解的永恒话题,怎么高效地利用视频时间轴上的context,第二个就是去解决上面提到的引入了一个transitional state后的分类问题, 总体的框架如下, 从外行上去看整个框架还是过度复杂,论文只报告了高超的acuuracy,但没有报告背后的速度,训练代价等等
接下来简要介绍这两个模块
1 temporal context detector
SSD + two-stream + conv_lstm,这些模块都不是自创的,个人觉得比较incremental
2 transition-aware classifier
主要来看看这个模块,最简单的方法是用两个head,一个head就是做普通的动作分类,一个是做是否是过渡状态,但如果是这样设计的话两个分支有些互斥关系,如果这个是某一动作,那么就不会是过渡状态,反之亦然,作者的解释是有耦合,我没怎么理解。所以作者用了信号处理常用的方式去做
we design a common and differential scheme to train our network, In particular, the proposed transition-aware classifier still outputs c+ and c-, but the difference is that we use c+ +c- to predict action category
(upper branch in Figure 3) and c+ - c- to predict action state
[201904-arxiv] Video Classification with Channel-Separated Convolutional Networks[paper]
很多工作都想把C3D分解成低flops的卷积组合。 作者引入了一个新的指标channel interaction,并用实验证明了这个指标的重要性。根据于此,作者提出了一个新的residual的变体,见下图b
[2019-CVPR-oral]Learning Video Representations from Correspondence Proposals [paper]
这个工作其实我个人的理解还是在non-local体系下,最大的不同之处在于non-local的embedding方式是根据当前点跟其他所有点的相似性得到一个similarity map然后进行embedding, 这个工作是把其他所有点改进成了K个点(利用feature的相似性得到topk的点)。其他的东西我觉得都不是重点。
[201904-arxiv]GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond [paper][code]
作者发现了在non-local network里面得到的attention map跟query的点没有太大关系,因此决定做成一个跟query点独立的一个attention map. 个人比较好奇的是因为在分割领域有个OCNet,也是主要利用non-local的思路,但是从这篇文章放出的几幅图来看利用non-local是可以学出比较合理的跟query点相关的attention map,当然它有像素级的标注,可以更好做些. 不管怎么样,更合理的一种思路应该是怎么改进non-local network让他能学习到这种query点相关的attention map
[201904-arxiv]SCSampler: Sampling Salient Clips from Video for Efficient Action Recognition [paper]
视频里面的采样个人觉得是非常重要的。之前像k400这样只有10秒左右的视频,大部分的工作在测试的时候都是用两三百张图ensemble得到的(用clip的方式其实类似),非常低效。这个工作没有像之前的采用RL在训练的时候去考虑采样的问题,而是在测试的时候去做采样,具体点就是在已经训练好一个分类模型的情况下,再训练一个采样模型,挑选一些合适的帧或者clip让分类器去做ensemble.
这里面作者考虑了三个选择:
1) 再次训练一个轻量级的分类模型,如果某个clip的分类置信度高,那么就是一个显著的clip.作者没有选这个,因为认为这个跟已经训练的分类模型有些独立
2) 利用已经训练的分类模型对每一个clip设置0或1伪标签代表其显著性,0或1还是看它的分类置信度,然后利用这个标签再去训练一个轻量级模型去学习这个显著性
3) 利用rank loss学习这个采样模型。
采样模型得训练的相对高效,论文里参考的是Compressed Video Action Recognition
作者还同时采用了语音信号,最后视觉信号用的是第二种学习方式,语音信号用的第三种
[2019-CVPR] Selective Kernel Networks [paper][code]
这个工作其实没有在video里做实验,不过是跟attention相关,也就放在这了,这篇论文的思路很简单,就是加了多个kernel size的卷积,然后做个soft attention.Table 7的对比实验也比较让人信服
[2019-CVPR]Collaborative Spatio-temporal Feature Learning for Video Action Recognition [paper]
看论文的图2就比较清楚了,个人觉得没什么物理意义,不过我的品位一直不好
[2019-CVPR]Efficient Video Classification Using Fewer Frames[paper]
没有意想不到的东西
[2019-CVPR]COIN: A Large-scale Dataset for Comprehensive Instructional Video Analysis[paper]
新数据库,教程类视频
[2019-AAAI] StNet: Local and Global Spatial-Temporal Modeling for Action Recognition [paper]
取样方式参考TSN,把视频分成T个segments,不同之处在于每个segment取连续的N帧
Local:将数据转成batch*T*3N*H*W,然后网络的第一个卷积按照I3D的方式扩展下。这是一种比较取巧的方式了,但是个人觉得这个3N内部的联系比T上的应该更重要些
Global:利用C3D结合C2D的形式
另外在最后分类的时候设计了一个网络
[2018-NIPS]Trajectory Convolution for Action Recognition [paper]
之前的工作会把3D卷积分解成空间上的2D卷积和时间轴上的1D卷积。在时间轴上做卷积的时候一个潜在的假设是,不同帧的特征图在同一个空间位置(x,y)的语义是一样的。这是不合理的,因为有些关键的物体或物体部件会运动。所以作者引入了deformable convolution network构造了所谓的轨迹网络。有点意思的是作者又把dfn里的offsets给提出了构造了另类的two-stream架构。下图是框架图,看起来有些费劲
[201809-arxiv] OCNet: Object Context Network for Scene Parsing [paper]
这篇文章的核心思路是用non-local那一套做分割,初略地看了下好像没什么特别大的变化。不过有点意思的是把位置信息也给加进来了,个人之前认为完全放弃位置信息是non-local的一个显然缺点。后面就是配合了分割的两个主流模型PSP和deep lab的ASPP做了实验。
[201812-arxiv]D3D: Distilled 3D Networks for Video Action Recognition[paper]
思路很简单,就是希望以RGB输入作为D3D的特征输出与two stream里以flow作为输入的输出去match,具体采用的应该是L2 loss
论文猜测了为什么不直接用预测flow的loss去直接训练网络,一个原因可能是flow的loss可能会被背景像素的loss给dominate,直接去预测可能不太好训练,而利用flow作为输入的网络输出来监督可能更好。
[201812-arxiv]SlowFast Networks for Video Recognition[paper]
估计是CVPR19年的投稿吧。16年有幸听过凌海滨老师在公司的讲座,那时候对于他们用在slam的一个快慢结合的模块印象特别深,可惜悟性不高,没有学习到精髓
[2018-NIPS] A2-Nets: Double Attention Networks[paper]
这篇论文个人很难理解作者对于图1的解释,但是如果按照non-local 或者compact non-local去理解,就会比较通顺。
按照non-local的思路,作者的计算顺序是(C1*THW)*(THW*C2) * (C2*THW)。当我们把后面的先乘,那么就会发现跟non-local基本一样的。只是作者采用了跟compact non-local一样的计算顺序以减少计算量。另外不同的地方是作者对(THW*C2)和(C2*THW)都做了softmax,以符合attention的假设。
不理解的地方还是作者对图1的解释,作者把(C1*THW)*(THW*C2)作为一种全局描述子,但是自己能理解的是C1和C2之间的相关性。有待继续理解
[2018-NIPS] Compact Generalized Non-local Network [paper] [code]
这个工作把non-local推广到了c维度,这样做主要是可以建模不同通道之间任意位置上的关系,但是问题也比较严重,由于模型中c一般都比较大,计算量大大增加,所以作者主要采用了两种思路。第一种比较简单,就是c分成g组,复杂度一下子降低g倍。另外,在计算(CTHW*1)*(1*CTHW)*(CTHW*1)时,如果按照正常的计算顺序是O(CTHW*CTHW)+O(CTHW*CTHW),但是如果先计算后两项,复杂度是O(CTHW)+O (CTHW). 另外如果是RBF的核,利用泰勒展开拟合。
[2018-NIPS] Gather-Excite: Exploiting Feature Context in Convolutional Neural Networks [paper][code]
看模型比论文容易理解, 跟SE同一个作者,思路也是一脉相承
[2018-CVPR] Squeeze-and-Excitation Networks [paper][code]
这篇论文虽然不是主要做video的,但是有些论文跟这个有些关系,因此也放进来了。主要是要在channel上做attention,每一个channel都会学习一个标量去scale原始的特征,这个值跟这个通道上h*w的特征有关,可以看成一种比较简单的gather-exite形式。 只在channel上做了attention,并且global pooling这个操作建模的想象力不太够。另外有个很大的疑问就是在resnet中 global pooling是放在bn之后的,bn会把feature均值置到0,那么global pooling还有很大的意义吗,当然还有个scale的bias在里面。
[2018-CVPR] MiCT: Mixed 3D/2D Convolutional Tube for Human Action Recognition [paper]
[2018-CVPR] A Closer Look at Spatiotemporal Convolutions for Action Recognition [paper]
经验: 底层捕捉temporal或者运动信息,高层捕捉空间信息
这个经验有点反直觉,另外跟其他一些论文的做法也有矛盾的地方
论文本质上好像跟P3D没啥区别,但是效果要比P3D好很多,原因在哪?(还未理解)
[2018-CVPR]Compressed Video Action Recognition [paper]
利用PI帧做动作识别
1 知识点 I帧是关键帧,P帧是类似于补偿帧或变化帧,还有零个或多个b帧(双向变化帧),最后还有个残差帧
I-frames are regular images and compressed as such. P-frames reference the previous frames and encode only the ‘change’.
2 由于P帧有可能依赖于P帧,所以作者把变化全部累加起来,让P帧只依赖于I帧
3 最后训练一个模型
问题:如果一个视频有多个I帧,那么怎么处理?
[2018-arxiv] Temporal Shift Module for Efficient Video Understanding [paper][code]
韩老师怎么进军视频领域了, 这篇文章简单有趣
[2018-ECCV] ECO: Efficient Convolutional Network for Online Video Understanding [paper][code]
这么直观的想法为什么到18年才被人发现,可能我错过了一些细节。不过这里N也是固定的,固定的N感觉还是有些遗憾的
[2018-CVPR] Non-local Neural Networks [paper][code]
其实我对该论文的做法是抱保留态度的,虽然他的出发点我是十分赞同的。该工作主要是想利用空间和时间上全局的信息来辅助视频或图片上的理解任务,这个是很合理的出发点,所以像作者提到之前的global mean什么的方法(虽然我没看),或者是分割里面比较新的论文Context Encoding for Semantic Segmentation加个全局分类损失,我都非常理解。但是作者采用是这么一个策略,以图片为例,如果是传统的方法,对于一个特征图,每个像素点的值都是卷积堆叠的结果,获取的信息跟感受野有关,因此称之为local也是合理的。作者想为每个点增加全局信息,采用的其实就是一个有权重的累加,计算的公式跟全局的卷积有点小类似,如下面的公式,x是特征图,i,j等就是坐标,f是相似性的函数,g是一个转化,比如1*1的卷积,学术上称之为embedding,
权重是两个特征值的相似性。两个点的特征越相似,那么权重越大,如下面的公式。但是这样就完全抛弃空间或时间的关系,这是很不合理的,如果两个像素点的特征相似但是隔的很远,他们的关系会有那么强么?
接下来作者就把这个公式完美地用一个新的cnn building block实现了出来。首先需要定义上面的g和h. g论文里就用1*1的卷积了,f是一个embeded guassian,如下图,不难理解
最后就成了这样,θ和φ就是f里面的embedding,特征用512维表示,减少计算,下图最左边的矩阵乘法就是上面公式3的右上部分,softmax把公式3的指数跟归一化包办了,还是比较优美的。
[201712-arxiv] On the Integration of Optical Flow and Action Recognition [paper]
这篇论文做了几组对照试验来探索到底是什么原因使得光流能提高动作识别的性能。前两组试验还挺有意思的,shuffle flow性能降的不是特别多(是不是由于现在的数据库时间很短,flow都类似),shuffle image性能降的特别多
[2017-ICCV] Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks [paper][code]
P3D
[2017-CVPR ] Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset [paper][code]
I3D
[2016-ECCV] Temporal segment networks for action recognition in videos[paper]
看文章都不理解Consensus到底是个什么函数也是醉了,平均还是什么
[2014-NIPS]Two-Stream Convolutional Networks for Action Recognition in Videos[paper]
two-stream