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

转至: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,太大了没法训练。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移