【视频算法解析一】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

相关文章

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines