【Caffe的C++接口使用说明(一)】caffe_windows下的第一个测试程序学习教程

来源:互联网 发布:光大证券金阳光mac版 编辑:程序博客网 时间:2024/06/07 19:24
/****************************************************************************************************
文件说明:         caffe_windows下的第一个测试程序学习教程(一)开发环境:          win10+caffe+Opencv2.4.8+CPU时间地点:         陕西师范大学 文津楼 2017.5.29具体操作:         1)下载数据      程序本身不带测试数据,需要我们去下载,测试数据的格式为leveldb数据库格式(一种数据库文件)。   您可以直接双击"F:\\caffe\\caffe-windows\\examples\\mnistget_mnist_leveldb.bat"这个windows环   境下的批处理脚本文件自动下载数据,但是一般都不能成功下载。因此,您可以直接到MNIST数据集的官   网"http://yann.lecun.com/exdb/mnist/"直接下载文件,文件解压后,得到两个文件夹:        1)mnist-train-leveldb2)mnist-test-leveldb3)将这两个文件夹直接复制到.\examples\mnist\目录下 2)修改配置文件      修改lenet_solver.prototxt文件,使用Notepad++软件打开这个文件,修改最后一行:       solver_mode: GPU------------------>solver_mode: CPU         3)运行.\examples\mnist\文件夹下的脚本文件"train_lenet.bat",这样就开始训练MNIST的数据识别模型了 4)运行时,有个错误,缺少libgfortran-3.dll文件,随便在网上下一个放在F:\caffe\caffe-windows\bin文      件夹下就可以了train_lenet.bat文件的解读: copy ..\\..\\bin\\MainCaller.exe ..\\..\\bin\\train_net.exe SET GLOG_logtostderr=1 "../../bin/train_net.exe" lenet_solver.prototxt pause 1)这个脚本文件其实很简单,只有四行:       第一行:将caffe安装文件根目录下的bin文件夹里面的MainCaller.exe复制一份,并将其重命名为          train_net.exe   第二行:设置glog日志。glog是Goole出的一个C++轻量级的日志库。   第三行:运行文件train_net.exe,并且给这个exe文件传递一个参数lenet_solver.prototxt   第四行:测试完毕后,暂停。 2)MainCaller.exe是整个程序的入口,由它来调用其他的测试。我们打开对应的MainCaller.cpp文件(具体       在.\examples\mnist\文件夹下),我们发现,这个文件只有一行代码。   #include "../../tools/train_net.cpp"   即使去调用train_net.cpp文件,打开tools下的train_net.cpp文件,熟悉的main就来了:*****************************************************************************************************//*****************************************************************************************************程序说明:        1)这是一个简单的脚本,允许人们快速地训练一个网络,其参数由文本格式指定2)This is a simple script that allows one to quickly train a network whose parameters are   specified by text format protocol buffers.使用方法:        train_net net_proto_file solver_proto_file [resume_point_file]*****************************************************************************************************/#include <cuda_runtime.h>                    //【1】cuda运行时的头文件#include <iostream>                          //【2】C++的库文件#include <cstring>#include "caffe/caffe.hpp"                   //【3】caffe的头文件using namespace caffe;                       //【4】包含caffe的命名空间int main(int argc, char** argv) {  ::google::InitGoogleLogging(argv[0]);      //【1】用第一个参数来初始化日志  ::google::SetLogDestination(0, "../tmp/"); //【2】将参数放到caffe根目录下的../tmp/文件夹下                                             //【3】例如我的F:\caffe\caffe-windows\tmp  if (argc < 2 || argc > 3)   {    LOG(ERROR) << "Usage: train_net solver_proto_file [resume_point_file]";    return 1;  }  SolverParameter solver_param;              //【4】创建测试参数对象                                             //【5】读取具体的参数配置  ReadProtoFromTextFileOrDie(argv[1], &solver_param);  LOG(INFO) << "Starting Optimization";      //【6】打印日志信息  SGDSolver<float> solver(solver_param);     //【7】开始优化  if (argc == 3)                             //【8】根据调用时,是否带第三个参数,进行不同的测试  {    LOG(INFO) << "Resuming from " << argv[2];    solver.Solve(argv[2]);  }   else   {    solver.Solve();                             }  LOG(INFO) << "Optimization Done.";         //【9】优化结束,打印日志信息  return 0;}

阅读全文
0 0
原创粉丝点击