深度学习开源工具——caffe介绍
本页是转载caffe的一个介绍,之前的页面图都down了,更新一下。
目录
简介
报告时间是北京时间 12月14日 凌晨一点到两点,主讲人是 Caffe 团队的核心之一 Evan Shelhamer。第一次用 GoToMeeting 参加视频会议,效果真是不错。
报告后分享出了 视频 和 展示文件。另一讲座,cuDNN:
Accelerating Convolutional Neural Networks using GPUs,视频 和 展示文件 也已放出。
Caffe 此前听过没用过,所以报告前自己试运行了一下,参照 官方教程。Caffe
安装、上手都很快,Protobuf 式的层定义很直观,模型修改或算法调整变得很容易,相当于只需要改配置文件。还找到了他们放在 Google Docs 上一个教程 PPT,DIY
Deep Learning for Vision: a Hands-On Tutorial with Caffe (已搬到 墙里),后来发现这次报告的
PPT 就是在这个基础上修改的。
本次报告主要内容是
- 对机器学习、深度学习的一些介绍,包括若干深度学习的经典模型;
- Caffe 的优势(模块化、速度、社区支持等)、基本结构(网络定义、层定义、Blob等)和用法(模型中损失函数、优化方法、共享权重等的配置、应用举例、参数调优的技巧),以及未来方向(CPU/GPU
并行化、Pythonification、Fully Convolutional Networks等)。
以下是报告中的截图配上自己的一点笔记,一手资料请参见上面给出的会后分享链接。
要点记录
PPT 的首页取自该项目的一个在线 demo,输入图片
url,识别物体类别。
左边是浅层特征,各类别物体杂乱无章;右边是深度特征,一些类别有较为明显的分别。特别地,dog、bird、invertebrate 这三类动物类别离得较近,而 building、vehicle、commodity 这类无生命类别离得较近,可见深度特征的强大。
此外,在深层结构当中,隐层神经元的激活可能与特定的物体类别有关,比如有的神经元对人像敏感,而有的对数字或建筑物敏感,最下面一层是闪光灯(或与之类似,比如反光的脑门……)效果。
Caffe 的优势,网络结构的模块化和易表达是显然的,社区资源也同样强大,比如下两页内容。
Caffe 的 Reference Models 可供学术使用,比如 AlexNet、R-CNN、CaffeNet,包括模型定义、优化方法和预训练权重。
Model
Zoo 中有用户贡献的模型可供参考使用,比如 VGG、Network-in-Network。
Caffe 支持丰富的模型表达形式,包括 DAGs、Weight Sharing 以及 Siamese Network。
网络和层定义采用 protobuf 的样式。
Layer 指的是权重和偏置,可以定义连接数、权重初始化方法等。
Blob 是四维数据结构,保存节点上的数值以及模型参数,可以通过编程在 CPU 和 GPU 间传输。
模型定义之外,还需要一个指定优化策略的配置文件,用以训练模型。
使用 Caffe 训练的一般步骤就是
- 数据预处理;
- 模型定义;
- 求解策略定义;
- 运行。
此处给出了两个例子,Logistic
Regression,Learn
LeNet on MNIST,都很好 follow。
调参中重点讲了一个 模型迁移的实例,用某项任务已有模型的参数作为新任务模型的参数初始值,然后进行模型训练。
模型训练一般由浅入深,逐步降低学习速率,以保持预训练参数的某些性质。
接下来具体讲述了 Loss、Solver、DAG、Weight Sharing 的概念和配置。
对同一模型,不同 Solver 的表现有差。
一般深度学习模型是线性形式的,比如 LeNet,而 Caffe 支持 DAG 形式的模型。
Caffe 的近期动向,CPU/GPU 并行化、Pythonification、Fully Convolutional Networks等。
Caffe 的团队,拜 Yangqing Jia 师兄……
文献参考。
提问
语音回答中,Evan 提到 UCB 的一个团队正在开发 Scala 接口,不过尚属实验性质;Caffe 团队在考虑 和 UCB 的 AMP 团队合作,扩展到 Spark 这一计算平台上;除了已支持的 CPU/GPU 计算,也考虑扩展支持 OpenCl;对于 Theano、Torch,鼓励大家尝试、比较……
文字问答如下,由 Yangqing Jia 回复。
Q: Is the pre-trained model avaialbe for download to accelerate our work on other kinds of images?
A: FYI - for pretrained models that we release, please refer to the model zoo page here: http://caffe.berkeleyvision.org/model_zoo.html
Q: Android platform ?
A: People have asked about android/ios platforms. In principle this is possible since the code
is purely in C, but of course some engineering efforts are needed to write makefiles like Android.mk for this. Our bandwidth is limited and we are focusing on the research part, but we welcome pull requests on github if you write one (and we thank you in advance)!
Also, kindly check out the blog post by my colleague Pete Warden about our efforts on running with Jetson TK1: http://petewarden.com/2014/10/25/how-to-run-the-caffe-deep-learning-vision-library-on-nvidias-jetson-mobile-gpu-board/
Q: Can you discuss status and/or considerations for adding opencl support (and so be vendor neutral,
as opposed to NVIDIA CUDA)?
A: In terms of using OpenCL - it has been under discussion for a while, but we are kind of
shortstaffed so we focus more on the research side - we welcome contributions from open-source communities of course, please join us at github :)
Q: do you have an online examples of unsupervised losses
A: For unsupevised losses and training there is a bundled example of an MNIST autoencoder.
更多的问答(60+)请参见主办方提供的 Q&A
Transcript。
总结
“盗取”一页 PPT 作为本文总结。
原文地址: http://frank19900731.github.io/blog/2014/12/04/diy-deep-learning-for-vision-a-tutorial-with-caffe-bao-gao-bi-ji/
作者 Frank
Song 发布于 http://frank19900731.github.io
转载请注明
深度学习开源工具——caffe介绍的更多相关文章
- MXNet 学习 (1) --- 最易上手的深度学习开源库 --- 安装及环境搭建
安装环境:Win 10 专业版 64位 + Visual Studio 2015 Community. 记录下自己在有GPU的环境下安装配置MXNet的过程.该过程直接使用MXNet release ...
- 深度学习开源库tiny-dnn的使用(MNIST)
tiny-dnn是一个基于DNN的深度学习开源库,它的License是BSD 3-Clause.之前名字是tiny-cnn是基于CNN的,tiny-dnn与tiny-cnn相关又增加了些新层.此开源库 ...
- 深度学习标注工具 LabelMe 的使用教程(Windows 版本)
深度学习标注工具 LabelMe 的使用教程(Windows 版本) 2018-11-21 20:12:53 精灵标注助手:http://www.jinglingbiaozhu.com/ LabelM ...
- 使用深度学习的超分辨率介绍 An Introduction to Super Resolution using Deep Learning
使用深度学习的超分辨率介绍 关于使用深度学习进行超分辨率的各种组件,损失函数和度量的详细讨论. 介绍 超分辨率是从给定的低分辨率(LR)图像恢复高分辨率(HR)图像的过程.由于较小的空间分辨率(即尺寸 ...
- 卷积神经网络CNN与深度学习常用框架的介绍与使用
一.神经网络为什么比传统的分类器好 1.传统的分类器有 LR(逻辑斯特回归) 或者 linear SVM ,多用来做线性分割,假如所有的样本可以看做一个个点,如下图,有蓝色的点和绿色的点,传统的分类器 ...
- 谷歌发布了 T2T(Tensor2Tensor)深度学习开源系统
谷歌开源T2T模型库,深度学习系统进入模块化时代! 谷歌大脑颠覆深度学习混乱现状,要用单一模型学会多项任务 https://github.com/tensorflow/models https://g ...
- 【神经网络与深度学习】转-caffe安装吐血总结
这周安装了caffe的windows版本和Linux版本,依赖关系太多,如果系统选对了,安装起来很easy,选错了,就会遇见各种坑. 1.操作系统最好使用ubuntu desktop 14.04 64 ...
- JMeter学习笔记--工具简单介绍
一.JMeter 介绍 Apache JMeter是纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java ...
- 【深度学习】之Caffe的solver文件配置(转载自csdn)
原文: http://blog.csdn.net/czp0322/article/details/52161759 今天在做FCN实验的时候,发现solver.prototxt文件一直用的都是mode ...
随机推荐
- HDU 2710
Max Factor Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- bzoj2144: 跳跳棋(二分/倍增)
思维好题! 可以发现如果中间的点要跳到两边有两种情况,两边的点要跳到中间最多只有一种情况. 我们用一个节点表示一种状态,那么两边跳到中间的状态就是当前点的父亲,中间的点跳到两边的状态就是这个点的两个儿 ...
- Lua Go R HEXO Kotlin 简单介绍
Lua Lua使用C编写而成的脚本语言.同为脚本语言的Python拥有庞大的类库工具包,定位于独立开发,Lua极度精简化,没有提供太多功能包,必须与C.C++等语言混合使用,目的是为了快速并动态的嵌入 ...
- 四道JavaScript面试题检测你的js基本功
下面有四道简短的JavaScript小脚本,如果你能顺利预测脚本的运行结果,那么你的JavaScript基本功还是可以的.如果答错了,可以相应地去补一下缺漏的知识.反正也很简单,答错了只是说明你没了解 ...
- [uva11137]立方数之和·简单dp
小水题再来一发 给定一个正整数n<=1e4,求将n写成若干个正整数立方和的方法数 典型的多阶段模型 f[i][j]表示当前用到1~i的数,累计和为j的方案数. #include<cstdi ...
- loj515 「LibreOJ β Round #2」贪心只能过样例
传送门:https://loj.ac/problem/515 [题解] 容易发现S最大到1000000. 于是我们有一个$O(n^2*S)$的dp做法. 容易发现可以被bitset优化. 于是复杂度就 ...
- 【POJ】1830 开关问题(高斯消元)
http://poj.org/problem?id=1830 高斯消元无解的条件:当存在非法的左式=0而右式不等于0的情况,即为非法.这个可以在消元后,对没有使用过的方程验证是否右式不等于0(此时因为 ...
- 【BZOJ】3502 PA2012 Tanie linie
[算法]贪心,一般DP [题解] --- 胡策k≤10的环状DP做法: 1.钦定法:先确定第一位(可能和第n位)的状态,然后后面正常做DP,显然正确答案是一定会被记录的,因为从整体上看不会有影响. 2 ...
- HDU - 5327 Olympiad(一维前缀和)
Olympiad Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...
- 【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理
[Zigbee技术入门教程-02]一图读懂ZStack协议栈的核心思想与工作机理 广东职业技术学院 欧浩源 Z-Stack协议栈是一个基于任务轮询方式的操作系统,其任务调度和资源分配由操作系统抽 ...