Caffe Layer 系列(一):Input层、Data层_caffe input-程序员宅基地

技术标签: Input  caffe  Caffe  Data  layer  

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名称为data
    type:"Input"   #设置当前layer类型为Input
    top:"data"     #设置当前layer输出blob名称为data
    #定义输入数据维度为 batchsize =1 channel=1 height=42 dim=42
    input_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];
  //指定数据类型,默认是LEVELDB
  optional 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 channels
  optional 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: true
        crop_size: 42
        mean_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: 128
        backend: LMDB
    }
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoxu2050/article/details/81875971

智能推荐

unity ugui text 超链接和下划线,支持部分富文本格式_unity 下划线-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏3次。项目需要用到该功能, 搜索和参考了很多文章,要么不支持富文本,要不没有下划线,要么是错误的,修修改改后满足我的需求,代码如下。_unity 下划线

避免在移动端页面中使用100vh_苹果浏览器 css 100vh-程序员宅基地

文章浏览阅读4.9k次,点赞5次,收藏5次。100vh带来的问题在CSS中,视口单位(Viewport units)听起来不错。如果要设置一个元素的样式使它占据整个屏幕的高度,那么你可以设置height: 100vh,这样你就拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可惜的是,事实并非如此。100vh在移动浏览器中以一种微妙但基本的方式被破坏,使其几乎无用。最好避免使用100vh,而应该通过javascript设置高度的方..._苹果浏览器 css 100vh

基于Java毕业设计养老机构管理信息系统源码+系统+mysql+lw文档+部署软件-程序员宅基地

文章浏览阅读73次。基于Java毕业设计养老机构管理信息系统源码+系统+mysql+lw文档+部署软件。springboot基于springboot的学生社团管理系统的研究设计。springboot基于Springboot技术的装潢公司网站开发。springboot基于精细化考核的离散数学课程教学目标达成系统。springboot基于springboot食品销售网站。ssm基于ssm的再生产公益管理系统的设计与实现。ssm基于JAVA的求职招聘网站的设计与实现。ssm基于SpringMvC的流浪狗领养系统。

脑肿瘤图片数据集下载分享_yolo数据集下载-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏3次。脑肿瘤图片数据集下载分享_yolo数据集下载

虚拟直播软件成为直播必备工具,实景直播和虚拟直播区别在哪里?-程序员宅基地

文章浏览阅读224次。虚拟直播与各行业的结合愈发紧密,技术的革新让很多线上活动可以通过虚拟直播完成。

java 轨迹平滑算法_地图坐标轨迹平滑和纠偏-程序员宅基地

文章浏览阅读3.8k次,点赞5次,收藏19次。轨迹平滑和纠偏纠偏通过gps获取坐标点时 因为gps信号不稳定等原因 出现坐标点异常 不符合实际 进行异常点的处理 来对轨迹纠正轨迹偏移不正常取得轨迹坐标集合 对此段轨迹设置起点和终点 取得相邻两坐标点 计算出两点之间距离 对比获取坐标点的时间 判断坐标时速异常 对坐标点移除处理代码逻辑异常点去除之后轨迹 轨迹平滑处理实现思路方法1.百度地图鹰眼服务:源码主要实现思路:计算相邻坐标点之间距离 通过..._java地图轨迹去重

随便推点

mysql 大量close wait_线上大量CLOSE_WAIT原因排查-程序员宅基地

文章浏览阅读1k次。近日遇到一个线上服务 socket 资源被不断打满的情况。通过各种工具分析线上问题,定位到问题代码。这里对该问题发现、修复过程进行一下复盘总结。先看两张图。一张图是服务正常时监控到的 socket 状态,另一张当然就是异常啦!图一:正常时监控图二:异常时监控从图中的表现情况来看,就是从 04:00 开始,socket 资源不断上涨,每个谷底时重启后恢复到正常值,然后继续不断上涨不释放,而且每次达到..._mysql出现很多的close_wait,导致不能连接数据库

AI人工智能转录工具:AI Transcription for mac_al transcription-程序员宅基地

文章浏览阅读398次,点赞11次,收藏8次。AI Transcription for Mac是一款利用人工智能技术将音频和视频文件转录成文字的应用程序。它使用先进的语音识别技术和机器学习算法,可以全自动、离线的方式迅速转录音频和视频文件,并且能够提供高度准确的结果。_al transcription

Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop-程序员宅基地

文章浏览阅读76次。目录HivePigSparkStormHBaseSqoopHivePig和Hive的对比摘要: Pig Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转..._spark pig sqoop

基于java的健身房管理系统设计与实现_java能查看用户的健身情况的健身管理系统-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏18次。基于Java的健身房管理系统性能评估是对系统在特定工作负载下的响应速度和资源利用率进行评估和分析,旨在验证系统是否能够满足用户在实际使用中的性能需求。1、并发性能评估:并发性能是指系统在多用户同时访问的情况下的表现。通过模拟多个用户同时进行操作,评估系统的并发性能。可以观察系统是否能够正确处理并发请求,同时保持较好的响应速度。通过增加并发用户数,可以评估系统的并发处理能力和性能瓶颈。通过性能测试工具和性能监控工具,可以测量系统在不同并发负载下的响应时间、吞吐量和资源利用率。_java能查看用户的健身情况的健身管理系统

Haddop:HA高可用_haddp 高可用-程序员宅基地

文章浏览阅读1.1w次。Hadoop集群的高可用:HDFS的HA和YARN的HA_haddp 高可用

汇编的标志寄存器_flag中psw啥意思-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏18次。它被称为FLAG,也称为PSW (Processor Status Word)。共9个标志。其中有6个状态标志位:OF、SF、ZF、AF、PF、CF,及3个控制标志位DF、IF、TF。PSW在实现IF、FOR这类需要进行条件判断的语句时非常重要。为了能熟练编程,我们需要掌握以下这些细节。(汇编里细节很重要)符号标志S(Sign Flag)。当指令执行结果的高位(字节操作中的D7位或字操作中..._flag中psw啥意思

推荐文章

热门文章

相关标签