Caffe学习
文章平均质量分 65
iamzhangzhuping
这个作者很懒,什么都没留下…
展开
-
Faster RCNN generate.py
该模块的功能主要是生成rpn proposals。 + cv2.imread读取的图像的存储格式为H W K,且三通道的顺序为BGR + PIL.Image.open读取图片的存储格式为:W H (此时的数据为PIL库的某种对象),且三通道顺序为RGB 但是,当转换为np.array的时候,存储格式将H W K,常用的代码段为:def load_image(self, idx):原创 2016-05-15 19:41:18 · 5367 阅读 · 0 评论 -
Faster-rcnn
最后更新日期:2016年4月29日本教程主要基于python版本的faster R-CNN,因为python layer的使用,这个版本会比matlab的版本速度慢10%,但是准确率应该是差不多的。目前已经实现的有两种方式:Alternative training Approximate joint training 推荐使用第二种,因为第二种使用的显存更小,而且训练会更快,同时准确率差不多甚至原创 2016-05-08 12:33:24 · 2921 阅读 · 0 评论 -
Faster RCNN train.py
定义了一个类:class SolverWrapperclass SolverWrapper(object): """A simple wrapper around Caffe's solver. This wrapper gives us control over he snapshotting process, which we use to unnormalize原创 2016-05-15 19:43:04 · 3152 阅读 · 0 评论 -
Faster RCNN pascal_voc.py
主要定义了一个pascal_voc类,在类的内部定义了它的一些属性和方法。def _init_(self, image_set, year, devkit_path=None) 构造器方法def __init__(self, image_set, year, devkit_path=None): imdb.__init__(self, 'voc_' + year + '_'原创 2016-05-15 19:39:52 · 2979 阅读 · 0 评论 -
Faster RCNN roidb.py
1. roidb是一个列表,列表元素为字典2. prepare_roidb 函数def prepare_roidb(imdb): """Enrich the imdb's roidb by adding some derived quantities that are useful for training. This function precomputes the m原创 2016-05-15 19:39:23 · 4426 阅读 · 0 评论 -
Faster RCNN imdb.py
def merge_roidbs(a, b) 类imdb的静态方法,将a b两个roidb归并为一个roidb@staticmethod def merge_roidbs(a, b): assert len(a) == len(b) for i in xrange(len(a)): # boxes 采用vstack原创 2016-05-15 19:38:48 · 2774 阅读 · 0 评论 -
Faster RCNN train_faster_rcnn_alt_opt.py
def get_roidb(imdb_name, rpn_file=None):def get_roidb(imdb_name, rpn_file=None): imdb = get_imdb(imdb_name) #返回一个pascal_voc类对象 print 'Loaded dataset `{:s}` for training'.format(imdb.name)原创 2016-05-15 19:38:02 · 1988 阅读 · 1 评论 -
Python 装饰器,@property 以及 Pycaffe.py
Python装饰器的知识请参考:12步轻松搞定python装饰器 @property函数的知识请参考:Python进阶之“属性(property)”详解下面贴一段pycaffe.py中的代码@propertydef _Net_blobs(self): """ An OrderedDict (bottom to top, i.e., input to output) of netw原创 2016-05-13 17:28:05 · 1785 阅读 · 0 评论 -
如何用gdb调试caffe
基础知识:当我们进入gdb的时候,可能需要的指令主要有:1、程序运行参数。set args 可指定运行时参数。(如:set args 10 20 30 40 50)show args 命令可以查看设置好的运行参数。2、运行环境。path <dir> 可设定程序的运行路径。show paths 查看程序的运行路径。set environment varname [=value] 设置环境变原创 2016-05-26 18:25:19 · 2816 阅读 · 0 评论 -
Faster RCNN anchor_target_layer.py
class AnchorTargetLayer(caffe.Layer): """ Assign anchors to ground-truth targets. Produces anchor classification labels and bounding-box regression targets. """ def setup(self, botto原创 2016-05-17 11:13:49 · 6034 阅读 · 1 评论 -
sigmoid cross entorpy loss
1.Cross Entropy Error The mathematics behind cross entropy (CE) error and its relationship to NN training are very complex, but, fortunately, the results are remarkably simple to understand and implem原创 2016-05-07 09:58:34 · 2336 阅读 · 0 评论 -
Caffe softmax_loss_layer.cpp 学习
目录目录LayerSetUpReshapeget_normalizerForward_cpuBackward_cpuLayerSetUptemplate <typename Dtype>void SoftmaxWithLossLayer<Dtype>::LayerSetUp( const vector<Blob<Dtype>*>& bottom, const vector<Blo原创 2016-02-28 22:26:41 · 7874 阅读 · 0 评论 -
FCN中的transplant
FCN中的surgery.transplant函数用于拷贝learnable参数,其直接目的是:将VGG分类模型中的一些全连接层的参数正确地拷贝到相应的目标全连接层中。代码如下:def transplant(new_net, net, suffix=''): """ Transfer weights by copying matching parameters, coercing p原创 2017-05-10 18:58:01 · 1274 阅读 · 1 评论 -
caffe的Matlab接口的使用方法
caffe的Matlab接口的使用方法net.blobs(‘data’).set_data(ones(net.blobs(‘data’).shape)); net.blobs(‘data’).set_data(net.blobs(‘data’).get_data() * 10); 注意:因为Matlab是以1作为起始单元,且以列为主,在Matlab中使用四维blob为[width, height原创 2016-12-21 15:15:50 · 1787 阅读 · 0 评论 -
Invalid MEX-file: caffe.mexa64 的解决方案
问题如下: Invalid MEX-file ‘**/caffe.mexa64’ /usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version GLIBCXX_3.4.20 not found (required by /usr/lib/x86_64-linux-gnu/libgflags.s原创 2016-11-09 20:38:35 · 6065 阅读 · 1 评论 -
Caffe softmax_layer.cpp学习
目录目录首先需要注意的Forward_cpu函数backward_cpu函数backward_cpu函数实现说明首先需要注意的: 整个网络的参数的 gradient 的计算方法是从顶层出发向后,在 层的时候,会拿到从 得到的 也就是 ,然后需要做两个计算:首先是自己层内的参数的 gradient,比如如果是一个普通的全连通内积层,则会有参数 和 bias 参数 ,根据刚才的 Chain原创 2016-02-28 16:08:20 · 1346 阅读 · 0 评论 -
Caffe 里 top[i]->cpu_diff() bottomp[i]->cpu_diff() 取出梯度,这些梯度在默认的情况下 caffe将其设置为0
Caffe 里 top[i]->cpu_diff() bottomp[i]->cpu_diff() 取出梯度,这些梯度在默认的情况下 caffe将其设置为0,只有在有梯度往前传播,top和bottom的梯度发生更新后,才会有所改变 this->type():Convolution top[0]->cpu_diff()[0]:0.000000 top[0]->cpu_diff()[1]:0.00原创 2016-08-11 11:49:41 · 4253 阅读 · 0 评论 -
利用caffe的python接口进行训练时遇到的问题
利用caffe的python接口来训练:python ./train.py, 想输出梯度,便在solver.cpp里做了修改,添加代码:int max_len = 0; for (int l = 0; l < net_->layers().size(); ++l) { Layer<Dtype>& layer = *net_->layers()[l].get();原创 2016-08-16 14:16:19 · 1697 阅读 · 0 评论 -
caffe loss NaN
by Yangqing on 14 May 2014For a sanity check, try running with a learning rate 0 to see if any nan errors pop up (they shouldn’t, since no learning takes place). If data is not initialized well, it mig转载 2016-07-22 22:17:40 · 1084 阅读 · 0 评论 -
Faster RCNN proposal_layer.py
定义了一个 ProposalLayer 类, 在rpn_test.pt中会用到。class ProposalLayer(caffe.Layer): """ Outputs object detection proposals by applying estimated bounding-box transformations to a set of regular boxes原创 2016-05-23 18:53:23 · 6493 阅读 · 0 评论 -
Caffe net.hpp net.cpp学习
主要定义了一个模板类net首先看一下数据成员:/// @brief The network name string name_;/// @brief The phase: TRAIN or TEST Phase phase_;/// @brief Individual layers in the net vector > > layers_; vector原创 2016-01-18 15:51:42 · 4272 阅读 · 0 评论 -
Faster RCNN minibatch.py
def _sample_rois(roidb, fg_rois_per_image, rois_per_image, num_classes) 在 def get_minibatch(roidb, num_classes) 中调用此函数,传进来的实参为单张图像的roidb ,该函数主要功能是随机组合sample of RoIs, 来生成前景样本和背景样本。def _sample_rois(原创 2016-05-15 19:40:30 · 3900 阅读 · 0 评论 -
Faster RCNN roi_pooling_layer.cpp roi_pooling_layer.cu
主要定义了一个 ROIPoolingLayer 类ROIPoolingLayer的受保护数据成员有:int channels_;int height_;int width_;int pooled_height_; // pooling后的特征图的height_int pooled_width_; // pooling后的特征图的width_Dtype spatial_scale_; //原创 2016-05-25 17:25:24 · 6673 阅读 · 0 评论 -
Caffe Layer.hpp学习
首先,看一下数据成员,主要有:protected:LayerParameter layer_param_ : The protobuf that stores the layer parameters——caffe.proto文件里定义的message,相应的caffe.pb.h里定义的一个类。Phase phase_ :The phase: TRAIN or TEST——Pha原创 2016-01-11 21:55:20 · 1081 阅读 · 0 评论 -
Caffe: net.set_mode_gpu VS. caffe.set_mode_gpu
In the previous caffe version, I use the net.set_mode_gpu in python. But, the new caffe codes remove the set_mode_gpu function from net, and instead use the caffe.set_mode_gpu.However, it is noteworth转载 2016-03-04 18:07:46 · 3663 阅读 · 0 评论 -
Caffe Blob.hpp 学习
Blob作为Caffe的四大模块之一,负责完成CPU/GPU存储申请、同步和数据持久化映射。Caffe内部数据存储和通讯都是通过Blob来完成,Blob提供统一的存储操作接口,可用来保存训练数据、模型参数等。Blob是一个高维连续数组,批处理图像数据时通常使用4维Blob,Blob的维度可以表示为(N, K, H, W),每个维度的意思分别是:N: 数据的个数,例如SGD时一次mini-bat原创 2016-01-13 20:13:25 · 1076 阅读 · 0 评论 -
Caffe caffe.pb.h 学习
此博文仅供自己学习,学习过程中的笔记,后续修改更新Class LayerParameter里面的几个比较重要的数据成员:::google::protobuf::RepeatedPtrField blobs_::google::protobuf::RepeatedField loss_weight_原创 2016-01-12 22:20:32 · 1496 阅读 · 0 评论 -
Caffe BaseDataLayer.cpp BasePrefetchingDataLayer.cpp DataLayer.cpp 学习
本文是自己在学习Caffe源码做的笔记,结合自己的理解。但是水平有限,特别是多线程编程方面,还需要继续学习。如有错误或者疑问,欢迎指正,希望不会带来误解。后续也会即使修改更新!先贴几张图来说明继承关系:data_layers.hpp中定义了如下模板类:BaseDataLayer, Batch, BasePrefetchingD原创 2016-01-25 19:02:57 · 2202 阅读 · 2 评论 -
Solver.hpp Solver.cpp学习
主要实现了一个模板类solver,而且是个抽象类。首先看一下数据成员SolverParameter param_;int iter_;//在测试的时候,需要迭代的次数,即test_iter* batchsize(测试集的)=测试集的大小,测试集batchsize可以在prototxt文件里设置int current_step_;shared_ptr > net_;vect原创 2016-01-20 17:36:29 · 2275 阅读 · 1 评论 -
Caffe——when a blob will copy data
Caffe官网原文:// Assuming that data are on the CPU initially, and we have a blob. const Dtype* foo; Dtype* bar; foo = blob.gpu_data(); // data copied cpu->gpu. foo = blob.cpu_data(); // no data co原创 2016-01-01 18:51:39 · 891 阅读 · 0 评论 -
Google Protocol Buffer 的使用和原理
点击打开链接原创 2015-11-22 20:42:06 · 461 阅读 · 0 评论 -
学习笔记:Caffe上配置和运行MNIST
转自:http://www.cnblogs.com/yymn/p/4553671.htmlMNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,图片大小28*28,在Caffe上配置的第一个案例 1首先,获取minist的数据包。 这个版本是四个数据包cd $CAFFE_ROOT./data/mnist/get_mnist.sh转载 2015-11-22 18:22:57 · 875 阅读 · 1 评论 -
CBLAS的安装与使用
CBLAS是BLAS的C语言接口。BLAS的全称是Basic Linear Algebra Subprograms,中文大概可以叫做基础线性代数子程序。主要是用于向量和矩阵计算的高性能数学库。本身BLAS是用Fortran写的,为了方便C/C++程序的使用,就有了BLAS的C接口库CBLAS。BLAS的主页是http://www.netlib.org/blas/,CBLAS的下载地址也可以在这转载 2016-02-21 10:21:19 · 2624 阅读 · 0 评论 -
cblas_sgemm cblas_sgemv
矩阵与矩阵的乘法,分为双精度的cblas_dgemm和单精度的cblas_sgemm,两个函数的参数意义一样,只是类型不一样运算式:C=alpha*A*B+beta*C 一般取alpha=1.0,beta=0.0 即计算式:C=A*Bcblas_sgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,A的列数转载 2016-02-21 20:25:03 · 9744 阅读 · 0 评论 -
Faster RCNN layer.py
def setup(self, bottom, top)方法: 该方法主要是在创建RoIDataLayer的时候调用。结合_caffe.cpp里面.def("setup", &Layer::LayerSetUp),个人猜测(水平有限),setup(self, bottom, top)应该还是调用底层的Layer::LayerSetUp方法,同时bottom, top也分别对应着:const vec原创 2016-05-15 19:41:42 · 3717 阅读 · 0 评论 -
Faster RCNN blob.py
def im_list_to_blob(ims):将图像转换成blob(np.ndarray)def im_list_to_blob(ims): """Convert a list of images into a network input. Assumes images are already prepared (means subtracted, BGR order原创 2016-05-15 19:40:53 · 1781 阅读 · 0 评论 -
caffe Accuracy.cpp
比较简单,需要注意的一点是,在训练自己的数据的时候,label应该从0开始#include <functional>#include <utility>#include <vector>#include "caffe/loss_layers.hpp"#include "caffe/util/math_functions.hpp"namespace caffe {template <typena原创 2016-03-28 20:18:46 · 1695 阅读 · 1 评论 -
"cblas_ddot"未定义的引用
#include <iostream>#include <math.h>extern "C" {#include <cblas.h>}using namespace std;int main(int argc, char const *argv[]){ double a[6] ={2.,1.,1.5,1.,1.,1.}; double b[6] ={2.,3.,2.,3.,原创 2016-02-27 19:44:40 · 3319 阅读 · 0 评论 -
Softmax vs. Softmax-Loss: Numerical Stability
参考博文《Softmax vs. Softmax-Loss: Numerical Stability》 Softmax vs. Softmax-Loss: Numerical Stability其中有关键的几段话:整个网络的参数的 gradient 的计算方法是从顶层出发向后,在 层的时候,会拿到从 得到的 也就是 ,然后需要做两个计算:首先是自己层内的参数的 gradient,比如如果是原创 2016-02-28 11:15:33 · 805 阅读 · 0 评论 -
Caffe Relu_layer.cpp 学习
目录目录Forward_cpuBackward_cpu数学公式Forward_cpu() 前向传播函数:template <typename Dtype>void ReLULayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { const原创 2016-02-24 20:21:45 · 1125 阅读 · 0 评论