C3D GitHub项目地址:https://github.com/facebook/C3D

C3D 官方用户指南:https://goo.gl/k2SnLY

1. C3D特征提取

1.1 命令参数介绍

官方GitHub项目上同时提供了C3D-v1.0和C3D-v1.1两个版本,以下方法适用于v1.0

官方提供的特征提取demo路径为~/C3D-master/C3D-v1.0/examples/c3d_feature_extraction

在这个路径下,执行c3d_sport1m_feature_extraction_video.sh或c3d_sport1m_feature_extraction_frm.sh可以分别启动从视频提取特征和从图片提取特征的demo

打开c3d_sport1m_feature_extraction_video.sh文件,出去一些用来生成文件夹的指令,可以看到启动C3D的命令如下:

GLOG_logtosterr= ../../build/tools/extract_image_features.bin prototxt/c3d_sport1m_feature_extractor_video.prototxt conv3d_deepnetA_sport1m_iter_1900000    prototxt/output_list_video_prefix.txt fc7- fc6- prob

其中

a) ../../build/tools/extract_image_features.bin是提取特征的可执行文件,示例命令中使用了相对路径,如果在其他路径下调用注意进行对应的修改

b) prototxt/c3d_sport1m_feature_extractor_video.prototxt该文件记录了提取特征的一系列输入参数,下面会详细介绍

c) conv3d_deepnetA_sport1m_iter_1900000 这是预训练模型文件,根据自己的需求做对应的修改

d) 接下来的三项数字是:0 50 1,分别是gpu_id,mini_batch_size和number_of_mini_batches。gpu_id是在计算机具有多块GPU时指定使用哪一块GPU的,默认是0,如果将这一项的值置为-1则启动CPU模式。需要注意,如果需要调整batch size,在prototxt文档中也要进行相应的修改

e) prototxt/output_list_video_prefix.txt是输出前缀文件,下面会详细介绍

f) fc7-1 fc6-1 prob是特征名称 要提取哪一层的特征依序写在这里即可

1.2 prototxt文档

prototxt/c3d_sport1m_feature_extractor_video.prototxt是这个demo所使用的prototxt文档

第9行

source: "prototxt/input_list_frm.txt"

这是记录输入文件路径的文档。在这个demo中,prototxt/input_list_frm.txt对应的是以图片作为输入时的文档,而prototxt/input_list_video.txt对应的是以视频作为输入时的文档。以prototxt/input_list_frm.txt为例,该文档格式如下:

input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/
input/frm/v_ApplyEyeMakeup_g01_c01/

其中input/frm/v_ApplyEyeMakeup_g01_c01/是保存图片的路径,后面的第一个数字表示从哪一帧开始提取特征,最后的数字表示该行对应的类别。由于这是提取特征而非训练,类别填写什么都不要紧,只要有就行

多少帧提取一次特征,是由prototxt/input_list_frm.txt中第17行new_length一项参数决定的。例如上面例子中的视频一共有165帧,那么最后一行对应的145帧开始提取特征,取16帧,使用145帧-161帧的数据。在这里如果取用的帧的编号超过总帧数165,则会报错,要注意这一点

如果输入时视频,则参考prototxt/input_list_video.txt。需要注意的是,输入为视频时帧的序号是从0开始计算的

第9行

use_image: true

如果输入时图片,则为true,如果输入时视频,则为false

第10行

mean_file: "fb_train16_128_mean.binaryproto"

这里是使用的均值文件的路径,根据所使用的模型生成或选择均值文件即可

另外也可根据需求修改其他参数。

1.3 输出前缀文件

参照prototxt/output_list_video_prefix.txt生成输出前缀文件,可以根据需求进行自定义,只要注意该文件要和prototxt/input_list_frm.txt输入文件清单的行数相对应即可

1.4 其他注意事项

输出的特征文件所保存的路径必须自己生成,C3D不会创建文件夹

如果提示“out of memory” 可以尝试减小batch size

提取的特征是二进制文件,需要进行格式转换才能正常处理

其他的注意事项可以参考官方的用户指南

2. C3D训练和fine-tune

训练和fine-tune的官方demo的路径分别是

~/C3D-master/C3D-v1./examples/c3d_train_ucf101
~/C3D-master/C3D-v1./examples/c3d_finetuning

所使用的prototxt和inputlist等文件参照特征提取和demo修改即可

C3D使用指南的更多相关文章

  1. 提取C3D视频特征(官方文档&实践)

    C3D Introduction 卷积神经网络(CNN)近年被广泛应用于计算机视觉中,包括分类.检测.分割等任务.这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维).而基于视频的 ...

  2. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  3. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  4. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  5. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  6. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  7. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  8. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...

  9. 第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南

    欢迎查看第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南,该处理器可为开发人员和最终用户提供领先的 CPU 和图形性能增强.各种新特性和功能以及显著提高的性能. 本指南旨在帮助软件开发人员 ...

随机推荐

  1. C#里的async和await的使用

    1. await指令调起线程执行异步方法和方法内后面的代码 2. await指令会阻塞当前方法后面的代码,但是不会阻塞外部调用 3. await必须搭配async使用,而async不一定需要有awai ...

  2. bne 1b 汇编含义

    汇编指令中 bne label 这条指令有以下两种特别的写法:bne 1b, bne 1f. bne 1b 指的是 backward,倒退寻找标号为 1 的地方并跳转. 同样也有 bne 1f,值得是 ...

  3. ACM&OI 基础数学算法专题

    [前言] 本人学习了一定时间的算法,主要精力都花在数学类的算法上面 而数学类的算法中,本人的大部分精力也花费在了数论算法上 此类算法相对抽象,证明过程比较复杂 网络上的博客有写得非常好的,但也有写得不 ...

  4. JavaScript把两个数组对象合并成一个一一对应的数组对象

    合并数组或者对象在数组或对象前面加...,是es6的新写法,然后数组的map方法会返回数组. var obj1 = [{ , "model": "XQG70-S1208F ...

  5. 算法设计和分析(Prim算法构建最小生成树)

    问题: 给定无向图G(N,M)表明图G有N个顶点,M条边,通过Prim算法构造一个最小生成树 分析: 算法流程: 构造好的最小生成树就是step6 运行代码: #include<cstdio&g ...

  6. POJ - 3659 Cell Phone Network(树形dp---树的最小点支配集)

    题意:有N个点,N-1条边,任意两点可达,由此形成了一棵树.选取一个点a,它可覆盖自己以及与自己相邻的点,选取尽量少的点a,使得树中所有点都被覆盖,即求树的最小点支配集. 分析: 1.对于每一个点cu ...

  7. SpringCloud学习之Ribbon使用(四)

    1.关于 Ribbon Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具.Ribbon 是 Netflix 发布的开源项目,主要功能是提供客 ...

  8. Java并发分析—Lock

    1.Lock 和 Condition 当使用synchronied进行同步时,可以在同步代码块中只用常用的wait和notify等方法,在使用显示锁的时候,将通过Condition对象与任意Lock实 ...

  9. 关于debug模式下对象toString报空指针的问题。Method threw 'java.lang.NullPointerException' exception. Cannot evaluate cn.gooday.jsh.service.common.dto.RestControllerResult.toString()

    这个如果debug的时候可以一步步走到正常return或者运行的时候有正确返回值.说明代码是没问题的. 出现这个的原因是dto对象里有一些字段查出来是空的,或者这个字段本来在dto里就是冗余字段. 因 ...

  10. 用Axure画原型图有感

    感觉前端做UE非常有优势啊- 但是在制作的时候,似乎陷入了误区: (1)只求原型图的漂亮,色彩丰富,忽略了其本质作用,是用来整理逻辑,画出逻辑流程的. (2)一开始就追求交互,高保真的原型,忽视了细节 ...