caffe的文件夹目录结构
这里,最重要的三个文件夹就是include, tools, src。
include:caffe的实现代码的头文件
tools:保存的源码是用于生成二进制处理程序的,caffe在训练时实际是直接调用这些二进制文件。
src:实现Caffe的源文件
在源码解读中会对里面的文件代码一一介绍,这里给出src文件的结构:
src中的每个.cpp文件对应include文件中的头文件。
在caffe教程中,介绍了caffe的三级结构(http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html ):Blobs, Layers,Nets.如下图所示:(更多内容可以看caffe的官网:http://caffe.berkeleyvision.org/tutorial/)
在编译完成后,会生成build文件夹。这个文件的目标文件指向一个debug或者release文件夹。这里建议用debug编译,这样在调试代码时可以跟到caffe的内部。只要在Makefile.config中改一下就好。
我做的图如下:
blob类(blob.hpp和blob.cpp)源码解析:blob类源码解析
syncedmem类(syncedmem.hpp和syncedmem.cpp)源码解析:syncedmem类源码解析
在src/caffe/layers文件夹下存在如下函数——
Relu_layer.cpp 源码解析:Relu层源码解析
Dropout_layer.cpp源码解析:dropout层源码解析
Solver.cpp源码解析:solver源码解析
Conv_layer.cpp和Base_conv_layer.cpp源码解析:conv卷积层源码解析
Data_layer.cpp和Base_Data_layer.cpp源码解析:Data数据层源码解析
Pooling_layer.cpp和其hpp文件源码解析:Pooling池化层源码解析
其他:
caffe源码依赖的一些库解析:levelDB、LMDB、ProtoBuf、HDF、GFlags、GLog、CUDA、Blas、BOOST、
boost::thread、boost::mutex、boost::posix_time、boost::python、boost::split、boost::shared_ptr
以上依赖库源码解析
Caffe是用C++编写的深度学习框架,大量使用类的封装,继承,多态
Caffe根目录下执行tree命令查看caffe目录结构
$ cd /home/name/Documents/caffe-master
$ tree -d
.
├── build -> .build_release //编译结果存放处,.build_release不是一个目录找不到
├── cmake //cmake编译用
│ ├── External
│ ├── Modules
│ └── Templates
├── data //存放原始数据以及数据获取脚本
│ ├── cifar10 //存放cifar10小图片原始数据
│ ├── ilsvrc12 //存放ImageNet Meta数据,原始数据要另外下载
│ ├── mnist //存放MNIST手写数字图像数据
│ └── myself //存放我的数据,自己建立的
├── distribute //编译后生成发布包的位置,用于迁移
│ ├── bin
│ └── lib
├── docker //用于迁移的工具
│ ├── standalone
│ │ ├── cpu
│ │ └── gpu
│ └── templates
├── docs //doxygen工程文件放这里,可生成Caffe ref_man.pdf
│ ├── images
│ ├── _layouts
│ ├── stylesheets
│ └── tutorial
│ └── fig
├── examples //存放Caffe简单例程
│ ├── cifar10 //存放cifar10例程
│ ├── cpp_classification //图像分类例程
│ ├── feature_extraction //特征提取例程
│ ├── finetune_flickr_style //finetune例程
│ ├── finetune_pascal_detection //finetune例程
│ ├── hdf5_classification //使用HDF5的分类例程
│ ├── imagenet //Imagenet例程,使用bvlc_reference_caffenet
│ ├── images
│ ├── mnist //mnist手写字符识别例程
│ │ ├── mnist_test_lmdb
│ │ └── mnist_train_lmdb
│ ├── myself
│ │ ├── ilsvrc12_train_lmdb
│ │ └── ilsvrc12_val_lmdb
│ ├── net_surgery
│ ├── pycaffe
│ │ └── layers
│ ├── siamese
│ ├── _temp
│ │ └── features
│ └── web_demo //一个Web Server +分类例程
│ └── templates
├── include //Caffe头文件集中存放目录
│ └── caffe
│ ├── layers
│ ├── test
│ └── util
├── matlab //Matlab做Wrapper,具体参考RCNN源码
│ ├── +caffe
│ │ ├── imagenet
│ │ ├── private
│ │ └── +test
│ ├── demo
│ └── hdf5creation
├── models //存放示例模型
│ ├── bvlc_alexnet //Alexnet模型
│ ├── bvlc_googlenet //GoogleNet
│ ├── bvlc_reference_caffenet //caffe模拟的Alexnet模型
│ ├── bvlc_reference_rcnn_ilsvrc13 //Rcnn模型
│ └── finetune_flickr_style
├── python //用于Python wrapper
│ └── caffe
│ ├── imagenet
│ ├── proto
│ └── test
├── scripts //一些文档和数据用到的脚本
│ └── travis
├── src //caffe源码
│ ├── caffe
│ │ ├── layers //各个层具体实现
│ │ ├── proto //即所谓的“Protobuf”,帮助caffe提速描述文集,学习数据结果先从这里开始
│ │ ├── solvers //优化方法类Solver
│ │ ├── test
│ │ │ └── test_data
│ │ └── util //数据转换时用的一些代码。caffe速度快,很大程度得益于内存设计上的优化(blob数据结构采用proto)
// 和对卷积的优化(部分与im2col相关)及cudnn加速
│ └── gtest
└── tools //常用学习源码
└── extra
参考:
https://blog.csdn.net/ture_dream/article/details/53348301
https://blog.csdn.net/c20081052/article/details/80585888
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:caffe–2–一文详细了解caffe的文件夹目录结构 - Python技术站