基于VGG-Net的人体行为识别(Action Recognition)
2017-10-19 12:03
309 查看
Abstract:
本文对论文’Towards Good Practices for Very Deep Two-Stream ConvNets’的复现。该论文采用了two-stream的卷积方法,该方法的鼻祖是VGG团队,该团队的论文是14年的’Two-Stream Convolutional Networks for Action Recognition in Videos’ ,从此开创了新的一派,可以战胜C3D一派。Yuanjun Xiong的VGG未防止数据量太小导致过拟合,实现two-stream的创新点如下:采用了ImageNet预训练的模型进行fine-tune。
更小的学习率
新的数据增广的方式。
使用了多GPU并行训练的策略。
网络特点
该网络首先将视频转换成rgb和灰度的光流图存储起,因此,输入网络的不是视频,而是视频提前转好的图片。采用ImageNet的model进行finetune。当在spatial Stream时,输入RGB图,RGB图的选取方法是:在视频中随机抽取一帧作为RGB图。因此,ImageNet训练的model可以直接在spatial stream使用。而temporal stream,由于输入的是光流图,而输入的光流图在视频中得到的光流图集合中,随机选取某一帧光流图作为第一张图,而训练的图是10帧光流图的堆叠,(有x方向和y方向,通道数为1*2*10=20),temporal stream第一层卷积的参数量与spatial stream不同(20 vs 3)。因此,对caffemodel进行修改:将第一层卷积各通道的参数取平均,并复制20channel。
补充:得到的光流图的取值范围较小,因此,将取值范围其拓展至【0,255】,即灰度图。
在14年的论文中,仅仅spatial network采用了pre_caffemodel,temporal network是随机初始化。
更小的学习率:较’Two-Stream Convolutional Networks for Action Recognition in
Videos’ ,学习率小得多。原因在于均在fine-tune,而不是随机初始化。
数据增广:由于video转换的rgb和optical flow图相似度高,若不数据增广,容易导致数据量在迭代次数增多时,相似的数据集再被输入进去训练,从而导致过拟合
图片不再随机crop,该方法crop四个角落和一个中心。原因在于:若random crop,crop的图片更趋向于中心,loss降低迅速,容易过拟合。
多尺度crop,固定图片输入为250*340,长和宽随机crop为{256,224,192,168},再resize成224*224。这种方法不仅仅是multi-scale的数据增广,同样也是aspect ratio的数据增广。
结合上述两种方式,其实是先进行scale jittering,再resize成224*224,再进行fix_crop,在resize成224*224
drop out数字增大,有利于避免过拟合。
多GPU训练:
使用4块GPU,运用了onpenmpi,实现了运行加速。在全连接之前,分别在四块GPU卡运行,当到达全连接层时,将数据整合在一起再输入至全连接层。
网络测试时,选用的数据集时UCF101,使用UCF101 split1进行训练和测试,train.txt来训练,val用来验证和test。选取视频中等间隔的25帧图像。测试图片进一步进行数据扩增,获得了分割的四张角落和一个中心的图片以及镜像图,故每一帧图片均扩增了10张图。光流图同理。最终测试则是对这扩增图的概率取平均。单独训练temporal networks和spatial networks,最终在最后一层全连接层使用加权和,spatial的权重为1,temporal的权重为2。
补充:test的数据扩充跟train的数据扩充不同,train仅仅从训练图中选取一定数量的图,扩增图片只是增加了选择的多样性,而不是将所有扩增的图片均输入到网络中
光流法的选择:在移植网络的过程中,出现了一种bug: spatial network的准确率与论文一致,而temporal network的准确率一直较低,经过排查,发现是光流图的原因。不同的算法产生的光流图的效果不同。本论文采用TVL1光流算法,而我错误的使用了farn光流算法。farn的光流算法产生的光流图中噪声多,而TVL1的光流图噪声则很少。
两者的光流图对比如下所示:
Farn 光流图 | Tvl1光流图 |
---|---|
经过训练后,在UCF101测试,得到的准确率如下表所示
Networks | training Val Accuracy | test |
---|---|---|
spatial | 77% | 80.12% |
temporal(farn optical flow) | 72% | 82.5% |
temporal(tvl1 optical flow) | 74.17% | 86.07% |
temporal(farn)+spatial | 86.28% | |
temporal(tvl1)+spatial | 89.5% |
最终:
该论文作者已经将代码已经开源,代码网址为(https://github.com/yjxiong/caffe)该代码中在复现的过程中,存在许多细节上的错误,也有不完整的地方。我亲自在ubuntu16.04LTS+cuda8.0+caffe实验通过,使用了四块1080Ti的显卡,github源码:https://github.com/KaiJin1995/VGG-ActionRecognition
仍存在的问题:
准确率依旧不达标,跟论文中的90.9%相比,少了1.4个百分点,正在思考可能存在的问题,若解决,会回来更新。
————————————————————————————————————————————
最近的进展:已经将准确率提升到了90%:主要进行了如下两个操作:第一个操作:修改测试代码,其频域测试代码有微小的漏洞,当修改后,综合测试可以提升近0.15%。第二个操作:重新训练spatial nets,重新训练后,测试spatial net 的代码可以达到80.4%,综合temporal 和spatial,可以得到90%准确率
相关文章推荐
- 基于3D卷积神经网络的行为识别:3D Convolutional Neural Networks for Human Action Recognition
- 基于3D卷积神经网络的行为识别:3D Convolutional Neural Networks for Human Action Recognition
- 基于3D卷积神经网络的行为识别:3D Convolutional Neural Networks for Human Action Recognition
- 经典网络结构VGG-net《Very Deep Convolutional Networks for Large-Scale Image Recognition》
- Video Analysis相关领域介绍之Action Recognition(行为识别)
- [行为识别]RPAN:An end-to-end recurrent pose-attention network for action recognition
- 行为识别阅读笔记(paper+code):Real-time Action Recognition with Enhanced Motion Vector CNNs
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
- F#与ASP.NET(1):基于事件的异步模式与异步Action
- 视频人员行为识别(Action Recognition)
- Asp.Net MVC实践 - 自定义ActionResult实现Rss输出 (基于ASP.NET MVC Preview 3)
- [行为识别] Two –Stream CNN for Action Recognition in Videos
- F#与ASP.NET(1):基于事件的异步模式与异步Action
- 基于CNN和VLAD的人体行为识别研究
- 双流网络行为识别-Spatiotemporal Residual Networks for Video Action Recognition-论文阅读
- Video Analysis相关领域介绍之Action Recognition(行为识别)
- Video Analysis相关领域介绍之Action Recognition(行为识别)
- Video Analysis相关领域解读之Action Recognition(行为识别)
- 行为识别阅读笔记:ActionRecognition using Visual Attention
- ASP.NET MVC下的异步Action的定义和执行原理