Caffe
caffe使用与分析
m_buddy
大表哥,还有大招吗... PS:本人所有文章均免费公开,任何收费条目请咨询平台
展开
-
Opencv 4.1.0加载caffe crnn模型中错误纠正
1. 概述最近倒腾了一下Opencv加载caffemodel做inference的事情,使用的模型是使用的crnn文本识别模型(仓库地址:链接),使用的Opencv版本是4.1.0。其中也遇到一些Opencv源码里面的问题,所以这里需要下载Opencv的源码自己使用CMake+VS2015编译(主要是方便问题定义与对应部分的修改…)。2. 问题描述对于Opencv中模型加载与输入数据的代码...原创 2019-11-02 15:13:49 · 1165 阅读 · 3 评论 -
Caffe训练时出现Aborted ** using GNU date ** core dumped问题解决记录
1. 問題*** Aborted at 1510023780 (unix time) try "date -d @1510023780" if you are using GNU date ***PC: @ 0x2acc27a60c92 ddot_kernel_8*** SIGILL (@0x2acc27a60c92) received by PID 6739 (TID 0x2ac原创 2017-11-07 19:11:45 · 7967 阅读 · 0 评论 -
Ubuntu 64bit下手动安装深度学习包Caffe记录(CPU)
前言之前在电脑上安装Caffe都是使用的简单安装,这几天闲下来折腾起了手动安装。这样做主要是为了方便进行移植,这里将所有的依赖库安装到了/home/pc_name(你自己的电脑账户名,下同)/local_install/目录下。博主在Ubuntu 64bit上安装成功,现在将整个的安装过程记录下来,希望对各位看官有所帮助。 整篇文章基本讲干货,其他的什么介绍之类的就省略了-_-||…1. Prot原创 2017-10-31 23:14:42 · 952 阅读 · 0 评论 -
caffe添加自己编写的Python层
1. 前言由于Python的灵活性,我们在caffe中添加自己定义的层时使用python层会更加方便,开发速速也会比C++更快,要使用python层需要编译caffe的时候打开python接口:WITH_PYTHON_LAYER:=1这里使用一个实现一个简单caffe python module:Data_Process作为实验,其添加过程在后面的内容中介绍。2. 实现2.1 modu...原创 2019-04-07 14:25:08 · 377 阅读 · 0 评论 -
Caffe打印模型前向传播时间
1. 前言有时候在做网络性能分析的时候,需要寻找到网络最为耗时的部分,这时候就需要打印各个层在前向传播过程中所消耗的时间多少了。所幸,在caffe.cpp文件中包含了该部分的代码,这里的使用的代码是在其基础上进行修改的。2. 代码实现#include <stdio.h>#include <stdlib.h>#include <opencv2/opencv.h...原创 2019-04-08 22:46:08 · 661 阅读 · 0 评论 -
Caffe中的math_functions
math_function 定义了caffe 中用到的一些矩阵操作和数值计算的一些函数,这里以float类型为例子做简单的分析,下面例举了其中的函数,并对其功能做了简短的介绍。1.caffe_cpu_gemm 函数:template<>void caffe_cpu_gemm<float>(const CBLAS_TRANSPOSE TransA, cons...原创 2019-04-08 22:50:38 · 127 阅读 · 0 评论 -
Caffe源码整体结构及介绍
1. Caffe代码层次。Caffe中的源码按照模块可以大体划分为:Blob,Layer,Net,Solver这样的几大类。这四个类复杂性从低到高,贯穿了整个Caffe。把它们分为四个层次介绍。1)Blob:作为数据传输的媒介,无论是网络权重参数,还是输入数据,都是转化为Blob数据结构来存储;2)Layer:作为网络的基础单元,神经网络中层与层间的数据节点、前后传递都在该数据结构中被实现,...原创 2019-04-13 22:57:57 · 710 阅读 · 0 评论 -
Caffe源码,caffe::Solver<Dtype>::Snapshot运行分析
1. 概述在进行网络训练的时候会保存网络权值信息到文件中,用来后序部署等。在Caffe中实现这个功能是使用Snapshot()函数实现的,在Caffe中权值文件的保存形式有2中,它们是BinaryProto格式文件和hdf5格式文件,一般未指明的情况下,缺省为BinaryProto格式的形式。本篇文章介绍的存储方式是BinaryProto,hdf5形式的存储方式也是具有类似性。存储的总体流程:...原创 2019-04-21 21:54:11 · 481 阅读 · 0 评论 -
Caffe源码,训练流程分析
1. 前言1.1 Caffe结构简单梳理在之前的文章(Caffe源码整体结构及介绍)中介绍了Caffe中的一些重要的组件:1)Blob 主要用来表示网络中的数据,包括训练数据,网络各层自身的参数(包括权值、偏置以及它们的梯度),网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。2)Layer 是对神经网络中各种层...原创 2019-04-14 22:40:26 · 934 阅读 · 5 评论 -
Caffe常用python接口记录
1. python接口训练caffe python下网络的训练import caffecaffe.set_device(int(0))caffe.set_mode_gpu() # GPUcaffe.set_mode_cpu() # CPUsolver = caffe.SGDSolver('solver.prototxt') # 指定SGD solver,可换为其它求解算法# ...原创 2019-04-29 00:48:14 · 229 阅读 · 0 评论 -
Caffe源码,SyncedMemory CPU和GPU间的数据同步
转载自:Caffe源码理解2:SyncedMemory CPU和GPU间的数据同步1. 写在前面在Caffe源码中的Blob类,其中的数据成员有shared_ptr<SyncedMemory> data_;shared_ptr<SyncedMemory> diff_;std::shared_ptr是共享对象所有权的智能指针,当最后一个占有对象的shared_pt...转载 2019-06-09 22:35:41 · 292 阅读 · 0 评论 -
Ubuntu14.04下编译pycaffe并绘制网络结构图
前言由于课题需要,编译了Caffe的python接口。下面的博客内容就将整个过程和遇到的问题记录下来,若是各位看官遇到了相似的情况可能会给你带来帮助。1. 环境准备sudo apt-get updatesudo apt-get install python-pip puthon-dev python numpysudo apt-get install python-pip python-dev原创 2017-11-09 20:26:35 · 859 阅读 · 0 评论 -
Ubuntu16.04下安装Caffe记录(GPU)
前言之前都是在使用CPU版本的Caffe,但是在进行模型训练和测试的时候就显得有点力不从心了。因而这次在另外一台电脑上安装Caffe(软硬环境为:Ubuntu 16.04 64bit,I7 7700K,GTX1080,32G)。 期间也参考了很多网友的博客,这里经过自己实践之后,将我本次安装成功的经过记录下来。0. 安装Caffe附属依赖库sudo apt-get install libproto原创 2017-11-20 10:57:16 · 1117 阅读 · 0 评论 -
Caffe中网络建立设置打印开关设置
1. 前言部署Caffe相关项目的时候,对于日志的处理有些时候是直接输出到标准输出流的(严重鄙视-_-||),这样的话就会造成最后的日志文件里面好几万好几万行的模型加载日志,这样查询出错的原因很不好查。标准化日志不就没那么多破事了么……,要想办法把这个打印的日志去掉是有办法的,这里就要涉及到GLOG中的日志等级,在其中一共有4个GLOG日志层级可选:日志等级解释0debu...原创 2018-12-27 23:08:15 · 493 阅读 · 0 评论 -
Caffe下LMDB与H5数据读取代码实现分析
1. 前言在之前的文章中讲到了Caffe中是如何把图像数据转换成为LMDB与H5格式文件的。那么Caffe中是怎么实现由这些文件读取到网络中进行训练的呢?其实Caffe中是有专门的数据读取层的,用来读取不同的数据类型。下面是Caffe中主要数据读取类的关系图:平时用得比较多的是DataLayer与ImageDataLayer(读取图像效率低也不怎么使用)。这里就主要从DataLayer进行分...原创 2018-12-06 20:36:40 · 737 阅读 · 0 评论 -
Caffe训练数据转换为HD5与LMDB的代码实现
1. 前言一般来讲再caffe中经常的数据结构是LMDB以及HD5文件。再进行训练的时候需要将其转换为对应的格式,自然直接读取原始图像数据也是可以的,但是转换之后其读取的效率更高。那么这篇博客中就借着这两点来梳理一下这两种数据是怎么转换来的,在后面的文章中再讲网络训练过程中怎么从这些文件中读取数据。2. LMDB文件再caffe环境下怎么调用现有的接口实现训练数据集的转换可以参考我之前的文章...原创 2018-12-04 09:05:02 · 806 阅读 · 0 评论 -
Caffe添加Center_Loss layer
1. Caffe修改1.1 修改caffe.proto在message LayerParameter{}中添加如下代码:optional CenterLossParameter center_loss_param = 147;在caffe.proto文末添加message CenterLossParameter { optional uint32 num_output = 1; /...原创 2018-09-19 23:23:35 · 594 阅读 · 0 评论 -
Caffe下CRNN训练自己的数据
1. 数据准备1.1 图像数据准备这里需要将图像数据统一转换到128*32(宽度*高度)上来,当然也可以更改为其它类型的长度,这里只是使用了该尺寸。1.2 Label数据准备Label数据是与图像数据对应的数据,其中包含了图像中的具体字符数据。在制作label数据的时候需要将不同的字符转换到不同的数字标号上来,这里需要将字符映射表的最后一位设置为“_blank_”。这里还需...原创 2018-08-07 00:38:58 · 4619 阅读 · 10 评论 -
使用Caffe C++ API调用生成模型进行分类
1. 前言对于在Caffe环境之间设计和训练模型,一般是采用python接口,这样比较方便。但是到实际部署的时候,为了速度等因素的考虑,都会使用Caffe下的C++ API接口实现的。在这里使用Caffe自带的classification.cpp进行改造,希望能给大家理解带来帮助。2. 实现2.1 Classifier类首先来看类的声明文件classification.h:...原创 2018-07-24 23:39:55 · 3186 阅读 · 7 评论 -
使用caffe中compute_image_mean计算数据集均值
1. 计算均值在进行深度学习网络训练的时候,为了提升训练的精度等,需要数据集的均值,那么该均值文件是怎么来的呢?这是通过安装caffe完成之后tools目录下的compute_image_mean实现的。调用它去计算数据集的均值,再在训练的时候调用它就好了,下面是调用它实现数据集均值计算的例子。./compute_image_mean ~/Desktop/handwrite_chine...原创 2018-07-23 23:15:33 · 2279 阅读 · 0 评论 -
Caffe中的solver文件参数
1. solver文件介绍solver文件是训练网络所必须要的文件,其中定义了诸如:求解器类型、学习率、学习率的变化策略等。其命令行调用方式模式一般为:caffe train --solver=*_slover.prototxt接下来看一个solver配置文件的例子:train_net: &quot;train.prototxt&quot;test_net: &quot;val.prototxt&quot;tes...原创 2018-07-22 23:24:20 · 1574 阅读 · 1 评论 -
使用Caffe的convert_imageset生成lmdb文件
1. 前言在深度学习中需要读取图像的数据,但是输入图像的数据存在通道数量、大小等的不同。在Caffe中便有convert_imageset工具来实现对这些数据的处理,并将这些图片转换位lmdb文件格式,从提升读取效率。 这个功能对应的源代码文件为convert_imageset.cpp。在完成编译之后会在./build/tools/下面生成对应的可执行文件。那么怎么调用它呢?其实很简单,只需...原创 2018-07-11 23:47:56 · 1612 阅读 · 0 评论 -
基于PyCaffe实现网络可视化
前言在进行深度学习网络调试参数的时候,往往是将整个训练过程完了之后查看训练的结果。但是除了这种办法之外还可以通过网络可视化来帮助进行参数调试,这里封装了一个小小的类,提供网络显示的接口,传入网络的名称就好了1. 类实现# -*-coding=utf-8-*-import numpy as npimport matplotlib.pyplot as pltimport syssys.path.a原创 2017-11-29 19:51:00 · 459 阅读 · 0 评论 -
Caffe编译过程中出现C++11问题解决记录
1. 问题描述在编译非原版Caffe的时候,特别是编译到cu文件的时候出现如下的错误(推断可能是NVCC时没加C++11标志):error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, ...原创 2019-03-03 10:43:03 · 2566 阅读 · 3 评论