现如今,在深度学习领域中的主流开源框架有很多。而Caffe框架是人们无法绕过的一座山。这不仅是因为它无论在结构、性能上,还是在代码质量上,都称得上一款十分出色的开源框架。更重要的是,它将深度学习的每一个细节都原原本本地展现出来,大大降低了人们学习研究和开发的难度。Caffe框架之所以广受欢迎是因为其稳定的模型架构、较好的设备抽象、清晰的说明教程(用户只需要将官方文档的例子跑一遍,基本就能清楚Caffe的操作过程和细节)以及开放的模型仓库。
本教程详细介绍了Caffe的优势、架构,网络定义、各层定义,Caffe的安装与配置,解读了Caffe中Filler的作用以及cifar10、ImageNet数据集和mnist数据集创建lmdb或leveldb类型的数据等等。再加上大量的解析Caffe中重要的源码理解其精髓,加强对深度学习理论的理解。在教程的最后还配有Caffe完整的案例解析。
1.课程研发环境
主要讲解的是Windows环境下Caffe框架
操作系统:推荐Windows Server 2012 R2 64bit或Windows 7 SP1 64bit以上
编译环境:Visual Studio 2013 Ultimate版
CAFFE数据包
2.内容简介
本教程以目前已经大量用于线上系统的深度学习主流框架Caffe为例,从底层开始,由浅入深,先是概述Caffe框架,说明其和深度学习的关系,然后讲解并演示 Caffe的配置、部署、使用,接着讲解了Caffe的基本数据结构,然后通过大量的阅读Caffe源码理解其精髓,加强对深度学习理论的理解,最终达到熟练运用 Caffe 解决实际问题的目的。本教程还讲解了Caffe框架中的MNIST数据集,从使用脚本下载数据集,再到其数据格式的一个描述,最后还详细演示了其数据格式转换。和其他深度学习主流框架教程相比,本教程偏重动手实践,将难以捉摸的枯燥理论用浅显易懂的形式表达,透过代码揭开其神秘面纱,更多地贴近实际应用。
第1讲-初识Caffe
1.1-Caffe的简介和其安装
1.2-数据格式描述以及LEVELDB和LMDB介绍
1.3-数据格式转换描述
1.4-数据格式转换与LeNet5模型描述
1.5-LeNet5模型和Caffe目录结构
第2讲-Caffe中Filler的作用和cifar10数据集创建lmdb或leveldb类型的数据
2.1-Filler类前
2.2-Filler类中
2.3-Filler类后
2.4-cifar10函数分析上
2.5-cifar10函数分析下
第3讲-Caffe数据结构
3.1-Blob的简介和主要源码解析
3.2-Blob所有源码的解析
3.3-Layer的介绍和其主要源码的解析
3.4-Layer所有源码的解析
3.5-Net简介与源码解析
第4讲-解析Caffe.proto和sovler-factory
4.1-protocol buffer
4.2-caffe.proto中的几个重要数据类型
4.3-caffe.proto
4.4-Solver工厂类注册Solver子类
4.5-solver_factory.hpp
第5讲-Caffe程序入口分析及其训练源码基本流程
5.1-Caffe程序运行流程上
5.2-Caffe程序运行流程下
5.3-训练LeNet和网络初始化
5.4-训练过程
第6讲-Caffe计算图像均值描述和ImageNet数据集创建lmdb类型的数据
6.1-计算图像均值
6.2-计算图像均值描述
6.3-ImageNet数据集创建lmdb类型的数据前部分
6.4-ImageNet数据集创建lmdb类型的数据后部分
第7讲-加深学习Caffe源码
7.1-介绍Caffe代码结构及其定义网络结构
7.2-读取和解析数据代码
7.3-Google Flags和Register Brew Function的宏的使用
7.4-train()函数和SolverParameter的解析过程
第8讲-完整案例源码解析
8.1-LeNetSolver初始化
8.2-LeNet初始化训练网络上
8.3-LeNet初始化训练网络下
8.4-LeNet前向过程
8.5-LeNet反向过程
目标一. 了解Caffe框架的环境配置以及LEVELDB和LMDB数据。
目标二. 学习并且掌握Caffe框架最基础的数据结构,明白其各结构之间的关系。
目标三. 阅读明白Caffe框架的源码,特别是其入口程序也就是Caffe.cpp的源码理解,这样可以熟悉Caffe程序运行流程。
目标四. 明白Caffe最优化求解过程,重点是求解器,以及求解器的实现等等。