问题描述:

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
  }

}

 

【完】

最新文章

  1. 网页返回顶部之animate方法
  2. nginx缓存引发的问题
  3. 基于HTML5快速搭建3D机房设备面板
  4. H - R(N)
  5. try catch 怎么写?
  6. SQL Server 连接字符串和身份验证详解
  7. bzoj1143 2718
  8. 非常有用的Java程序片段
  9. Starting and Stopping Oracle Fusion Middleware
  10. lxd容器之GPU发现和加载
  11. WPF+AE开发小结--TOCControl右键菜单删除图层
  12. PHP面试题详解
  13. 高仿QQ头像截取
  14. saltstack总结-2018-0620
  15. [android] 线性布局和布局的组合
  16. java.io.IOException: No space left on device 错误
  17. VM虚拟机-Ubuntu server- 桥接模式网络配置
  18. javascript之继承
  19. mysql数据库性能测试报告
  20. 51Nod:活动安排问题之二(贪心)

热门文章

  1. struts-2.3.24.1中的jar的详解
  2. js排序算法03——选择排序
  3. 转:kafka入门
  4. hdu 4771 13 杭州 现场 B - Stealing Harry Potter's Precious 暴力bfs 难度:0
  5. SQL语句往Oracle数据库中插入日期型数据(to_date的用法)
  6. AES前后端加密
  7. Tomcat 环境安装
  8. SQL Server里查询表结构命令
  9. 使用kibana来进行ElasticSearch的信息查询检索
  10. EasyPusher/EasyDarwin支持H.265 RTSP/RTP直播推流与分发播放