Caffe Layer 系列(一):Input层、Data层
1、Input layer
Input layer用在deploy文件测试模型效果,需要代码中手动指定网络输入数据,唯一的参数BlobShape设定输入数据的维度
caffe.proto中定义如下:
message InputParameter {// This layer produces N >= 1 top blob(s) to be assigned manually.// Define N shapes to set a shape for each top.// Define 1 shape to set the same shape for every top.// Define no shape to defer to reshaping manually.repeated BlobShape shape = 1;
}
prototxt文件定义如下:
layer {name:"data" #设定当前layer名称为datatype:"Input" #设置当前layer类型为Inputtop:"data" #设置当前layer输出blob名称为data#定义输入数据维度为 batchsize =1 channel=1 height=42 dim=42input_param {shape: {dim: 1 dim: 1 dim: 42 dim:42}}
}
python读取图片输入NET代码如下:
#创建神经网络
net = caffe.Net(net_file, weight_file, caffe.TEST)#指定caffe数据转换器data的shape等于神经网络data层shape
transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})#指定交换维度,caffe读取的图片是H*W*C,交换后变成C*H*W
transformer.set_transpose('data', (2,0,1)) #指定减去均值,np.load(mean_file)返回数据格式channel0数据:channel1数据:channel2数据
#mean(1).mean(1)返回每个通道的均值
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))#caffe.io.load_image()读进来是RGB格式和(0,1)(float)
#cv2.imread()读进来直接是BGR格式和(0,255)
#这里是将RGB变换到BGR
transformer.set_chanenl_swap('data', (2,1,0))
#这里是将图像数据变成(0,255),注释掉该行代码表示使用(0,1)的数据
transformer.set_raw_scale('data',255)#读取图片
im=caffe.io.load_image(image_path, 0)
#转换器转换数据,并赋值给net的data层
net.blobs['data'].data[...] = transformer.preprocess('data', im)
out = net.forward()
2、Data Layer层
指定Net中输入数据为LEVELDB或者LMDB
message DataParameter {enum DB {LEVELDB = 0;LMDB = 1;}//------------这些都是data层本身的参数设定data_param// Specify the data source.//指定数据文件路径optional string source = 1; // Specify the batch size.//指定batch size 大小optional uint32 batch_size = 4;// The rand_skip variable is for the data layer to skip a few data points// to avoid all asynchronous sgd clients to start at the same point. The skip// point would be set as rand_skip * rand(0,1). Note that rand_skip should not// be larger than the number of keys in the database.// DEPRECATED. Each solver accesses a different subset of the database.optional uint32 rand_skip = 7 [default = 0];//指定数据类型,默认是LEVELDBoptional DB backend = 8 [default = LEVELDB];//------之后是数据增强的参数设置,transform_param// DEPRECATED. See TransformationParameter. For data pre-processing, we can do// simple scaling and subtracting the data mean, if provided. Note that the// mean subtraction is always carried out before scaling.optional float scale = 2 [default = 1]; //设置均值文件路径optional string mean_file = 3;// DEPRECATED. See TransformationParameter. Specify if we would like to randomly// crop an image.//指定裁剪后图片的大小optional uint32 crop_size = 5 [default = 0];// DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror// data.//指定是否通过镜像座扩展optional bool mirror = 6 [default = false];// Force the encoded image to have 3 color channelsoptional bool force_encoded_color = 9 [default = false];// Prefetch queue (Increase if data feeding bandwidth varies, within the// limit of device memory for GPU training)optional uint32 prefetch = 10 [default = 4];
}
prototxt文件定义如下:
layer {name:"data"type:"Data"top:"data"top:"label"include {phase: TRAIN}transform_param {mirror: truecrop_size: 42mean_file: "/home/zxy/caffe/face_expression_recognition/lmdb/meantrain.binaryproto"}data_param {source: "/home/zxy/caffe/face_expression_recognition/lmdb/fer2013_train_lmdb"batch_size: 128backend: LMDB}
}
Caffe Layer 系列(一):Input层、Data层相关推荐
- Caffe学习系列(17):模型各层特征和过滤器可视化
转载自: Caffe学习系列(17):模型各层特征和过滤器可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5105911.html cif ...
- Caffe学习系列(5):其它常用层及参数
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss so ...
- Caffe 学习系列
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...
- caffe data层_Caffe实现多标签输入,添加数据层(data layer)
因为之前遇到了sequence learning问题(CRNN),里面涉及到一张图对应多个标签.Caffe源码本身是不支持多类标签数据的输入的. 如果之前习惯调用脚本create_imagenet.s ...
- Caffe学习系列(3):视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...
- caffe layer层详解
1.基本的layer定义,参数 1.基本的layer定义,参数 如何利用caffe定义一个网络,首先要了解caffe中的基本接口,下面分别对五类layer进行介绍 Vision Layers 可视化层 ...
- Caffe学习系列(16):各层权值参数可视化
原文有更新: Caffe学习系列(16):各层权值参数可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5103425.html 通过前面的 ...
- Caffe学习系列(2):数据层及参数
要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成.所有的参数都定义在caffe.proto这个文件 ...
- caffe data层_Caffe 学习:Eltwise层
Caffe 学习:Eltwise层 Eltwise层的操作有三个:product(点乘), sum(相加减) 和 max(取大值),其中sum是默认操作. 1. PROD:按元素乘积 2. SUM:按 ...
最新文章
- 记录一下PyQt5界面导入Python(绕开pyqt5-tools安装失败问题)
- HoloLens开发手记 - 手势输入 Gesture input
- 解密 云HBase 冷热分离技术原理
- jni调用java类_JNI之C++调用Java类 —— java.lang.String
- UE4中Component和Subobject的区别
- [枚举] Jzoj P3387 终极武器
- Proteus:51仿真入门
- java类分析_java常用类系列之System
- html网页框架案例代码,HTML网页框架代码
- 【转载】数据库操作系统——Visual FoxPro 6.0安装步骤
- HTML——1.Sublime快捷键、HTML常用标签
- Excel2016 折线图
- 量化评价和质化评价举例_数据质量量化评价研究与实现
- Apache虚拟主机的实现方式
- URL Schemes
- 物理层(网线)、数据链路层(交换机)、网络层(IP协议、ARP协议、ICMP协议、路由器)、VLAN(虚拟局域网)、HSRP协议、ACL、NAT
- 诗词格律[4] 古体诗
- Y430P拆机:安装固态硬盘+内存+重装系统梳理
- Opencv3.0--第二篇【双阈值二值化图像】
- js等待异步执行完再执行,js如何让代码同步执行