c/c++
xizero00
梦如梦,潜入梦深处
展开
-
Caffe实战系列:实现自己Caffe网络层
本文通过自己实现一个简单的caffe的层来阐述如何实现自己的网络层,同时介绍caffe的运行机理。为深度学习打下坚实的基础。原创 2016-09-13 21:00:01 · 7980 阅读 · 9 评论 -
caffe代码阅读10:Caffe中卷积的实现细节(涉及到BaseConvolutionLayer、ConvolutionLayer、im2col等)-2016.4.3
本文介绍了Caffe中的卷积层的实现,以及卷积实现的时候所使用的im2col的实现,其中重点介绍了im2col的实现原理。原创 2016-04-03 13:05:59 · 18274 阅读 · 1 评论 -
Cmake系列:如何使用CMake编译自己项目
cmake的使用原创 2016-03-24 21:15:30 · 15899 阅读 · 2 评论 -
魔改Cmake系列:cmake中Boost找不到库的解决方法
# ------------------------------------------------------------------------# Begin finding boost libraries# ------------------------------------------------------------------------FindBoost.cmak原创 2016-03-19 16:17:54 · 24844 阅读 · 11 评论 -
魔改Cmake系列:编译caffe的时候找不到OpenCV
可能的原因是你编译的用的是比如是vs2010,然后生成文件所在的文件目录就变成了vc11,而你在需要编译其他东西的时候,比如caffe的时候你用的是vs2013,那么此时应该是vc12,这个时候就蛋疼了,cmake找不到opencv了。咋办?E:\opencv3\buildtemp\install下的OpenCVConfig.cmake if(MSVC_VERSION EQUAL 140原创 2016-03-19 16:26:24 · 3376 阅读 · 0 评论 -
caffe 实战系列:proto文件格式以及含义解析:如何定义网络,如何设置网络参数(以AlexNet为例) 2016.3.30
caffe 层的定义以及参数的设置原创 2016-03-30 11:52:34 · 7932 阅读 · 0 评论 -
caffe代码阅读5:Layer的实现细节-2016.3.17
解析Caffe中的Layer类的相关具体的实现。原创 2016-03-17 15:57:22 · 14059 阅读 · 9 评论 -
caffe代码阅读4:DataTransformer以及io的实现细节-2016.3.16
介绍Caffe的数据转换的具体实现以及IO的具体实现。对相关的代码进行剖析原创 2016-03-16 15:50:47 · 7209 阅读 · 3 评论 -
caffe代码阅读3:data_reader、internalthread以及blocking_queue的实现细节-2016.3.15
caffe中data_reader、internalthread以及blocking_queue的实现细节介绍原创 2016-03-16 00:04:02 · 4551 阅读 · 1 评论 -
关于opencv3.0 beta 编译出现ORB那边的错误的解决
好久没碰opencv了,现在已经3.0 beta了。今天编译遇到了error: cannot declare variable ‘orb’ to be of abstract type ‘cv::ORB原因是ORB这个类不能再这么调用了。在opencv 根目录找到opencvroot/samples/gpu/performance/tests.cpp修改成如下代码。TEST(O原创 2015-01-28 01:42:37 · 6147 阅读 · 2 评论 -
Caffe解惑:caffe中的前传和反传是如何确定的?
有人一直对Caffe does all the bookkeeping for any DAG of layers to ensure correctness of the forward and backward passes。这句话有疑惑。我给出解释:首先给出caffe确定前传和反传的整体流程:首先根据参数文件的字符串到层的注册表中获取层的Creator函数,然后创原创 2016-03-24 20:37:57 · 3812 阅读 · 0 评论 -
caffe代码阅读1:blob的实现细节-2016.3.14
caffe 中 BLOB的实现一、前言等着caffe没有膨胀到很大的程度把caffe的代码理一理(1)第一次阅读Caffe的源码,给人的印象就是里面大量使用了gtest,确实也简化了不少代码,看起来很清晰。(2)caffe的文档是使用doxygen来生成的,这点在注释里面有体现,对于自己以后的项目也可以借鉴。二、相关知识:(1)explicit关键字的作用是原创 2016-03-14 15:35:55 · 17935 阅读 · 1 评论 -
caffe代码阅读2:common的实现细节-2016.3.14
前言common中给出的是一些初始化的内容,其中包括随机数生成器的内容以及google的gflags和glog的初始化,其中最主要的还是随机数生成器的内容。重点这里有点绕,特别是Caffe类里面有个RNG,RNG这个类里面还有个Generator类在RNG里面会用到Caffe里面的Get()函数来获取一个新的Caffe类的实例(如果不存在的话)。然后RNG里面用到了Genera原创 2016-03-14 19:39:21 · 9013 阅读 · 11 评论 -
Caffe代码阅读11:absval_layer层的实现
这一层比较简单:主要就是求绝对值,反传部分的代码也很简单里头用到了caffe_abs这个函数以及caffe_cpu_sign这两个函数需要注意的是caffe_cpu_sign在math_functions.hpp里头定义得比较特别在math_functions.hpp里只有caffe_sign,通过一个宏定义生成了caffe_cpu_sign这个函数整体来说没啥特别的内容,直接上代原创 2016-08-17 10:22:18 · 5308 阅读 · 0 评论 -
Caffe解惑:为什么Caffe里头有mutable_cpu_data和cpu_data
一开始看代码的时候会纳闷,为啥caffe里头又一个cpu_data还要有一个mutable_cpu_data二话不说翻出源代码看看究竟有啥区别:const void* SyncedMemory::cpu_data() { to_cpu(); return (const void*)cpu_ptr_;}void* Syn原创 2016-07-06 22:05:28 · 15959 阅读 · 3 评论 -
Caffe解惑:Caffe中是如何控制loss的
caffe是使用loss_weight控制loss的传递在基本类Layer里的函数如下对于loss Layer loss_weight非0,对于非loss Layer,loss_weight都是0所以Layer对网络loss的贡献值也为0原创 2016-04-18 19:29:10 · 9404 阅读 · 0 评论 -
Caffe实战系列:如何将CRFAsRNN移植到caffe-windows上去
(1)移植辅助的文件将include/caffe/util/下的coords.hpp和modified_permutohedral.hpp复制到caffe-windows对应的目录将src/caffe/util/modified_permutohedral.cpp复制到对应的目录中去(2)移植Layer中的特性在include/caffe/layer.h原创 2016-04-17 18:10:48 · 6305 阅读 · 11 评论 -
caffe代码阅读7:LayerRegistry的实现细节-2016.3.18
Caffe代码阅读之LayerRegister的实现原创 2016-03-18 15:22:08 · 4476 阅读 · 4 评论 -
caffe代码阅读6:Filler的实现细节-2016.3.18
caffe中filler类的实现代码阅读。原创 2016-03-18 11:21:06 · 10914 阅读 · 8 评论 -
caffe代码阅读9:SyncedMemory的实现细节-2016.3.28
该类SyncedMemory主要就是在内存分配空间以及在GPU上分配空间,并且负责同步数据,此外我看mutable_cpu_data和cpu_data 这两个函数的主要区别就是head_是否改变,至于这两个函数的命名上的mutable是有着互斥的含义的。究竟体现在哪儿,我的感受是,这里的mutable的体现主要是在调用了mutable_cpu_data之后强制设置了head_为HEAD_AT_CPU,从而保护了cpu上的数据.原创 2016-03-28 21:09:43 · 5685 阅读 · 8 评论 -
caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28
Caffe中Layer类是所有神经网络层的基类,BaseDataLayer继承自该类,BasePrefetchingDataLayer继承自BaseDataLayer,DataLayer继承自BasePrefetchingDataLayer。有了上述几个基础的类之后,其他的类都是从这几个类进行派生。比如DummyDataLayer,HDF5Layer和HDF5OutputLayer都是直接继承自Layer。MemoryDataLayer则是继承自BaseDataLayer凡是涉及到直接读取数据文原创 2016-03-28 17:38:35 · 14229 阅读 · 3 评论 -
caffe 实战系列:如何写自己的数据层(以Deep Spatial Net为例)
caffe中如何添加新的层原创 2016-03-24 10:53:44 · 10680 阅读 · 2 评论 -
cvCalEMD2函数的一点解释
前段时间cwj649956781说他不理解cvCalEMD2函数作用,因为时间关系,到现在才回复,实在是抱歉!1.What is EMD?所谓的EMD实际上就是Earth Mover's Distance的缩写也就是陆地移动距离2.EMD有何用?1)原因:因为光线变化能够导致图像的颜色值漂移,虽然没有改变颜色直方图的形状,但是却改变了颜色值的位置,会导致匹配原创 2012-04-20 11:19:22 · 1981 阅读 · 0 评论 -
关于C++中open打开文件函数的诡异的问题
问题:使用Open函数打开带有中文路径的文件,结果发现路径不存在原因:Open函数不支持中文路径,除非你用Unicode拓展:该问题一直存在,从vs2005-vs2010解决方法:使用英文文件夹,路径中最好不要包含中文。诡异的问题。原创 2012-04-20 10:41:55 · 3659 阅读 · 1 评论 -
关于const的一点小花招
const int num = 0; const int *p = #//指向const类型的指针,指针值可以变 int num2 = 0; int *const cp = &num2;//const指针,指针所指向的变量的值可以变 const int *cons原创 2011-08-03 21:25:35 · 897 阅读 · 0 评论 -
数字图像基本处理算法
数字图像基本处理算法xizero00常熟理工学院(CIT) 计算机科学与工程学院 下一代互联网实验室(NGIL Lab)Email:[email protected]由于SIFT算法需要用到很多算法,所以这段时间研究了一下一些最基本的图像处理算法,好了,废话不多说,先看结果,接下原创 2011-07-25 11:16:03 · 29962 阅读 · 5 评论 -
手把手教你数据恢复编程(二)基础知识篇
好了。接上一篇,本篇,我们将详细讲解NTFS文件系统的一些重要的数据结构,闲话少叙,咱们开讲。NTFS文件系统一、NTFS简介NTFS(New Technology File System)文件系统是微软公司同时和Windows NT(New Technology)操作系统开始设原创 2011-07-12 12:51:41 · 7598 阅读 · 3 评论 -
Windows Mobile 和 Wince(Windows Embedded CE) 下的 WTL(Windows Template Library) 界面(UI)开发
Windows Mobile 和 Wince(Windows Embedded CE) 下的 WTL(Windows Template Library) 界面(UI)开发作者:Jake Lin 来源:博客园 上篇文章 Windows Mobile 和 Wince 下的 WTL(W转载 2011-07-09 11:40:32 · 1061 阅读 · 0 评论 -
WTL之父Nenad Stefanovic访谈录
WTL之父Nenad Stefanovic访谈录采访:myan,翻译:cbermyan引介作为现代C++最重要的特色技术,template正在各个传统领域攻城略地。从基本算法与数据结构,到正则表达式与XML解析,从高性能数学计算,到资源的分配与管理,从网络分布式计算环境,到组件模转载 2011-07-08 20:45:32 · 797 阅读 · 0 评论 -
DeviceIoControl一些参数的解释
<br />FSCTL_DISMOUNT_VOLUME 卸下磁盘<br /><br />FSCTL_LOCK_VOLUME 锁住磁盘<br /><br />FSCTL_UNLOCK_VOLUME 解锁磁盘<br /><br />IOCTL_DISK_CHECK_VERIFY检查一个可拆除介质设备的变化<br /><br />IOCTL_DISK_EJECT_MEDIA 从一个SCSI设备中弹出介质<br /><br />IOCTL_DISK__FORMAT_TRACKS 格式化一个连续的磁道集<br /><原创 2011-04-04 21:32:00 · 4939 阅读 · 0 评论 -
关于ComboBox显示下拉列表的时候显示不出来的解决方法
<br />CRect r; <br /> m_ctrcbdstdisk.GetDroppedControlRect(&r); <br /> m_ctrcbdstdisk.GetParent()-> ScreenToClient(&r); <br /> r.bottom +=30; //加30个象素 <br /> m_ctrcbdstdisk.MoveWindow(&r); <br /> m_ctrcbsrcdisk.GetDroppedControlRect(&r); <br />转载 2011-02-19 18:48:00 · 4890 阅读 · 0 评论 -
关于Winbio中出现 HANDLE为0x8009800C的原因探究
最近在搞指纹识别的程序,调用微软提供的WBF 框架的API,总是出现不支持的操作,或者出现 HANDLE为0x8009800C的情况查了一下MSDN,之前一直很郁闷,不知道为什么总是出现这个问题今天偶然把之前注册的指纹删除掉,然后再用微软提供的API调用了Enroll函数来注册指纹发现注册成功希望能给大家提一个醒,在调用函数之前,看看自己有没有已经注册了指纹,如果已经注册了该指纹,可能指纹数据库中已经保存了该信息所以,最好把之前注册的指纹信息删除,然后再调用捕获或者注册指纹的函数原创 2010-08-26 20:40:00 · 134 阅读 · 0 评论 -
关于VC6IDE的class view的问题(Go To Definition不能找到定义(实现))
一直在用vc6做项目可是发现vc6的class view总是有问题查了一下资料,老外说是class view的一个bug-----------------------症状--------------------------------我已经定义了该函数,并且已经实现了,编译也能通过可是当我使用Go To Definition的功能的时候,死活就是说我没实现查过资料后知道,原来这是由于typedef xbr XBR我用XBR定义了一个参数,于是,就出现了上述问题了----------下面是老外的解答,小抄一下原创 2010-08-13 23:06:00 · 1884 阅读 · 0 评论 -
关于string的一点思考
string str("hello"); const char *p = str.c_str(); char *pp = &str[0]; unsigned int num = (unsigned int)p; cout << "0x" <<hex << num << e原创 2011-08-03 21:15:24 · 1116 阅读 · 0 评论 -
函数指针不能直接调用类的成员函数
函数指针不能直接调用类的成员函数,需采用间接地方法。原因是成员函数指针与一般函数指针有根本的不同,成员函数指针除包含地址信息外,同时携带其所属对象信息。一般采用以下三种方法解决:1。将需要调用的成员函数设为static类型,因为static类型成员函数与类是分开的,其函数指针转载 2011-08-04 20:45:29 · 2081 阅读 · 1 评论 -
读C++ Primer 之 句柄类
我们知道C++中最令人头疼的当属指针,如果您申请了对象却没有释放它,时间一长就会造成系统崩溃,大量的内存溢出使得您的程序的健壮性出现问题而句柄类就是为了能够解决这一问题而出现的,句柄类有点类似于智能指针。好了,废话不多说,我们来看代码首先我们来看 sample原创 2011-08-08 00:58:47 · 1577 阅读 · 0 评论 -
SIFT算法以及RANSAC算法中的数据归一化研究
1.什么是数据归一化?归一化是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关系。简化计算,缩小量值的有效办法。2.数据归一化的必要性在RANSAC算法中,计算2D homography过程中,需要依赖图像的坐标系,那么图像的相似变换T就不能够保证不变性,归一化的方法能够消除坐标系的影响3.数据归一化的好处RANSAC中:能够保证即便是不同坐标系的原创 2012-04-12 15:48:35 · 4532 阅读 · 0 评论 -
关于fread读数据诡异的问题
论坛问题:http://topic.csdn.net/u/20120411/10/f00f847f-e185-4d7e-bc82-985b89dcb20f.html症状:看见没,命名是读取了10个int,可是文件指针却到了179原因及解决方案:解决方法:fopen("data.txt","rb"))原创 2012-04-11 11:18:26 · 1654 阅读 · 0 评论 -
关于SetWindowOrgEx和SetViewPortOrgEx之区别
在http://topic.csdn.net/u/20120409/02/f13fa322-f95d-4491-92e5-ef44c7223a35.html?seed=944436769&r=78183266#r_78183266看到了楼主的提问仔细研究了一下这两个函数的区别,同时也防止自己忘记。视口:基于设备坐标的,就是视口的(0,0)即对应设备坐标的(0,0)。原创 2012-04-09 18:29:16 · 4698 阅读 · 1 评论 -
读OpenCV之小侃高斯滤波
一、前言:关于高斯滤波在我的前一篇文章《数字图像基本处理算法》中有所谈及那篇只是介绍了高斯滤波的应用,现在这一篇将着重简介高斯滤波的原理和应用,一探个究竟!二、啥是高斯滤波?好吃么? 高斯滤波,说白了就是一个函数来对输入的信号(其实这里的信号就原创 2011-08-25 22:09:41 · 7483 阅读 · 2 评论