<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[常思考->有目标->重实践->善反思]]></title><description><![CDATA[常思考->有目标->重实践->善反思]]></description><link>https://blog.youkuaiyun.com/haluoluo211</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; haluoluo211]]></copyright><item><title><![CDATA[caffe c++示例（mnist 多层感知机c++训练，测试）]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82958604</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82958604</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 15:39:53 +0800</pubDate><description><![CDATA[caffe训练网络模型一般直接使用的caffe.bin: caffe train -solver solver.prototxt，其实这个命令的本质也是调用c++的Solver.
本文给出使用纯c++代码，使用mnist数据+多层感知机网络，训练数字分类问题。然后用C++调用训练好的模型测试分类。
solver.prototxt文件内容如下：
net: &amp;amp;quot;/home/xy/caffe_analys...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-db, io]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956800</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956800</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 11:20:26 +0800</pubDate><description><![CDATA[本文主要分析下caffe的源码，io操作，以及数据库文件（如lmdb）读取。
例如，从prototxt读取网络初始化参数：
NetParameter param;
ReadNetParamsFromTextFileOrDie(path, &amp;amp;amp;param);

bool ReadProtoFromTextFile(const char *filename, Message *proto) {
...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-DataTransformer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956728</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956728</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 11:13:38 +0800</pubDate><description><![CDATA[本文主要分析caffe中DataTransformer这个类, 主要作用是：


将Datum类型或者cv::Mat， 转化为caffe的Blob&amp;amp;lt;Dtype&amp;amp;gt;，并按照Transformation``Parameter参数对图像做处理，例如scale,mirro等


推断blob的shape


proto定义如下：
// Message that stores parameters...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-DataLayer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956694</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956694</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 11:09:42 +0800</pubDate><description><![CDATA[DataLayer作为caffe训练时的数据层（以多线程的方式读取数据加速solver的训练过程），继承自BaseDataLayer/BasePrefetchingDataLayer。
template &amp;amp;lt;typename Dtype&amp;amp;gt;
class BaseDataLayer : public Layer&amp;amp;lt;Dtype&amp;amp;gt; {
public:
    explicit Base...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-DataReader]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956624</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956624</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 11:02:33 +0800</pubDate><description><![CDATA[DataReader作为DataLayer的数据成员变量，以多线程的方式从数据库(如lmdb, hdf5)读取数据：
class DataReader {
public:
    explicit DataReader(const LayerParameter&amp;amp;amp; param);
    ~DataReader();

    inline BlockingQueue&amp;amp;lt;Datum*&amp;amp;g...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-InternalThread]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956589</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956589</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:59:10 +0800</pubDate><description><![CDATA[InternalThread封装自boost::thread的线程，主要用于多线程的数据获取(可以理解为solver前向传播的同时，后台线程继续获取下一个batch的数据集)：
class InternalThread {
public:
    InternalThread() : thread_() {}
    virtual ~InternalThread();
    //Caffe's...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-BlockingQueue]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956464</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956464</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:43:16 +0800</pubDate><description><![CDATA[BlockingQueue线程安全的队列， 作为caffe训练时数据同步的重要数据结构，本文做简要分析。

template&amp;amp;lt;typename T&amp;amp;gt;
class BlockingQueue {
public:
    explicit BlockingQueue();

    void push(const T&amp;amp;amp; t);
    bool try_pop(T* t);// n...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-InputLayer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956418</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956418</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:37:32 +0800</pubDate><description><![CDATA[对于输入层，我们首先分析最简单的InputLayer层，其常作为网络inference时的输入，简单的mnist使用示例如下：
layer {
  name: &quot;data&quot;
  type: &quot;Input&quot;
  top: &quot;data&quot;
  input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }
}


proto中相关的参数如下：
// Sp...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-layer_factory]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956378</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956378</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:33:23 +0800</pubDate><description><![CDATA[caffe中有许多的layer,在net中创建连接layer是通过工厂模式的方式创建，而不是每一个new然后连接。在net.cpp中创建layer方式如下：
layers_.push_back(LayerRegistry&amp;lt;Dtype&amp;gt;::CreateLayer(layer_param));
下面简要分析下layer_factory

template&amp;lt;typename Dtype...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-inner_product_layer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956259</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956259</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:21:23 +0800</pubDate><description><![CDATA[本文主要分析caffe inner_product_layer源码，主要内容如下：


结合使用以及proto定义介绍InnerProductLayer的参数;


简要分析Filler初始化，caffe中的layer参数，例如constant， gaussian;


InnerProductLayer的函数 核心LayerSetUp参数初始化， Reshape， Forward_cpu以及矩阵...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-ReLULayer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956157</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956157</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:09:18 +0800</pubDate><description><![CDATA[激活函数如:ReLu，Sigmoid等layer相对较为简单，所以在分析InnerProductLayer前，我们先看下激活函数层。
常见激活层ReLU的使用示例如下：

layer {
  name: &amp;quot;relu1&amp;quot;
  type: &amp;quot;ReLU&amp;quot;
  bottom: &amp;quot;conv1&amp;quot;
  top: &amp;quot;conv1&amp;quot;
}

我们可以看到bottom和]]></description><category></category></item><item><title><![CDATA[caffe源码分析-layer]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82956105</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82956105</guid><author>haluoluo211</author><pubDate>Sun, 07 Oct 2018 10:01:55 +0800</pubDate><description><![CDATA[本文主要分析caffe layer层，主要内容如下：


从整体上说明下caffe的layer层的类别，以及作用


通过proto定义与类Layer简要说明下Layer的核心成员变量;


Layer类的核心成员函数



1. 类Layer overview
caffe中的Layer主要分为如下几个模块：

输入层Data Layers

Data Layers定义了caffe中网络的输入，依...]]></description><category></category></item><item><title><![CDATA[c++ mnist转化为opecv Mat]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82792814</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82792814</guid><author>haluoluo211</author><pubDate>Thu, 20 Sep 2018 20:09:48 +0800</pubDate><description><![CDATA[本文主要介绍如何使用C++将mnist 数据集转化为Opencv Mat，问题来源主要代码以及运行示例如下：
uint32_t swap_endian(uint32_t val) {
    val = ((val &amp;amp;amp;lt;&amp;amp;amp;lt; 8) &amp;amp;amp;amp; 0xFF00FF00) | ((val &amp;amp;amp;gt;&amp;amp;amp;gt; 8) &amp;amp;amp;amp; 0xFF00FF);
    re]]></description><category></category></item><item><title><![CDATA[caffe源码分析-Blob]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82668678</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82668678</guid><author>haluoluo211</author><pubDate>Wed, 12 Sep 2018 21:20:50 +0800</pubDate><description><![CDATA[本文主要分析caffe源码分析-Blob，主要如下几个方面：


overview整体上了解caffe的Blob
Blob 成员变量
Blob主要函数，核心在于Blob的使用实例以及其与opencv Mat的操作的相互转化(附带运行结果基于CLion)


overview

Blob 是Caffe作为数据传输的媒介，无论是网络权重参数，还是输入数据，都是转化为Blob数据结构来存储，网络，求解器...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-SyncedMemory]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82668358</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82668358</guid><author>haluoluo211</author><pubDate>Wed, 12 Sep 2018 21:00:04 +0800</pubDate><description><![CDATA[本文主要分析caffe中Blob内存管理类SyncedMemory，主要内容包括：


SyncedMemory和Blob的关系
SyncedMemory中的方法，如内存的分配、释放
SyncedMemory中内存的申请，是在数据访问时才分配而不是立马分配(通过enum SyncedHead状态实现)




SyncedMemory和Blob的关系

Blob中的主要数据成员如下，实际是在Syn...]]></description><category></category></item><item><title><![CDATA[caffe源码分析-cmake 工程构建]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82668188</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82668188</guid><author>haluoluo211</author><pubDate>Wed, 12 Sep 2018 20:51:05 +0800</pubDate><description><![CDATA[本文主要说明下，caffe源码分析过程中的cmake（结合IDE CLion）工程构建问题。在分析caffe源码的过程中，我没有仅仅只是看代码，而是：


自己从头构建一遍工程，这样能让我更好的了解大型的项目的构建。当然原始的caffe的构建感觉还是比较复杂(主要是cmake)，我这里仅仅使用cmake构建，而且简化点，当然最重要的是支持CLion直接运行调试。
从Blob文件开始从头开始复制每一...]]></description><category></category></item><item><title><![CDATA[c++ set  unordered_set区别]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82468061</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82468061</guid><author>haluoluo211</author><pubDate>Thu, 06 Sep 2018 20:55:33 +0800</pubDate><description><![CDATA[c++ std中set与unordered_set区别和map与unordered_map区别类似：


set基于红黑树实现，红黑树具有自动排序的功能，因此map内部所有的数据，在任何时候，都是有序的。
unordered_set基于哈希表，数据插入和查找的时间复杂度很低，几乎是常数时间，而代价是消耗比较多的内存，无自动排序功能。底层实现上，使用一个下标范围比较大的数组来存储元素，形成很多的桶，...]]></description><category></category></item><item><title><![CDATA[SSD人脸检测以及FDDB检测结果分析]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/82083846</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/82083846</guid><author>haluoluo211</author><pubDate>Sun, 26 Aug 2018 20:09:12 +0800</pubDate><description><![CDATA[前段时间使用caffe版本的SSD训练人脸检测，效果还不错，在FDDB上测试了下结果最终只有89%的准确率，但是误判率很低，结果如下：



为了分析训练的SSD在FDDB上对于哪些类型的人脸检测结果较差，结果如下:蓝色的椭圆为FDDB的原始标注，红色的矩形为现有的SSD检测结果。



可以看到：


很模糊的脸没有检测到
还有些基本上算不上脸
极少数是人脸的确实没有检测到


发现FDDB中不...]]></description><category></category></item><item><title><![CDATA[GoogleNet论文笔记/小结]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/81710799</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/81710799</guid><author>haluoluo211</author><pubDate>Wed, 15 Aug 2018 20:46:50 +0800</pubDate><description><![CDATA[GoogLeNet和VGG是2014年ImageNet挑战赛(ILSVRC14)的双雄，GoogLeNet获得了第一名、VGG获得了第二名。

本文主要内容如下：


GoogLeNet分析了现有提升网络精度的常见办法及缺点
GoogLeNet解决上面问题的办法，Inception基本原理，以及为什么想到使用Inception。
为什么不叫“GoogleNet”，而叫“GoogLeNet”
Goo...]]></description><category></category></item><item><title><![CDATA[VGG论文笔记/小结]]></title><link>https://blog.youkuaiyun.com/haluoluo211/article/details/81674099</link><guid>https://blog.youkuaiyun.com/haluoluo211/article/details/81674099</guid><author>haluoluo211</author><pubDate>Tue, 14 Aug 2018 20:42:00 +0800</pubDate><description><![CDATA[VGG论文的主要内容如下：


VGG研究了卷积网络深度在大规模的图像识别环境下对准确性的影响。
主要贡献是使用非常小的（3×3）卷积滤波器架构对网络深度的增加进行了全面评估，这表明通过将深度推到16-19加权层可以实现对现有技术配置的显著改进。




1 不同大小的核的区别，以及Alexnet与VGG对比

1.1 首先说明下小核与大核的区别：

VGG相比AlexNet的一个改进是采用连续的...]]></description><category></category></item></channel></rss>