【视频算法解析一】C3D卷积

2024-01-08 12:38
文章标签 算法 视频 解析 卷积 c3d

本文主要是介绍【视频算法解析一】C3D卷积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开始学习视频理解方面,会在这儿记录看到的论文总结。

[视频算法解析一] C3D算法

[视频算法解析二] I3D算法

[视频算法解析三] ECO算法

介绍

高效的视频描述器有四点性质:1.通用性,这样可以用来描述各种类型的视频;

2.紧凑型?,当数据量较大时,可以很好的完成扩展性高的任务;

3.高效性,需要快速计算满足实时系统;

4.结构简单,方便实现。

以前的那些用2d卷积的方法不适用在视频上面,它们都忽略了视频的运动性(应该是指忽略了时空特性)。

本篇文章的三点贡献:1.实验表明,3D卷积对于视频建模方面表现很好;

2.根据经验,使用3*3*3的卷积核,表现得比其他结构好;

3.接入简单得线性模型就在4个task,6个benchmark上达到SOTA。

通过3D卷积学习特征

3D卷积和池化

3D卷积和3D池化更好,因为它们表现在时空上,不同于2D操作仅在空间上操作。2D卷积,要么输入一个图,要么输入多帧图像当作channel,但是这样并没有捕捉到时序方面得信息。只有Slow Fusion model在它前3个卷积的时候用了3D卷积,作者表示这是Slow Fusion比其他方法表现好的原因。

首先,在UCF101上进行架构搜索,最后发现和2D的卷积一样,3*3的卷积核是最好的。最后,确定空间3*3的感受野,只改变时间上的深度。

网络的通用设定

网络输入16帧,网络输入是3(channel)*16(frame)*128*171(w,h)。每一帧resize到128*171,也用了随机裁剪,裁剪的尺寸是112*112。网络有五个卷积层,每个卷积层后跟着池化层和2个全连接层,最后用softmax layer来分类。五个卷积层的过滤器数为64, 128,256, 256, 256,每个卷积核都有一个时空深度超参d。maxpooling的size为(2,2,2),第一层为(1,2,2)。

其中d为时空卷积的深度,可以和b图对比理解来看,就是这个操作在L这个维度上取得深度是多少,如下图。

确定网络结构

C3D对于这个超参D有着两种不同的类型的实验,1.每层网络d都是一样得,其中尝试1,3,5,7四种参数;2.每一层网络得d都是变化的。 尝试两种,一种递增3-3-5-5-7,另一种是递减7-5-5-3-3。由于只在卷积层深度有差距,输出的大小在全连接层都是一样得,导致这些网络参数差距变化不大。例如,深度差距为2的两个网络,只有17K参数差距,最深的和最浅的参数差距在51K,不到总参数的0.3%。这也反映出网络参数大小没有影响深度对比实验。

探索卷积核的时间深度

在恒定的深度值表现上,深度为1表现明显比其他的差,深度为3的表现最好。通过这一系列实验(尝试5*5的感受野和输入不resize保持240*320的分辨率。)表明3*3*3的卷积核效果最好。

空间特征学习

网络结构如下图所示,卷积都采用3*3*3卷积核,1*1*1的stride。maxpooling采用2*2*2以及同等大小的stride,除了第一个pool采用1*2*2。

数据处理方面:对于Sports-1M数据集,随机采样五个2秒的片段,分辨率为128*171,也就是10个clips,接着在经过随机裁剪和随机翻转,将数据增广到16个clips,分辨率裁剪到112*112。

分类结果来看,C3D没有Convolution pooling on 120-frame clips 的效果好,但是这个方法取得是long-clip不能直接和C3D比较。

C3D视频描述器:可以用C3D作为提取video feature的backbone,两个16clips片段之间需要有8clips重合,在fc6层经过激活层输出提取的feature。

C3D学习到什么?作者使用反卷积的技术可视化了conv5的卷积特征,发现C3D提取的特征关注着显著性区域的motion,这一点不同于2D卷积。

这篇关于【视频算法解析一】C3D卷积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583481

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时