视频中人物识别--tensorflow介绍

 在开始写视频中人物的识别时用到的知识点有cnn与tensorflow,在此首先介绍一下其中应用到深度学习框架tensorflow。

1 深度学习框架介绍前的“废话”

    到目前为止深度学习的框架有Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch等,如果帖友有时间的话可以多多学习几种框架,不过个人认为在项目中使用更能加深对框架的熟悉。我在此只大概总结下项目中用到的tensorflow框架和自己所了解的caffe,其它的帖友可以在网上百度。

2  tensorflow简单总结

      TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。

      数据流图:数据流图用节点和线的有向图来描述数学计算。节点一般用来施加数学操作或者表示数据输入的起点/输出的终点。线表示节点之间的输入/输出关系。这些数据线可以传送大小可动态调整的多维数组,即张量。

      张量:Tensor(张量)是Tensorflow中最重要的数据结构,用来表示Tensorflow程序中的所有数据。Tensor本是广泛应用在物理、数学领域中的一个物理量。实际上,我们可以把Tensor理解成N维矩阵(N维数组)。其中零维张量表示的是一个标量,也就是一个数;一维张量表示的是一个向量,也可以看作是一个一维数组;二维张量表示的是一个矩阵;同理,N维张量也就是N维矩阵。

  优点:1)可自行设计神经网络结构;2)不需要通过反向传播求解梯度,Tensorflow支持自动求导;3)TensorFlow有功能强大的可视化组件TensorBoard,能可视化网络结构和训练过程,对于观察复杂的网络结构和监控长时间、大规模的训练很有帮助;4)具有灵活的移植性,编译速度较快;5)可进行并行设计,充分利用硬件资源等

  缺点:1)文档和接口混乱;2)默认占用所有GPU的所有内存等

3 tensorflow的整体介绍

   1)使用图 (graph) 来表示计算任务   .

   2)在被称之为 会话 (Session) 的上下文 (context) 中执行图.

   3)使用 tensor 表示数据.

   4)通过 变量 (Variable) 维护状态.

   5)使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据

4  tensorflow构图与运行时涉及的函数:

   constant()函数在Tensorflow中的使用非常频繁,经常被用于构建图模型中常量的定义。

   variable()也是在Tensorflow中经常会被用到的函数。变量的作用是保存和更新参数。执行图模型时,一定要对变量进行初始化,经过初始化后的变量才能拿来使用。变量的使用包括创建、初始化、保存、加载等操作

   fetch为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果. 在之前的例子里, 我们只取回了单个节点 state, 但是你也可以取回多个 tensor:

    tensorflow的内容很多,在此就不详细介绍了。

5 caffe的介绍

     caffe是一个开源的深度学习框架,可读性高,它允许利用自己的CPU或者GPU训练网络,不需要自己编写程序,只需要通过配置文件来指定网络。
     caffe都是一些模块组成,模块包括4个部分: Caffe由低到高依次把网络中的数据抽象成Blob, 各层网络抽象成Layer ,整个网络抽象成Net,网络模型的求解方法抽象成Solver。

1.Blob表示网络中的数据,包括训练数据,网络各层自身的参数,网络之间传递的数据都是通过Blob来实现的,同时Blob数据也支持在CPU与GPU上存储,能够在两者之间做同步。

2.Layer是对神经网络中各种层的抽象,包括卷积层和下采样层,还有全连接层和各种激活函数层等。同时每种Layer都实现了前向传播和反向传播,并通过Blob来传递数据。

3.Net是对整个网络的表示,由各种Layer前后连接组合而成,也是所构建的网络模型。

4.Solver 定义了针对Net网络模型的求解方法,记录网络的训练过程,保存网络模型参数,中断并恢复网络的训练过程。自定义Solver能够实现不同的网络求解方式。
优点    
      1)上手快:模型与相应优化都是以文本形式而非代码形式给出。
               Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
      2)速度快:能够运行最棒的模型与海量的数据。
              Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
     3)模块化:方便扩展到新的任务和设置上。
             可以使用Caffe提供的各层类型来定义自己的模型。
      4)开放性:公开的代码和参考模型用于再现。

缺点:1)不灵活。在 Caffe 中,每个节点被当做一个层,因此如果你想要一种新的层类型,你需要定义完整的前向、后向和梯度更新过程。这些层是网络的构建模块,你需要在无穷无尽的列表中进行选择; 2)需要大量的非必要冗长代码。如果你希望同时支持 CPU 和 GPU,你需要为每一个实现额外的函数。你还需要使用普通的文本编辑器来定义你的模型。
 

 

  

  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值