专栏首页计算机视觉战队视觉的深度学习与网络的构建,训练及测试

视觉的深度学习与网络的构建,训练及测试

已经很久没有更新平台的内容,今天抽空来给大家分享一些关于计算机视觉领域的一个重点,那就是“深度学习”,接下来就来详细聊聊深度学习(为什么要深度学习特征???),然后来说说深度网络的搭建,最后让我们自己用手DIY属于自己的网络,现在就开始ing......


一说起“深度学习”,大家有想过为什么要去搭建复杂网络,去学习更高级的特征呢?其实很简单,因为趋势是朝着类脑那个大方向,现在类脑工作已经得到很多研究员的关注。

类脑计算实际上存在两个技术层面:第1层面是“走出诺依曼框架”,主要属于人工神经网络的大范畴;第2层面是“基于神经科学的计算机算法”,试图超越人工神经网络框架和摆脱权值计算模型,实现对生物脑的高逼真性模拟。所以欧盟都已经联合开始研究人脑,都成立一个叫“人类脑计划”,美国也开始关注类脑。所以类脑计算这个方向是前途无量的。

第1类 主要有欧盟的“人类脑计划”和美国的“BRAINs”计划,虽然技术路径不同,但都是从生物脑的微观层面的实验数据和知识入手,通过逐渐整合,向上寻找中观和宏观层面上的数量关系规律,最终建立起整体的脑理论模型。 该类方法的特点是“自下而上”,一场大规模的微观海量的数据和碎片化的实验知识的“拼图工程”。首先发展高尖端技术工具,以实现对脑的微观的结构和功能的全面测量和记录;然后建立起全脑微观数据库;在此基础上,逐渐向大规模的脑计算模型上发展,并试图形成对脑活动、脑病变和脑智能的机制性解读的整体理论;最后形成比较成熟的类脑计算技术和类脑人工智能。这种研究属于长周期的大科学或大工程,需要动员大量人力物力和财力。

第2类 研究方法的特点是“自上而下”。直接将研究重心放在一个“好的”脑理论的建造上,然后向下导出神经元模型和神经元群体网络模型;之后测试和检验模型与微观神经知识和数据之间的契合度。这种研究的关键在于怎样找到正确的理论入手点,这一步不是单纯的建模方法问题,也不是一般的学科性理论问题,而是若干个重要学科的理论进程中的汇合点上的再综合,属于科学大周期性的结晶过程。这种研究属于长周期和“形而上”的小科学。目前,采用第2类方法的主要有美国Numenta公司和中国的神经深构造运算与脑计 算 机 实 验 室(Neural Deep Structure Computing & MindComputer Lab,Mindputer Lab),两个实验室技术路径虽异,但总体方法都是先从全脑角度来建立理论框架,然后将理论逐渐地向下细化,导出中观和微观的计算模型,之后再检验与微观层面的实验数据和知识的互恰性。

各有利弊:

两类研究方法各有利弊,第1类方法就像在万米悬崖峭壁贴身攀岩,向上的每一步很费时且充满未知。因为,从海量的数据中去试图进行全脑网络的微观拼图,是一个大随机性的事件,即使有超级计算机或其他先进微观技术的帮助,欧美两个脑项目的10年计划时间是远远不够的。而第2类方法更像是空中伞降,难点在降落伞上,只要降落伞做得好,则向下定点降落的时间和复杂度比攀岩小的多。科学史已经证明,一个好的理论是大大削减科学探险随机性风险的锐利刀具。

有点说偏了,今天我们主要来说说深度学习这些事!


为什么要深度学习?

先来一个简单的例子:

这都是底层特征的可视化,说明底层特征也只能学习一些基础的纹理等特征,但是如果达到人脑的视觉感知,就必须要学习更高级的高层语义特征。所以才会出现更深更复杂的网络,可以理解为挖掘更高层的语义特征来进行目标的表示。如下:


什么才是深度学习?

一般会有:1)组合模型;2)端到端的学习(End-to-End)。

学习

从具体------------------------>抽象

1)组合模型

犹如上面的流程图,充分说明了模型的组合学习。

2)End-to-End

下面两个链接是前期推送的内容,充分表明了网络的端到端学习过程。

深度学习---反向传播的具体案例

神经网络介绍—利用反向传播算法的模式学习

接下来参考了“slide credit Marc’aurelio Ranzato,CVPR ‘14 tutorial”

下面这个链接也详细介绍了CNN的演变与改进:

深度网络的“从古至今”的蜕变


框架

深度学习发展迅速,随之不同的框架也大量涌现出来。

Torch7

  • NYU
  • scientific computing framework in Lua
  • supported by Facebook

Theano/Pylearn2

  • U. Montreal
  • scientific computing framework in Python
  • symbolic computation and automatic differentiation

Cuda-Convnet2

  • Alex Krizhevsky
  • Very fast on state-of-the-art GPUs with Multi-GPU parallelism
  • C++ / CUDA library

TF,。。。。。。

因为我入门到现在一直用Caffe,所以今天节详细说说这个框架。

原因(参考):

● Expression: models + optimizations are plaintext schemas, not code. ● Speed: for state-of-the-art models and massive data. ● Modularity: to extend to new tasks and settings. ● Openness: common code and reference models for reproducibility. ● Community: joint discussion and development through BSD-2 licensing.

● Pure C++ / CUDA architecture for deep learning

● command line, Python, MATLAB interfaces

● Fast, well-tested code ● Tools, reference models, demos, and recipes ● Seamless switch between CPU and GPU


网络(Net)

一个网络是由一组不同层连接而成:、

name: "dummy-net"

layers{ name: "data" …} layers { name: "conv" …} layers { name: "pool" …} … more layers … layers { name: "loss" …}

LeNet:

层(Layer)

name: "conv1" type: CONVOLUTION bottom: "data" top: "conv1" convolution_param { num_output: 20 kernel_size: 5 stride: 1 weight_filler { type: "xavier" } }

Protobuf

网络(Net)和层(Layer)就是通过Protobuf来定义的。

Blob

Caffe源码---Blob基本使用

Solving: 训练一个网络

train_net: "lenet_train.prototxt" base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 max_iter: 10000 snapshot_prefix: "lenet_snapshot"

如果你需要GPU训练:

caffe train -solver lenet_solver.prototxt -gpu 0


最后举一些流行的例子,有兴趣的朋友可以自己动手去DIY。

目标检测:

R-CNN: Regions with Convolutional Neural Networks http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/detection.ipynb Full R-CNN scripts available at https://github.com/rbgirshick/rcnn

视觉风格识别

Karayev et al. Recognizing Image Style. BMVC14. Caffe fine-tuning example. Demo online at http://demo.vislab.berkeleyvision.org/

场景识别

http://places.csail.mit.edu/


微调(Fine-tuning)

输入:不同的源文件;

最后一层:不同的分类器。

如何成为一名成功的“炼丹师”——DL训练技巧

今天就到这里,希望可以给需要的朋友一带来一些帮助,谢谢!

本文分享自微信公众号 - 计算机视觉战队(ComputerVisionGzq),作者:Edison_G

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简单易懂的讲解深度学习(入门系列之四)

    在前一个小节中,简单地谈了谈什么是“M-P神经元模型”,顺便用生活中生动的小案例,把激活函数和卷积函数的概念撸了一遍。下笔之处,尽显“神经”。当然这里所谓的“神...

    计算机视觉研究院
  • Deep Learning的展望

    随着2017年的到来,深度学习技术也迎来了新的一年。深度学习是一门基于多层神经网络的技术,此项技术是许多颠覆性技术(如人工智能、认知计算、实时数据流分析等)的基...

    计算机视觉研究院
  • 资源 | 深度学习入门和学习书籍

    最近很多新入门的同学问我到底怎么入门,今天先给大家推荐一些有用的书籍和简单的入门。希望可以给有需要的朋友一些帮助,谢谢! 最近新出一本学习书籍,是我们学校焦李成...

    计算机视觉研究院
  • 深度学习局限何在?图网络的出现并非偶然

    本文作者 M. Mitchell Waldrop 是威斯康星大学基本粒子物理学博士,曾担任 Nature、Science 等顶级期刊撰稿人、编辑,出版过《复杂》...

    机器之心
  • 【深度学习并非万能】全方位对比深度学习和经典机器学习

    近年来,深度学习已成为大多数AI问题的首选技术,使得经典机器学习相形见绌。原因很明显,深度学习在语音、自然语言、视觉和游戏等许多任务上都表现出卓越的性能。然而...

    新智元
  • CrossValidated问答:神经网络和深度神经网络有什么不一样?

    来源:CrossValidated 编译:weakish 深度网络,顾名思义,就是有“很多”层的网络。 那么到底多少层算深度呢?这个问题可能没有一个明确的答案。...

    企鹅号小编
  • 独家 | 一文读懂如何用深度学习实现网络安全

    本文简要介绍深度学习以及它支持的一些现有信息安全应用,并提出一个基于深度学习的TOR流量检测方案。

    数据派THU
  • python面试题精讲——逻辑运算and-or运算的本质

    python的and、or逻辑运算是非常基础的应用,但是你真的明白它们组合起来运算的本质吗,有的人说and-or是python里面的三元运算符,这种说法正确吗?...

    小草AI
  • 2017年十本必读的大数据&人工智能领域书籍,你都读过吗?

    【数据猿导读】年关将至,回顾2017,小编记得自己曾在年初的时候给自己定下一个小目标——就是读30本书。然而随着春节的临近,小目标却成了遥不可及的梦。不知道在过...

    数据猿
  • 深度解密Go语言之map

    这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。

    梦醒人间

扫码关注云+社区

领取腾讯云代金券