PS:本系列为本人初步学习caffe所记,由于理解尚浅,其中多有不足之处和错误之处,有待改正。

一、实现方法

首先,将文件名与它对应的标签用 std::pair 存储起来,其中first存储文件名,second存储标签,

其次,数据通过 Datum datum来存储,将图像与标签转为Datum 需要通过函数ReadImageToDatum() 来完成,

再次, Datum 数据又是通过datum.SerializeToString(&out)把数据序列化为字符串 string out;,

最后, 将字符串 string out ,通过txn->Put(string(key_cstr, length), out)写入数据库DB。

二、convert_imageset.cpp解析

1.头文件解析

 1 #include <algorithm>   //输出数组的内容、对数组进行升幂排序、反转数组内容、复制数组内容等操作
 2 #include <fstream>  // NOLINT(readability/streams)
 3 #include <string>
 4 #include <utility>    //utility头文件定义了一个pair类型,pair类型用于存储一对数据
 5 #include <vector>     //会自动扩展容量的数组
 6 
 7 #include "boost/scoped_ptr.hpp"   //智能指针头文件
 8 #include "gflags/gflags.h"       //Google的一个命令行参数库
 9 #include "glog/logging.h"        //日志头文件
10  
11 #include "caffe/proto/caffe.pb.h"  
12 #include "caffe/util/db.hpp"      //引入包装好的lmdb操作函数
13 #include "caffe/util/format.hpp"  
14 #include "caffe/util/io.hpp"      //引入opencv的图像操作函数
15 #include "caffe/util/rng.hpp"
16 
17 using namespace caffe;  // NOLINT(build/namespaces)引入全部caffe命名空间
18 using std::pair;        //引入pair对命名空间
19 using boost::scoped_ptr;
View Code

分类:

技术点:

相关文章: