caffe读取多标签的lmdb数据
问题描述:
lmdb文件支持数据+标签的形式,但是却只能写入一个标签,引入多标签的解决方法有很多,这儿详细说一下我的办法:制作多个data数据,分别加入一个标签。我的方法只适用于标签数量较少的情况,标签数量比较多的话建议修改源码支持。下面介绍详细步骤。以下均以两个标签作为介绍。
生成两个含单标签的list:
img1 0
img2 0
img3 1
img4 1
img1 10
img2 11
img3 10
img4 11
按照同一顺序做shuffle处理,caffe训练数据shuffle处理是有必要的,虽然caffe的lmdb转换工具能够直接做shuffle,但是不能保证两个list的顺序一致。文本按行乱序的命令可以参考http://www.cnblogs.com/zhaojunjie/p/6735713.html。处理后的文件如下:
img1 0
img3 1
img4 1
img2 0
img1 10
img3 10
img4 11
img2 11
接下来就可以对他们生成两个lmdb了,值得注意的是如果图像数据较大,生成lmdb时可以将第二个list的图像resize到1*1,如下(前面已经shuffle,这里不再加入shuffle参数):
pathtocaffe/build/tools/convert_imageset --resize_height=256 --resize_width=256 "" list1 lmdb_data_1
pathtocaffe/build/tools/convert_imageset --resize_height=1 --resize_width=1 "" list2 lmdb_data_2
生成好了lmdb,如何用呢?prototxt文件参考如下:
name: "CaffeNet"
layer {
name: "data"
type: "Data"
top: "data"
top: "label1"
include {
phase: TRAIN
}
transform_param {
mirror: true
mean_file: "train_VGG_cub_mean.binaryproto"
crop_size: 224
}
data_param {
source: "lmdb_data_1"
backend: LMDB
batch_size: 16
}
}
layer {
name: "data2"
type: "Data"
top: "data_noused"
top: "label2"
include {
phase: TRAIN
}
data_param {
source: "lmdb_data_2"
backend: LMDB
batch_size: 16
}
}
#将data_nousedresize到1位,防止caffe输出过多内容
layer {
name: "reductionx"
bottom: "data_noused"
top: "data_noused"
type: "Reduction"
reduction_param {
axis: 0
}
}
【完】
caffe读取多标签的lmdb数据的更多相关文章
- Caffe系列2——Windows10制作LMDB数据详细过程(手把手教你制作LMDB)
Windows10制作LMDB详细教程 原创不易,转载请注明出处:https://www.cnblogs.com/xiaoboge/p/10678658.html 摘要: 当我们在使用Caffe做深度 ...
- Caffe实现多标签输入,添加数据层(data layer)
因为之前遇到了sequence learning问题(CRNN),里面涉及到一张图对应多个标签.Caffe源码本身是不支持多类标签数据的输入的. 如果之前习惯调用脚本create_imagenet.s ...
- (原)caffe中通过图像生成lmdb格式的数据
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5909121.html 参考网址: http://www.cnblogs.com/wangxiaocvp ...
- [TFRecord格式数据]利用TFRecords存储与读取带标签的图片
利用TFRecords存储与读取带标签的图片 原创文章,转载请注明出处~ 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是 ...
- Caffe框架,图像数据转换成LMDB数据格式
小码农最近在研究深度学习,对所学知识做点记录,以供以后翻阅.在Caffe框架中,数据的格式都是LMDB的,如何将图像数据转换成这个格式呢? 首先,将图像数据和标签生成txt文档,执行一下代码: fin ...
- Python笔记(读取txt文件中的数据)
在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...
- IntelliJ IDEA 在网页修改数据,但是在浏览器刷新的时候,不能读取到修改之后的数据
使用IntelliJ IDEA 在网页修改数据,但是在浏览器刷新的时候,不能读取到修改之后的数据? 解决办法:tomcat配置中,On frame deactivation属性选择Update cla ...
- Android - 读取XML文件中的数据
读取XML中存储的数据.将xmlfile.xml存放在assets文件夹中.在activity_main.xml中创建一个textview,用来显示读取到的数据. XML文件内容如下:xmlfile. ...
- 数据库学习任务四:数据读取器对象SqlDataReader、数据适配器对象SqlDataAdapter、数据集对象DataSet
数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...
随机推荐
- 中国剩余定理——nyoj
中国剩余定理------解法如下:假设存在一个数M M%A=a , M%B=b , M%C=c并且A,B,C必须俩俩互质.满足这一条件下:存在一个R1使得 , K1=A*B*R1 ,K1%C==1.存 ...
- Ansible 小手册系列 十二(Facts)
Facts 是用来采集目标系统信息的,具体是用setup模块来采集得. 使用setup模块来获取目标系统信息 ansible hostname -m setup 仅显示与ansible相关的内存信息 ...
- datagrid与DropDownList关联使用
最近做一个页面需要用到这个两个控件,之前虽然看过,但是没有动手实践过.突然要做这么一个页面,并用上,真的有点着急.于是乎,网上疯狂找datagrid与DropDownList 的例子,找了很多很多,看 ...
- 快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 247781 Accepted: 44015 Descr ...
- hdu4453
题解: splay模板 删除,翻转等等 代码: #include<cstdio> #include<cstring> #include<cmath> #includ ...
- RxJava 详解
给 Android 开发者的 RxJava 详解: http://gank.io/post/560e15be2dca930e00da1083#toc_1
- Github上的iOS App源码 (中文)
Github版英文App地址 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 ...
- mysql的sql编程
sql编程 变量 变量分为两种:系统变量和自定义变量 系统变量 系统定义好的变量:大部分的时候用户根本不需要使用系统变量,系统变量时用来控制服务器的表现的,如:auto_commit. 查看系统变量 ...
- 初次使用Quartus II 13.0的疑惑及解决方法
初次接触Quartus II 13.0,遇到了很多的问题,把问题总结如下: 1.Quartus II 13.0的安装及破解 下载地址:http://t.cn/Rh2TFcz,密码是:g3gc (参考贴 ...
- Android程序员学WEB前端(8)-CSS(3)-盒子内联块级定位浮动-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76618473 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 盒子模型: <!D ...