(转)用Keras实现用于提取视频特征的3维卷积网络--C3D

 

转至:http://www.tianzsong.xyz/2018/04/08/c3d-keras/

code:https://github.com/TianzhongSong/C3D-keras

前言

C3D使用3D CNN构造了一个效果不错的网络结构,对于基于视频的问题均可以用来提取特征。 我简单复现了论文中行为识别那部分的实验。

项目地址: C3D-keras

关于C3D的细节可以参考 Will-Lin的博客 行为识别笔记:C3D network-用于视频特征提取的3维卷积网络 或者参看 C3D原始论文

前期准备

1、数据集:采用的是通用数据集 UCF101

2、主要用到的库:Keras2.0.8、TensorFlow1.3.0、OpenCV3.2.0

数据处理

1、先将UCF101数据集中的所有视频转换为图片保存到本地(注意:需要大约150多G的存储空间),使用 video2img.py

2、制作标签文档,跟 C3D官方Caffe实现一致,模型输入的视频段长度为16帧,训练集与验证集的分割与UCF101官方保持一致,每个类别的前7个人为测试样本,后面的8~25人为训练样本。

模型定义

我这里使用的模型与论文中的模型并不一致,采用的是 C3D官方Caffe实现 的最新结构,该模型共有5个3D卷积层,卷积核的数量依次为64、128、128、256、256,每一个3D卷积层后接一个3D最大池化层,除第一个池化层的pool_size为(2,2,1)外 其余池化层的pool_size均为(2,2,2),最后接三个全连接层,前两层全连接层的神经元个数均为2048,最后一层为101(类别输出)。权重衰减系数weight_decay设置为0.005。

具体细节请看models.py

训练

在训练过程中我们先将每一个视频段(clip)中的每一帧resize为128x171,并在每个clip上crop一个112x112x16的视频段作为模型输入。对于训练集,每个clip都做一个翻转,作为一个简单的数据扩充手段。验证集只进行中心裁剪。

训练的epoch、学习率及学习率衰减(每4个epoch除以10)都跟原始论文保持一致,由于我只有一快GTX1080,batch_size只设置为16,太大了没法训练。

转载于:https://www.cnblogs.com/Noirz/p/10183558.html

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值