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

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

Spring Boot 3.x 中 WebClient 示例详解析

《SpringBoot3.x中WebClient示例详解析》SpringBoot3.x中WebClient是响应式HTTP客户端,替代RestTemplate,支持异步非阻塞请求,涵盖GET... 目录Spring Boot 3.x 中 WebClient 全面详解及示例1. WebClient 简介2.

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六