caffe
yeler082
本科就读于新疆大学软件学院,现阶段在西安交通大学攻读软件工程硕士,研方向为计算机视觉(图像识别、目标检测)
展开
-
有关于caffe版本的介绍
caffe官网:http://caffe.berkeleyvision.org/ caffe可视化工具链接:http://ethereon.github.io/netscope/quickstart.html1.最原始的最开始版本:伯克利BVLC版 https://github.com/BVLC/caffe 主要在Linux上运行,有matlab和Python接口原创 2017-12-18 00:21:22 · 3225 阅读 · 0 评论 -
caffe简要介绍
一、深度学习参考资料英文资料:1. Deep Learning by Yoshua Bengio, Ian Goodfellow and Aaron Courville2. Deep Learning by Microsoft Research3. Stanford University 2016 CS231n: Convolutional Neural Networks for原创 2017-12-20 21:17:39 · 1687 阅读 · 0 评论 -
caffe运行版本说明
caffe我以前安装在了服务器上,而且已经安装成功,测试过了一下,今天在使用时发现报错了。这里记录一下我如何解决的。1、首先我导入caffeyeler082@xaserver:~$ pythonPython 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19)[GCC 7.2.0] on linuxType "help", "...原创 2018-09-19 17:12:13 · 2913 阅读 · 0 评论 -
caffe常见bug及解决方案
1、Check failed: shape[i] <= 0x7fffffff / count_ (1000 vs. 684) blob size exceeds INT_MAX意思是图片大小过大,超出了caffe设定的INT值范围,一种最为简便的方法是将其中较大的图片resize一下。还有就是改变其中blob.cpp源码中的大小设定,然后重新编译caffe,建议新手不要这么做。...原创 2018-09-19 20:59:01 · 1089 阅读 · 0 评论 -
【1】Ubuntu16.04+caffe-GPU安装
一.必要依赖包安装sudo apt-get install build-essentialsudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-devsudo ...原创 2018-10-12 17:07:43 · 632 阅读 · 0 评论 -
【2】Caffe学习系列:Data数据层及参数
要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成。所有的参数都定义在caffe.proto这个文件中。要熟练使用caffe,最重要的就是学会配置文件(prototxt)的编写。层有很多种类型,比如Data,Convolution,Pooling等,层之间的数据流动是以Blobs的方式进行。...转载 2018-10-12 20:32:02 · 576 阅读 · 0 评论 -
【3】Caffe学习系列:视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param.本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层。1、Convolution层:就是卷积层,是卷积神经网络(CNN)的核心层。层类型...转载 2018-10-12 20:38:05 · 398 阅读 · 0 评论 -
【4】Caffe学习系列:激活层(Activiation Layers)及参数
在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的。从bottom得到一个blob数据输入,运算后,从top输入一个blob数据。在运算过程中,没有改变数据的大小,即输入和输出的数据大小是相等的。输入:n*c*h*w输出:n*c*h*w常用的激活函数有sigmoid, tanh,relu等,下面分别介绍。1、Sigmoid对每个输入数据,利用sig...转载 2018-10-12 20:46:03 · 375 阅读 · 0 评论 -
【5】Caffe学习系列:其它常用层及参数
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置。1、softmax-losssoftmax-loss层和softmax层计算大致是相同的。softmax是一个分类器,计算的是类别的概率(Likelihood),是Logistic Regression 的一种推广。Logist...转载 2018-10-12 20:53:51 · 277 阅读 · 0 评论 -
【6】Caffe学习系列:Blobs,Layer and Net以及对应配置文件的编写
深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成。Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型。它将所有的信息数据定义为blobs,从而进行便利的操作和通讯。Blob是caffe框架中一种标准的数组,一种统一的内存接口,它详细描述了信息是如何存储的,以及如何在层之间通讯的。1、blobsBlobs作为caffe自定义的...转载 2018-10-12 20:59:41 · 351 阅读 · 0 评论 -
【7】Caffe学习系列:solver及其配置
首先给一个来自于知乎的 超详细的caffe solver配置参数说明整理(独家提供)。solver算是caffe的核心的核心,它协调着整个模型的运作。caffe程序运行必带的一个参数就是solver配置文件。运行代码一般为$ caffe train --solver=*_slover.prototxt在Deep Learning中,往往loss function是非凸的,没有解析解,...原创 2018-10-12 21:11:18 · 389 阅读 · 0 评论 -
【8】Caffe学习系列:solver优化方法(梯度下降算法)
对于神经网络模型,借助于BP算法可以高效地计算梯度,从而实施梯度下降算法。但梯度下降算法一个老大难的问题是:不能保证全局收敛。如果这个问题解决了,深度学习的世界会和谐很多。梯度下降算法针对凸优化问题原则上是可以收敛到全局最优的,因为此时只有唯一的局部最优点。而实际上深度学习模型是一个复杂的非线性结构,一般属于非凸问题,这意味着存在很多局部最优点(鞍点),采用梯度下降算法可能会陷入局部最优,这应该是...转载 2018-10-16 09:26:49 · 710 阅读 · 0 评论 -
【9】Caffe学习系列:运行caffe自带的简单例子
为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载。但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了。注意:在caffe中运行所有程序,都必须在根目录下进行,即caffe/,否则会出错,因为脚本文件对应的目录是caffe的根目录。1、catand fish-bike实例step1: 生成trai...原创 2018-10-16 09:54:42 · 464 阅读 · 0 评论 -
【10】Caffe学习系列:命令行解析
caffe的运行提供三种接口:c++接口(命令行)、python接口和matlab接口。本文先对命令行进行解析,后续会依次介绍其它两个接口。其实大部分情况下我们会使用python接口进行调用,当然caffe提供了C++命令行接口,还是有必要了解一下。命令行参数有个优点是支持多GPU执行。caffe的c++主程序(caffe.cpp)放在根目录下的tools文件夹内, 当然还有一些其它的功能文件...转载 2018-10-16 10:20:57 · 285 阅读 · 0 评论 -
【11】Caffe学习系列:Tools图像数据转换成db(leveldb/lmdb)文件
在深度学习的实际应用中,我们经常用到的原始数据是图片文件、二进制文件、文本文件,图片文件有如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致,所以不可能用一套代码就可以实现所有类型的数据读取。而在caffe中经常使用的数据类型是lmdb或leveldb,这样就将输入的数据类型定义为一种统的输入格式,而且这样的数据类型还可以提高IO的利用率。因此就产生了这样的一个问题:...转载 2018-10-16 10:24:29 · 391 阅读 · 0 评论 -
【12】Caffe学习系列:训练和测试自己的图片
一、准备数据有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载imagenet图片来训练。验证码始终出不来需要翻墙(是google网站的验证码)。但是我没有下载,原因是数据太大了。。。我去网上找了一些其它的图片来代替,共有500张图片,分为大巴车、恐龙、大象、鲜花和马五个类,每个类100张。需要的同学,可到网盘下...转载 2018-10-16 11:11:52 · 478 阅读 · 0 评论 -
【13】Caffe学习系列:数据可视化环境(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的。只能借助其它的库或接口,如opencv, python或matlab。更多人会使用python接口来进行可视化,因为python出了个比较强大的东西:ipython notebook, 现在的最新版本改名叫jupyter notebook,它能将python代码搬到浏览器上去执行,以富文本方式显示,使得整个工作可以以笔记的形式展现、存储...转载 2018-10-16 17:03:37 · 363 阅读 · 0 评论 -
【14】Caffe学习系列:Tools计算图片数据的均值
图片减去均值后,再进行训练和测试,会提高速度和精度。因此,一般在各种模型中都会有这个操作。那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算。一、二进制格式的均值计算caffe中使用的均值数据格式是binaryproto, 作者为我们提供了一个计算均值的文件compute_...转载 2018-10-16 20:23:03 · 442 阅读 · 0 评论 -
【15】可视化:初识数据可视化
因为csdn不支持文件直接显示,写ipynb文件有些难受,所以先把文件托管到我的github里面,可从github浏览。首先将caffe的根目录作为当前目录,然后加载caffe程序自带的小猫图片,并显示。图片大小为360x480,三通道import numpy as npimport matplotlib.pyplot as plt%matplotlib inlineimpor...转载 2018-10-16 20:27:55 · 389 阅读 · 0 评论 -
【16-20】可视化:jupyter notebook做可视化
由于使用的是jupyter notebook,这里不做展示,详细内容可参考github。net = caffe.Net(caffe_root + 'examples/cifar10/cifar10_full.prototxt', caffe_root + 'examples/cifar10/my_iter_10000.caffemodel', ...转载 2018-10-16 21:31:47 · 2297 阅读 · 0 评论 -
【21】digits工具:caffe图形化操作工具digits的安装
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化。也许有人会觉得比较复杂。确实,对于一个使用惯了windows视窗操作的用户来说,各种命令就要了人命,甚至会非常抵触命令操作。没有学过python,要自己去用python编程实现可视化,也是非常头痛的事情。幸好现在有了nvidia digits这款工具,这些问题都可以...转载 2018-10-20 10:53:58 · 465 阅读 · 0 评论 -
【22】digits工具:运行mnist实例
现在来运行一个实例:mnist(名符其实的helloworld),具体文档参考digits的Github原始数据需要的是图片,但网上提供的mnist数据并不是图片格式的数据,因此我们需要将它转换成图片才能运行。digits提供了一个脚本文件,用于下载mnist, cifar10 和cifar100 三类数据,并转换成png格式图片。Download the data我们先在当前用户...转载 2018-10-20 15:06:27 · 689 阅读 · 0 评论 -
【1】caffe的python接口学习:生成train.prototxt文件
caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现。caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更加深入。如何配置CAFFE的python接口?如何将图片转换成LMDB文件?如何计算训练数据的均值文件?以上这些操作都是训练之前的预处理操作,不管是用什么接口,都要用到。首先,我们...转载 2018-10-20 15:12:44 · 573 阅读 · 0 评论 -
【2】caffe的python接口学习:生成solver文件
caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面,如下:base_lr: 0.001display: 782gamma: 0.1lr_policy: "step"max_iter: 78200momentum: 0.9snapshot: 7820snapshot_prefix: "snapshot"solver...转载 2018-10-20 15:13:50 · 386 阅读 · 0 评论 -
【3】caffe的python接口学习:训练模型(training)
如果不进行可视化,只想得到一个最终的训练model, 那么代码非常简单,如下 :import caffecaffe.set_device(0)caffe.set_mode_gpu()solver = caffe.SGDSolver('/home/yeler082/data/solver.prototxt')solver.solve()...转载 2018-10-20 15:14:38 · 325 阅读 · 0 评论 -
【4】caffe的python接口学习:mnist实例---手写数字识别
一、数据准备官网提供的mnist数据并不是图片,但我们以后做的实际项目可能是图片。因此有些人并不知道该怎么办。在此我将mnist数据进行了转化,变成了一张张的图片,我们练习就从图片开始。下面是转化的代码。import numpy as npimport structfrom PIL import Imageimport osdata_file = 'train-images....转载 2018-10-21 09:55:23 · 432 阅读 · 0 评论 -
【5】caffe的python接口学习:生成deploy文件
如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和train_test.prototxt文件差不多,只是头尾不相同而也。deploy文件没有第一层数据输入层,也没有最后的Accuracy层,但最后多了一个Softmax概率层。这里我们采用代码的方式来自动生成该文件,以mnist为例。deploy.py# -*- coding: u...转载 2018-10-22 18:59:14 · 400 阅读 · 0 评论 -
【6】caffe的python接口学习:用训练好的模型(caffemodel)来分类新的图片
经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测。我们从mnist数据集的test集中随便找一张图片,用来进行实验。#!/usr/bin/env python# encoding: utf-8'''@author: lele Ye@contact: 17501...转载 2018-10-22 19:13:35 · 475 阅读 · 0 评论 -
【7】caffe的python接口学习:绘制loss和accuracy曲线
在caffe的训练过程中,我们如果想知道某个阶段的loss值和accuracy值,并用图表画出来,用python接口就对了。#!/usr/bin/env python# encoding: utf-8'''@author: lele Ye@contact: 1750112338@qq.com@software: pycharm 2018.2@file: draw.py@time...转载 2018-10-22 20:00:05 · 579 阅读 · 0 评论 -
【8】caffe的python接口学习:caffemodel中的参数及特征的抽取
如果用公式 y=f(wx+b)来表示整个运算过程的话,那么w和b就是我们需要训练的东西,w称为权值,在cnn中也可以叫做卷积核(filter),b是偏置项。f是激活函数,有sigmoid、relu等。x就是输入的数据。数据训练完成后,保存的caffemodel里面,实际上就是各层的w和b值。我们运行代码:deploy=root + 'mnist/deploy.prototxt'...原创 2018-10-22 20:21:48 · 497 阅读 · 0 评论 -
【1】caffe调参中的batch_size和iter_size
在caffe参数配置文件当中遇到这么一段:net: "models/h2_train.prototxt" #模型训练网络配置文件base_lr: 1e-6 #基础学习率lr_policy: "step" #学习率变化策略gamma: 0.1 #grama值,用于学习率变化iter_size: 10 stepsize: 10000 #用于学习率调整的步长,与lr...原创 2018-10-22 20:38:13 · 5277 阅读 · 1 评论 -
【02】caffe目录结构
caffe源代码是C++编写的,大量的使用了封装、继承和多态,代码结构严谨,所以很适合用来学习C++的语言特性。Caffe源问阅读路线最好是从src/calTe/proto/caffe.proto开始, 了解基本数据结构内存对象和磁盘文件的一一映射关系(如何从磁盘文件加载一个数据结构到内存对象, 以及如何将内存对象保存为磁盘文件, 这中间的过程都是由ProtoBuffer 自动完成的。第二...原创 2019-01-02 21:01:45 · 349 阅读 · 0 评论 -
【03】caffe网络自定义输入层
通常的情况下,我们遇到的train_val.prototxt文件的输入层都是下面这样的:name: "CIFAR10_quick"layer { name: "cifar" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { # mirr...原创 2019-01-02 22:14:12 · 815 阅读 · 2 评论 -
【04】caffe网络layer top和bottom可以一样的相关解释
Caffe model里为啥有的layer top和bottom还能一样的?例如我们有时候会在网络结构中会看到下面这样的定义,其中的输入bottom和输出的层名称都是"conv1_1",实际上产生这样的同名通常是我们利用python接口定义网络时使用了in_place=True参数设置造成的,caffe利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。lay...转载 2019-06-19 16:20:39 · 2804 阅读 · 0 评论 -
【05】caffe中通道运算的分分合合
在caffe中有时候会涉及到通道的间的运算,比如通道的拆分、合并、相互运算等,下面介绍这几种分别在prototxt文件和py文件中的实现方法。# Sclice层实现拆分合并layer{ name:"data_s" type:"Slice" top:"a" top:"b" top:"c" slice_param { a...原创 2019-06-20 17:54:44 · 543 阅读 · 0 评论 -
【06】caffe中添加新的Layer
引言使用caffe有一段时间了,可是,目前使用的都是caffe自带的layer,随着自己对各种模型的熟悉,添加或修改现有layer的需求越来越大。最近一个项目需要使用可分离卷积,caffe当中,可以通过指定group参数实现可分离卷积,但是里面的实现方式效率不佳,在运行的时候出现显卡内存不足,所以果断放弃这种实现方案。模块引入为了能使得caffe支持可分离卷积,现在的办法就是往源代码里...原创 2019-10-25 20:58:15 · 352 阅读 · 0 评论