caffe多标签装hdf5接口
来源:互联网 发布:在淘宝买手机靠谱吗 编辑:程序博客网 时间:2024/06/06 01:34
这个代码的作用是输入图像的标签,在caffe里面,由于用自带的lmda和leveldb接口的标签是一个,并且这个标签只能是整数,如果想进行回归或者多标签的话就没法使用自带的接口,因此,我提供了这个接口可以实现任意标签数。
首先介绍一个这个接口的使用:
对于argv[1],里面的txt要求,每一行对应一张图片,每一行的开口对应图片名称,后面接着是标签。
#include<string>#include<vector>#include "H5Cpp.h"#include "hdf5.h"#include "hdf5_hl.h"#include<fstream>#include <iostream>#include <stdlib.h>#include<stdio.h>#include <fstream> // NOLINT(readability/streams)#include <string>#include <utility>#include <vector>using namespace H5;using namespace std;#define IMAGE_NUM_MAX 10000//DEFINE_string(lable_type, "double", "support type of int and double");int main(int argc, char** argv){ //argv[1] 是label的txt //argv[2] 是hdf5存放的位置以及名称 //argv[3] 是每个样本label的个数 if (argc != 4){ //LOG(ERROR) << "input less!" << endl; printf("input less\n"); return false; } int label_size = atoi(argv[3]); std::ifstream in(argv[1]); string image_path; double* label = new double[label_size*IMAGE_NUM_MAX]; int image_num = 0; while (in >> image_path){ for (int i = 0; i < label_size; ++i){ in >> label[i+image_num*label_size]; } ++image_num; }//while 标签数组的大小为image_num*label_size in.close(); H5File* file = new H5File(argv[2], H5F_ACC_TRUNC); double fill_val = 0.0; DSetCreatPropList plist; plist.setFillValue(PredType::NATIVE_DOUBLE, &fill_val); hsize_t fdim[] = {image_num, label_size}; DataSpace dataspace(2, fdim); DataSet* dataset = new DataSet(file->createDataSet("label", PredType::NATIVE_DOUBLE, dataspace, plist)); hsize_t start[2] = {0, 0}; hsize_t count[2] = {image_num, label_size}; dataspace.selectHyperslab(H5S_SELECT_SET, count, start); hsize_t mdim[] = {image_num*label_size}; DataSpace mspace(1, mdim); start[0] = 0; count[0] = image_num*label_size; mspace.selectHyperslab(H5S_SELECT_SET, count, start); dataset->write(label, PredType::NATIVE_DOUBLE, mspace, dataspace); delete dataset; delete file; cout << "process " << image_num << " images " << endl; return true;}
makefile
all: g++ -o convert_labels_hdf5 convert_labels_hdf5.cpp -L/usr/lib -I/usr/include -lhdf5 -lhdf5_hl -lhdf5_cpp
查看生成的文件可以通过matlab,代码如下
label = h5read('filepath','/label')
1 0
- caffe多标签装hdf5接口
- Caffe中使用HDF5制作多标签数据
- 用Python将多标签数据存入caffe使用的HDF5&LMDB格式
- 生成hdf5文件用于多标签训练
- 生成hdf5文件用于多标签训练
- 生成hdf5文件用于多标签训练
- 生成hdf5文件用于多标签训练
- caffe HDF5 Data
- 【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现
- MATLAB讀寫hdf5—caffe讀取hdf5
- Caffe HDF5 header version与HDF5 library不匹配
- caffe多标签训练
- caffe中HDF5层及数据生成
- caffe中HDF5层及数据生成
- caffe+anaconda2编译hdf5报错问题
- hdf5
- HDF5
- Caffe 中LMDB接口处理多标签(Multi-Label)数据
- MySQL comment
- redis 学习指南
- X,Y,frame,size重写为UIView创建分类
- JDBC数据库连接
- 多进程与多线程的选择
- caffe多标签装hdf5接口
- FMDB 使用方法
- 正则表达式基础语法
- Unity Http短连接
- 专项:Android内存泄露实践分析
- Android 插件化之类加载器 ClassLoader
- arm-linux内核编译过程小结
- Ngix的介绍
- 解析Json 和 XML 的学习