caffe使用(1)
caffe使用
caffe是一个卓越的CNN框架
caffe源码是Cpp语言的,基于一些外部的库,包括BLAS(矩阵计算),CUDA(GPU驱动),gflags,glog,boost,protobuf,hdf5,leveldb,lmdb等。
只要各个以来都安装完毕,编译的时候修改下caffe自带的Makefile.config(路径和编译选项的修改),即可编译整个工程。
caffe代码文件夹主要包括:
build 所有编译好的文件存放位置
data 数据文件夹
docs 教程和说明文件夹(建议好好阅读,部分内容讲的非常详细)
include 包含文件夹,头文件
examples 各种demo的文件夹,相关应用可以参考或者直接使用对应的demo和配置
mnist 手写汉字识别 cifar10 场景识别 imagenet 图片分类 cpp_classification 分类的cpp接口文件 feature_extraction提特征的demo文件夹
matlab matlab对应的接口
python python对应的接口
models model文件的路径,一些训练好的model可以参考caffe官网model zoo:http://caffe.berkeleyvision.org/model_zoo.html
tools 一些工具
src 所有源代码存放位置
docs/tutorial 中的文件非常值得阅读,关于caffe 的架构和基本使用讲的很透彻,入门必读
caffe的使用包括 训练 和 识别 两个部分
总参考:
http://blog.csdn.net/hjimce/article/details/48933813 (强烈推荐)
http://blog.csdn.net/u014696921/article/details/52551364
http://blog.csdn.net/pirage/article/details/17553549
一、caffe训练流程:
1、准备训练数据
包括训练集,验证集两个文件夹的图片,和两个txt文件,txt文件中每行是图片名和图片标签
2、图片格式转化
caffe接收imdb,leveldb,hdf5等格式,推荐imdb,用caffe官方提供的convert_imageset脚本可以将图片转化为imdb,见这篇http://blog.csdn.net/hjimce/article/details/48933813
3、定义模型网络结构文件
例如deploy.prototxt、train_val.prototxt等,在caffe安装目录下的models文件夹下,官方提供了一些有名的CNN,如googlenet,alexnet等
参考:http://blog.csdn.net/u014202086/article/details/75226445
模型网络结构文件形如下图,第一行是模型网络的名字,接下来由一个一个layer组成,layer有输入层(data),卷积层,激励层,池化层,全连接层,输出层等组成。
网络结构文件中指定了训练数据(训练集+验证集)的路径,在输入层中指定。
py的caffe包提供了一些函数快速生成网络结构文件(见pdf)

4、定义solver.prototxt文件
在caffe安装目录下的models文件夹下,官方提供了一些有名的CNN,如googlenet,alexnet等
参考:http://blog.csdn.net/Yan_Joy/article/details/53079185
solver文件中主要是定义了模型训练过程中的一些参数,调参也就在这里进行
py的caffe包同样提供了生成solver文件的方法,见这篇http://wentaoma.com/2016/08/10/caffe-python-common-api-reference/
5、训练模型
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
6、一些杂项
经过上面的5步,你就成功输出了网络结构文件、solver文件、训练得到的模型文件三个主要文件,但是要让模型效果更好,你还需要生成原始数据的均值文件、标签含义文件、bet.pickle文件,来为后面的模型使用者提供参考。
生成均值文件:
http://blog.csdn.net/victoriaw/article/details/53863565
http://blog.csdn.net/gavin__zhou/article/details/50365986
二、caffe识别流程
caffe识别关键就在构造分类器,caffe提供的分类器有两种caffe.Net和caffe.Classifier,现在一般用caffe.Classifier多一点,因为用Net的话还要多些一些数据处理的代码,而Classifier将这些代码封装到了其内部
使用caffe.Net的识别:
https://www.cnblogs.com/denny402/p/5685909.html
http://blog.csdn.net/summermaoz/article/details/64442707
使用caffe.Classifier的识别:
caffe web demo
http://blog.csdn.net/liyaohhh/article/details/50936862
使用caffe.Net批量识别图片
http://blog.csdn.net/fengzhongluoleidehua/article/details/79014671
https://www.cnblogs.com/yyxf1413/p/6339655.html
caffe使用(1)的更多相关文章
- 基于window7+caffe实现图像艺术风格转换style-transfer
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- caffe的python接口学习(7):绘制loss和accuracy曲线
使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...
- 基于Caffe的Large Margin Softmax Loss的实现(中)
小喵的唠叨话:前一篇博客,我们做完了L-Softmax的准备工作.而这一章,我们开始进行前馈的研究. 小喵博客: http://miaoerduo.com 博客原文: http://www.miao ...
- 基于Caffe的Large Margin Softmax Loss的实现(上)
小喵的唠叨话:在写完上一次的博客之后,已经过去了2个月的时间,小喵在此期间,做了大量的实验工作,最终在使用的DeepID2的方法之后,取得了很不错的结果.这次呢,主要讲述一个比较新的论文中的方法,L- ...
- 基于Caffe的DeepID2实现(下)
小喵的唠叨话:这次的博客,真心累伤了小喵的心.但考虑到知识需要巩固和分享,小喵决定这次把剩下的内容都写完. 小喵的博客:http://www.miaoerduo.com 博客原文: http://ww ...
- 基于Caffe的DeepID2实现(中)
小喵的唠叨话:我们在上一篇博客里面,介绍了Caffe的Data层的编写.有了Data层,下一步则是如何去使用生成好的训练数据.也就是这一篇的内容. 小喵的博客:http://www.miaoerduo ...
- 基于Caffe的DeepID2实现(上)
小喵的唠叨话:小喵最近在做人脸识别的工作,打算将汤晓鸥前辈的DeepID,DeepID2等算法进行实验和复现.DeepID的方法最简单,而DeepID2的实现却略微复杂,并且互联网上也没有比较好的资源 ...
- 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训
原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...
- 基于英特尔® 至强 E5 系列处理器的单节点 Caffe 评分和训练
原文链接 在互联网搜索引擎和医疗成像等诸多领域,深度神经网络 (DNN) 应用的重要性正在不断提升. Pradeep Dubey 在其博文中概述了英特尔® 架构机器学习愿景. 英特尔正在实现 Prad ...
- Caffe Python MemoryDataLayer Segmentation Fault
转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ 因为利用Pyhon来做数据的预处理比较方便,因此在data_l ...
随机推荐
- SQL练习题汇总(Sqlserver和Mysql版本)
所需表及数据执行脚本: CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATET ...
- poj3253 优先队列
Farmer John wants to repair a small length of the fence around the pasture. He measures the fence an ...
- hdu 1042 N! java大数及判断文件末尾
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submi ...
- linux学习笔记24---命令grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是global search regular expression(RE) and ...
- nginx调用php-fpm出错解决方法和nginx配置详解
装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm. 使用下面的命令 复制代码 代码如下: /usr/local/php/sbin/php-fpm 就可以启动了 ...
- [转]Mac系统安装软件提示软件已损坏的解决办法
很多朋友下载本站提供的Mac软件资源,安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示,其实并不是软件本身有问题,而是Mac系统的一个安全机制问题,按照如下方法操作,即可打开并安装本站 ...
- Xcode模拟iPhone教程!
iOS 开发者常常会使用模拟器来进行调试,当然这就少不了Mac电脑中的Xcode软件了,今天PC6小编就给大家带来在Mac系统下如何快速启动iOS模拟器的使用教程: 一.如何启动iOS模拟器 1.在L ...
- nodejs系列笔记01---Buffer
纯JavaScript无法处理二进制数据,buffer就是用来处理二进制数据的 原始数据保存在buffer实例中,一个buffer实例类似于数组.buffer的大小在建立时指定的不可更改. buffe ...
- 马尔科夫毯(Markov Blanket)
最优特征子集:选出特征的子集,能够比较准确的代表原来的特征.马尔科夫毯(MB)是贝叶斯网络(BN)的最有特征子集. 推测贝叶斯网络的网络结构是NP问题.贝叶斯网络中一个节点T的马尔科夫毯是其父节点,子 ...
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...