6 FishBear_move_on

尚未进行身份认证

我要认证

github 地址 https://github.com/Jayhello

等级
TA的排名 872

caffe c++示例(mnist 多层感知机c++训练,测试)

caffe训练网络模型一般直接使用的caffe.bin: caffe train -solver solver.prototxt,其实这个命令的本质也是调用c++的Solver.本文给出使用纯c++代码,使用mnist数据+多层感知机网络,训练数字分类问题。然后用C++调用训练好的模型测试分类。solver.prototxt文件内容如下:net: "/home/xy/caffe_analys...

2018-10-07 15:39:53

caffe源码分析-db, io

本文主要分析下caffe的源码,io操作,以及数据库文件(如lmdb)读取。例如,从prototxt读取网络初始化参数:NetParameter param;ReadNetParamsFromTextFileOrDie(path, &param);bool ReadProtoFromTextFile(const char *filename, Message *proto) {...

2018-10-07 11:20:26

caffe源码分析-DataTransformer

本文主要分析caffe中DataTransformer这个类, 主要作用是:将Datum类型或者cv::Mat, 转化为caffe的Blob<Dtype>,并按照Transformation``Parameter参数对图像做处理,例如scale,mirro等推断blob的shapeproto定义如下:// Message that stores parameters...

2018-10-07 11:13:38

caffe源码分析-DataLayer

DataLayer作为caffe训练时的数据层(以多线程的方式读取数据加速solver的训练过程),继承自BaseDataLayer/BasePrefetchingDataLayer。template <typename Dtype>class BaseDataLayer : public Layer<Dtype> {public: explicit Base...

2018-10-07 11:09:42

caffe源码分析-DataReader

DataReader作为DataLayer的数据成员变量,以多线程的方式从数据库(如lmdb, hdf5)读取数据:class DataReader {public: explicit DataReader(const LayerParameter& param); ~DataReader(); inline BlockingQueue<Datum*&g...

2018-10-07 11:02:33

caffe源码分析-InternalThread

InternalThread封装自boost::thread的线程,主要用于多线程的数据获取(可以理解为solver前向传播的同时,后台线程继续获取下一个batch的数据集):class InternalThread {public: InternalThread() : thread_() {} virtual ~InternalThread(); //Caffe's...

2018-10-07 10:59:10

caffe源码分析-BlockingQueue

BlockingQueue线程安全的队列, 作为caffe训练时数据同步的重要数据结构,本文做简要分析。template<typename T>class BlockingQueue {public: explicit BlockingQueue(); void push(const T& t); bool try_pop(T* t);// n...

2018-10-07 10:43:16

caffe源码分析-InputLayer

对于输入层,我们首先分析最简单的InputLayer层,其常作为网络inference时的输入,简单的mnist使用示例如下:layer { name: "data" type: "Input" top: "data" input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }}proto中相关的参数如下:// Sp...

2018-10-07 10:37:32

caffe源码分析-layer_factory

caffe中有许多的layer,在net中创建连接layer是通过工厂模式的方式创建,而不是每一个new然后连接。在net.cpp中创建layer方式如下:layers_.push_back(LayerRegistry<Dtype>::CreateLayer(layer_param));下面简要分析下layer_factorytemplate<typename Dtype...

2018-10-07 10:33:23

caffe源码分析-inner_product_layer

本文主要分析caffe inner_product_layer源码,主要内容如下:结合使用以及proto定义介绍InnerProductLayer的参数;简要分析Filler初始化,caffe中的layer参数,例如constant, gaussian;InnerProductLayer的函数 核心LayerSetUp参数初始化, Reshape, Forward_cpu以及矩阵...

2018-10-07 10:21:23

caffe源码分析-ReLULayer

激活函数如:ReLu,Sigmoid等layer相对较为简单,所以在分析InnerProductLayer前,我们先看下激活函数层。常见激活层ReLU的使用示例如下:layer { name: "relu1" type: "ReLU" bottom: "conv1" top: "conv1"}我们可以看到bottom和

2018-10-07 10:09:18

caffe源码分析-layer

本文主要分析caffe layer层,主要内容如下:从整体上说明下caffe的layer层的类别,以及作用通过proto定义与类Layer简要说明下Layer的核心成员变量;Layer类的核心成员函数1. 类Layer overviewcaffe中的Layer主要分为如下几个模块:输入层Data LayersData Layers定义了caffe中网络的输入,依...

2018-10-07 10:01:55

c++ mnist转化为opecv Mat

本文主要介绍如何使用C++将mnist 数据集转化为Opencv Mat,问题来源主要代码以及运行示例如下:uint32_t swap_endian(uint32_t val) { val = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0xFF00FF); re

2018-09-20 20:09:48

caffe源码分析-Blob

本文主要分析caffe源码分析-Blob,主要如下几个方面:overview整体上了解caffe的BlobBlob 成员变量Blob主要函数,核心在于Blob的使用实例以及其与opencv Mat的操作的相互转化(附带运行结果基于CLion)overviewBlob 是Caffe作为数据传输的媒介,无论是网络权重参数,还是输入数据,都是转化为Blob数据结构来存储,网络,求解器...

2018-09-12 21:20:50

caffe源码分析-SyncedMemory

本文主要分析caffe中Blob内存管理类SyncedMemory,主要内容包括:SyncedMemory和Blob的关系SyncedMemory中的方法,如内存的分配、释放SyncedMemory中内存的申请,是在数据访问时才分配而不是立马分配(通过enum SyncedHead状态实现)SyncedMemory和Blob的关系Blob中的主要数据成员如下,实际是在Syn...

2018-09-12 21:00:04

caffe源码分析-cmake 工程构建

本文主要说明下,caffe源码分析过程中的cmake(结合IDE CLion)工程构建问题。在分析caffe源码的过程中,我没有仅仅只是看代码,而是:自己从头构建一遍工程,这样能让我更好的了解大型的项目的构建。当然原始的caffe的构建感觉还是比较复杂(主要是cmake),我这里仅仅使用cmake构建,而且简化点,当然最重要的是支持CLion直接运行调试。从Blob文件开始从头开始复制每一...

2018-09-12 20:51:05

c++ set unordered_set区别

c++ std中set与unordered_set区别和map与unordered_map区别类似:set基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,...

2018-09-06 20:55:33

SSD人脸检测以及FDDB检测结果分析

前段时间使用caffe版本的SSD训练人脸检测,效果还不错,在FDDB上测试了下结果最终只有89%的准确率,但是误判率很低,结果如下:为了分析训练的SSD在FDDB上对于哪些类型的人脸检测结果较差,结果如下:蓝色的椭圆为FDDB的原始标注,红色的矩形为现有的SSD检测结果。可以看到:很模糊的脸没有检测到还有些基本上算不上脸极少数是人脸的确实没有检测到发现FDDB中不...

2018-08-26 20:09:12

GoogleNet论文笔记/小结

GoogLeNet和VGG是2014年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名。本文主要内容如下:GoogLeNet分析了现有提升网络精度的常见办法及缺点GoogLeNet解决上面问题的办法,Inception基本原理,以及为什么想到使用Inception。为什么不叫“GoogleNet”,而叫“GoogLeNet”Goo...

2018-08-15 20:46:50

VGG论文笔记/小结

VGG论文的主要内容如下:VGG研究了卷积网络深度在大规模的图像识别环境下对准确性的影响。主要贡献是使用非常小的(3×3)卷积滤波器架构对网络深度的增加进行了全面评估,这表明通过将深度推到16-19加权层可以实现对现有技术配置的显著改进。1 不同大小的核的区别,以及Alexnet与VGG对比1.1 首先说明下小核与大核的区别:VGG相比AlexNet的一个改进是采用连续的...

2018-08-14 20:42:00

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!