视频分析模型(行为识别):C3D

2023-05-16

C3D

文章目录

    • C3D
      • 1. 简介
        • 1.1 背景
        • 1.2 C3D特点
        • 1.3 视频描述符
        • 1.4 C3D的结果
      • 2. 架构
        • 2.1 工作流程
        • 2.2 网络结构
        • 2.3 3D卷积和池化
        • 2.4 kernel 的时间深度
      • 3. 可视化
        • 3.1 特征图
        • 3.2 特征嵌入
      • 4. 应用场景
        • 4.1 动作识别
        • 4.2 动作相似度标注
        • 4.3 场景和目标识别
        • 4.4 运行时间分析

1. 简介

论文:https://arxiv.org/abs/1412.0767v4

github

原代码:https://github.com/facebook/C3D

TensorFlow:https://github.com/hx173149/C3D-tensorflow

1.1 背景

卷积神经网络(CNN)被广泛应用于计算机视觉中,包括分类、检测、分割等任务。

这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维)。而对于基于视频分析的问题,2D convolution不能很好得捕获时序上的信息,因此3D卷积就被提出来了。

3D卷积 最早应该是在 《3D convolutional neural networks for human action recognition》 这片论文中被提出并用于行为识别的,而C3D是作为一个通用的网络提出的,论文中将其用于行为识别,场景识别,视频相似度分析等领域。

1.2 C3D特点

  1. 3D ConvNets比2D ConvNets更适用于时空特征的学习
  2. 对于3D ConvNet而言,在所有层使用3×3×3的小卷积核效果最好
  3. 通过简单的线性分类器学到的特征名为C3D(Convolutional 3D),在4个不同的任务和6个基准上表现优秀,在2015年达到SOTA
  4. 特征紧凑:在UCF101数据集上得到52.8%的准确率只用了10维(PCA+SVM)
  5. 推断快,计算效率非常高,在论文中实验时就有300帧以上的FPS,使用 NVIDIA 1080 GPU 能达到600帧以上
  6. 概念简单,易于训练和使用

1.3 视频描述符

一个有效的视频描述符有四个属性:

  1. 通用性。可以表示不同类型的视频,同时具有可区分性。例如,网络视频可以是自然风光、运动、电视节目、电影、宠物、食物等
  2. 描述符必须是紧凑的。由于我们需要处理数百万的视频,一个紧凑的描述符有助于处理,存储和检索任务,更具可扩展性;
  3. 计算高效。因为在现实世界中,每一分钟都需要处理成千上万的视频;
  4. 实现简单。不使用复杂的特征编码方法和分类器,一个好的描述符即使是一个简单的模型(如线性分类器)也能很好地工作。

而C3D是好的描述符:通用、紧凑、简单、高效

C3D描述符,就是C3D网络第一个全连接层(fc6)输出的特征经过L2标准化后的结果。

1.4 C3D的结果



比较C3D与最好的公开结果。在一系列的基准上,C3D优于所有先前最好的报告方法,除了Sports-1M和UCF101。

在UCF101中,有2组方法:

  1. 只使用了RGB帧作为输入
  2. (括号里)使用了可能的特征(如:光流、改进的密集轨迹)

2. 架构

2.1 工作流程

数据集:Sports-1M

训练

  1. 从每个训练视频中随机取出2秒长的5个片段,调整帧大小为128*171(大约为UCF-101一半分辨率)
  2. 随机裁剪成 16x112x112 的片段(shape:[ N, C, nframe, H, W ] -> [ N, 3, 16, 112, 112 ],16帧片段非重叠),形成抖动,以 50%的概率随机翻转
  3. 使用SGD优化器,batch size为30,初始学习率为0.003,每150K次迭代除以2,优化在1.9M迭代(约13epochs)停止

2.2 网络结构



基于不强的算力而设计的网络(C3D):8个卷积层、5个池化层、两个全连接层,以及一个softmax输出层

  1. 所有3D卷积核均为3×3×3(d x k x k ,d为时间深度),步长为1×1×1
  2. 为了在早期阶段保留更多的时间信息,设置pool1核大小为1×2×2、步长1×2×2(时间深度为1时,会单独在每帧上进行池化,大于1时,会在时间轴上,也就是多帧之间进行池化)
  3. 其余所有3D池化层均为2×2×2,步长为2×2×2
  4. 每个全连接层有4096个输出单元

2.3 3D卷积和池化



3D卷积和池化更适合学习时空特征,通过3D卷积和3D池化,可以对时间信息建模,而2D卷积只能在空间上学习特征。

2D卷积输入图像和视频时,输出的都是图像,而3D卷积输入视频后,输出的也是一个视频(3D特征图),保留了输入的时间信息。

C3D网络将完整的视频作为输入,不依赖于任何处理,可以轻松扩展到大数据集。

2.4 kernel 的时间深度



设计实验对比:

设置了4种固定尺寸的3D卷积核(左图),分别为1×3×3 、3×3×3、5x3x3、7x3x3,表明 3×3×3结果最优。

设置3种对比的网络结构,不同层的3D卷积核的时间深度分别为:

  1. 时间深度不变: 3−3−3−3−3
  2. 时间深度递增:3−3−5−5−7
  3. 时间深度递减:7−5−5−3−3

表明当卷积网络中所有的3D卷积核的时间深度一致,都为3×3×3时,效果最优。

综上:3x3x3 卷积核效果最优。

3. 可视化

3.1 特征图



使用反卷积的方法来了解C3D内部的学习,上图为conv5b特征映射图的反卷积,最大的激活投射回图像空间的图像。

第一个例子中,特征集中在整个人身上,然后跟踪其余帧上撑杆跳表演的运动。

第二个例子中,它首先关注眼睛,然后在化妆的同时跟踪眼睛周围发生的运动。

也就是说,C3D在跟踪图像的外观特征,和视频中的运动特征,论文中有更多可视化的例子。

3.2 特征嵌入



这张图上,每一个clip为一个点,同一类别具有相同颜色。

通过从UCF-101中随机取100k个视频片段,再分别取ImageNet和C3D的特征提取片段的fc6特征,用 t-SNE 降维到2维空间进行可视化。

可以看到C3D的各类别之间更有区分度、更紧凑,并且这里没有做微调,表明其有良好的泛化能力。

4. 应用场景

4.1 动作识别

数据集:UCF-101

模型:使用C3D提取特征输入多类线性SVM

结果:C3D达到SOTA,表中为网络的一些组合和比较:

C3D (3 nets) + linear SVM 表示三组C3D的fc6同时并联,与SVM结合后能提高预测精度



4.2 动作相似度标注

动作相似度标注问题的任务是判断给出的两段视频是否属于相同的动作。

数据集:ASLAN(432个动作类的3,631个视频组成)

特征:将视频分为重叠8帧的16帧片段,提取每个片段的C3D特征,分别平均每个种类的片段特征,再L2归一化



结果:在ASLAN上,C3D做到了SOTA,在ROC曲线(AUC)下显著优于最先进的方法

4.3 场景和目标识别

数据集:Maryland(14个场景类别的420个视频) 和 YUPENN(13个场景类别的130个视频)

模型:相同的特征提取体系和线性SVM进行分类

结果:同样优于其他方法,在当时做到SOTA



4.4 运行时间分析



如表所示,在推理速度上,C3D显著优于其他算法,iDT是行为识别领域的非深度学习方法中效果最好的方法,Brox指Brox提出的光流计算方法。

表中C3D的速度应该是在视频帧无重叠的情况下获得的,在NVIDIA 1080 的GPU上,可以达到600帧以上的速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视频分析模型(行为识别):C3D 的相关文章

  • java TCP/IP实现简单的多人聊天功能

    TCP IP是可靠的网络协议 xff0c 数据的传输需要服务端和客户端之间三次 握手 xff0c 比较适合文本等一些可靠性要求高的数据传输 xff0c 但是它的效率较UDP低 下面通过一张图来简要说明使用 ServerSocket 创建 T
  • 死锁面试题(什么是死锁,产生死锁的原因及必要条件)

    什么是死锁 xff1f 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而造成的一种僵局 xff0c 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 因此我们举个例子来描述 xff0c 如果此
  • 标准模板库-容器

    标准模板库STL Standard Template Libarary 是一个标准类与函数模板的库 STL包含容器 容器适配器 迭代器 算法 函数对象和函数适配器 容器 用来存储和组织其他对象的对象 T是存储在容器中的元素类型的模板类型形参
  • Ubuntu18.04安装PX4踩坑、报错及解决方案整理

    笔者最近需要跑无人机巡检大坝的仿真 xff0c 于是在自己的Ubuntu2018 04中开始安装PX4 xff0c 问过不少之前已经装过PX4的师兄和同学 xff0c 都曾在PX4安装过程中踩过许多坑 xff0c 耗费了不少时间 xff0c
  • 初识ROS文件结构:以阿木实验室Prometheus项目为例

    ROS的工作空间是一个存放工程开发相关文件的文件夹 xff0c Fuerte版本之后的ROS默认使用的是Catkin编译系统 功能包是ROS软件中的基本单元 xff0c 包含ROS节点 库 配置文件等 一个文件夹是功能包的标志是该文件夹中有
  • 六轴无人机装配问题小结(Pixhawk飞控、APM固件、电机装配、电调校准)

    笔者近期需要组装一架六轴无人机供超声波避障模块 单点激光雷达等传感器的测试使用 由于是第一次碰真机 xff0c 面对散落一箱的部件还是非常的头大的 xff0c 不过好在实验室有经验的大佬能提供一些指导 xff0c 并且还能够参考 创客智造
  • 测试API接口,返回404。

    报错 xff1a 34 timestamp 34 34 2020 06 02T12 40 53 125 43 00 00 34 34 status 34 404 34 error 34 34 Not Found 34 34 message
  • 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结

    转自 xff1a http blog csdn net flydream0 article details 52317532 1 前言 bxCAN是STM32系列最稳定的IP核之一 xff0c 无论有哪个新型号出来 xff0c 这个IP核基
  • NVIDIA TX2自制底板的USB口无法使用的一种解决方法

    这是由于官方的底板上采用INA3221芯片做了电源监控电路 xff0c 只有确保5V电源达到要求的情况下才会使能USB口 而自制的底板上将上述电路省略了 xff0c 所以导致了USB口无法使用 解决办法就是要给TX2更新设备树 在网上找到一
  • Benchmark(基准测试)初相识

    一 benchmark概念 在计算中 xff0c 基准是运行一个计算机程序 一组程序或其他操作的行为 xff0c 以评估一个对象的相对性能 xff0c 通常是通过对它运行一些标准测试和试验 基准测试一词也通常用于精心设计的基准测试程序本身
  • 嵌入式中的通讯协议——UART、I2C、SPI、DMA

    目录 一 通讯的基本概念 二 USART 串口通讯 三 I2C通讯协议 四 SPI通讯协议 五 DMA 直接存储器存取 六 USART I2C SPI比较 一 通讯的基本概念 1 串行通讯与并行通讯 xff08 按数据的传送方式 xff09
  • RISC与CISC比较

    RISC的设计重点在于降低由硬件执行指令的复杂度 xff0c 因为软件比硬件容易提供更大的灵活性和更高的智能 xff0c 因此RISC设计对编译器有更高的要求 xff1b CISC的设计则更侧重于硬件执行指令的功能 xff0c 使CISC的
  • 操作系统选择调度方式和算法的若干准则

    1 调度的类型 按调度的层次 xff1a 长期 xff08 长程 作业 高级 xff09 调度 xff1b 中期 xff08 中级 中程 xff09 调度 xff1b 短期 xff08 短程 进程 低级 xff09 调度 按OS 的类型 x
  • 提灯过桥问题

    题目 xff1a 小明一家过一座桥 xff0c 过桥时是黑夜 xff0c 所以必须有灯 现在小明过桥要1秒 xff0c 小明的弟弟要3秒 xff0c 小明的爸爸要6秒 xff0c 小明的妈妈要8秒 xff0c 小明的爷爷要12秒 每次此桥最
  • 如何判断一个整数数组中是否有重复元素

    题目 xff1a 写一个函数判断一个int类型的数组是否是有效的 所谓有效是指 xff1a 假设数组大小为n xff0c 那么这个int数组里的值为0 n 1之间的数 xff0c 并且每个数只能出现一次 xff0c 否则就是无效数组 例如
  • C++发送HTTP请求---亲测可行

    转自 xff1a http hi baidu com benbearlove item 1671c23017575825b3c0c53f 环境 xp sp3 vs2008 vs2010在静态库中使用 MFC include lt afxwi

随机推荐

  • 百度2014开发测试工程师笔试题(沈阳站)

    时间 xff1a 2013 9 21 地点 xff1a 沈阳 职位 xff1a 开发测试工程师
  • 2014百度校招开发测试工程师笔试题

    时间 xff1a 2013 9 28 地点 xff1a 深圳 职位 xff1a 开发测试工程师
  • 整体了解HADOOP框架及一些开源项目

    Hadoop框架中 xff0c 有很多优秀的工具 xff0c 帮助我们解决工作中的问题 Hadoop的位置 从上图可以看出 xff0c 越往右 xff0c 实时性越高 xff0c 越往上 xff0c 涉及到算法等越多 越往上 xff0c 越
  • Kafka简介

    Kafka简介 在当前的大数据时代 xff0c 第一个挑战是海量数据的收集 xff0c 另一个就是这些数据的分析 数据分析的类型通常有用户行为数据 应用性能跟踪数据 活动数据日志 事件消息等 消息发布机制用于连接各种应用并在它们之间路由消息
  • Flume入门笔记------架构以及应用介绍

    在具体介绍本文内容之前 xff0c 先给大家看一下Hadoop业务的整体开发流程 xff1a 从Hadoop的业务开发流程图中可以看出 xff0c 在大数据的业务处理过程中 xff0c 对于数据的采集是十分重要的一步 xff0c 也是不可避
  • 分布式服务框架dubbo原理解析

    alibaba有好几个分布式框架 xff0c 主要有 xff1a 进行远程调用 类似于RMI的这种远程调用 的 dubbo hsf xff0c jms消息服务 napoli notify xff0c KV数据库 tair 等 这个框架 工具
  • Linux下安装ElasticSearch

    Linux下安装ElasticSearch 一 下载 amp 安装二 安装中遇到的问题及解决方案三 使用中遇到的问题及解决方案四 安装head五 安装kibana 一 下载 amp 安装 先安装JDK 下载elasticsearch 7 0
  • cmake学习1:基本的CMakeLists的编写

    前言 自己在使用cmake进行编译工程的时候不太了解cmake的基本使用方法 有时候出现找不到第三方库的问题也不知如何排查 因此相对cmake有个稍微系统的认识 希望能用这个强大的工具来更好的为自己的工程服务 因此总结为了几篇博客 主要参考
  • ZooKeeper 报错 ERROR [main:ZooKeeperServerMain@64] 的解决办法

    myid span class hljs type ERROR span main span class hljs type ZooKeeperServerMain span 64 span class hljs number 64 spa
  • Ubuntu14.04下安装cmake 3.9.6

    简述 xff1a CMake是一个跨平台 的编译自动配置 工具 xff0c 它使用一个名为CMakeLists txt 的文件来描述构建过程 xff0c 可以产生标准的构建文件 它可以用简单的语句来描述所有平台的安装 编译过程 它能够输出各
  • 二维数组功能测试,超详细

    include lt stdio h gt int main char buf 2 5 61 39 a 39 39 b 39 39 c 39 39 d 39 39 e 39 39 f 39 39 g 39 39 h 39 39 i 39 3
  • Cmake知识----编写CMakeLists.txt文件编译C/C++程序

    简述 xff1a CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 43 43 特性 类似UNIX下的automak
  • 知识点总结:Java核心技术(卷1)

    Java核心技术 xff08 卷1 xff09 一 基础概念 1 1 基本程序设计结构 1 1 数据类型 1 1 1 数值类型 1 从java7开始 xff0c 加上前缀0b或0B就可以写二进制 xff1b 2 指数的表示 十进制中以10为
  • 单片机-控制-直流电机-基于L9110S-、L298N、TB6612FNG驱动

    直流电机 xff08 direct current machine xff09 能将直流电能转换成机械能 xff08 直流电动机 xff09 或将机械能转换成直流电能 xff08 直流发电机 xff09 的旋转电机 它是能实现直流电能和机械
  • 【一文弄懂】张正友标定法-完整学习笔记-从原理到实战

    张正友标定法 完整学习笔记 从原理到实战 文章目录 张正友标定法 完整学习笔记 从原理到实战 xff08 零 xff09 前言 xff1a 1 为什么需要标定 xff1f 2 相机标定的已知条件和待求解是什么 xff1f 标定前的已知条件
  • realsense ——SR300 相机使用小记

    环境搭建相关的参考资料挺多的 xff0c 这里就不多说了 这里记一些相关的api 算了 xff0c 还是给出自己的配置记录吧https blog csdn net hehehetanchaow article details 1057958
  • kubeadm安装部署Kubernetes(k8s)与部署 Dashboard web_UI(附Kubernetes安装脚本)

    前言 Kubernetes作为容器编排工具 xff0c 简化容器管理 xff0c 提升工作效率而颇受青睐 很多新手部署Kubernetes由于 科学上网 问题举步维艰 xff0c 本文以实战经验详解kubeadm不用 科学上网 部署Kube
  • 开源飞控资料

    四轴开源资料 http merafour blog 163 com blog m 61 0 amp t 61 1 amp c 61 fks 08406908208008307008408308409508608708806608408408
  • 深度学习视频数据集(动作识别):UCF-101

    UCF 101 官网 xff1a https www crcv ucf edu research data sets ucf101 网盘 xff1a 链接 xff1a https pan baidu com s 1RsJuykWyUlQ4
  • 视频分析模型(行为识别):C3D

    C3D 文章目录 C3D1 简介1 1 背景1 2 C3D特点1 3 视频描述符1 4 C3D的结果 2 架构2 1 工作流程2 2 网络结构2 3 3D卷积和池化2 4 kernel 的时间深度 3 可视化3 1 特征图3 2 特征嵌入