博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows环境下使用 Caffe在ImageNet上训练网络
阅读量:6441 次
发布时间:2019-06-23

本文共 2901 字,大约阅读时间需要 9 分钟。

在配置好Windows版的Caffe之后,可以使用Windows Caffe训练ImageNet网络,主要有4个步骤:

(1)准备图片数据库

(2)将图片数据转换为Caffe可以使用的LMDB或者LevelDB类型

(3)取数据库均值

(4)开始用Caffe训练网络

1 准备图片数据库

可以从网上找到ImageNet的数据,选择几个图片类别下载下来。我是从ilsvrc2012的数据中找了几个类别。我找到的数据库是这样的:

上面每个文件中都是如下的一堆图片:

任意选择几个类别作为训练数据。我选了如下的三类。每个类别中有1300张图片,在每个类别中抽取100张图片作为验证集,余下的1200张作为训练集。将训练集和验证集存储在相应的路径下。

运行如下两个matlab脚本(脚本来自“http://blog.csdn.net/u013657981/article/details/49497753”),可以生成制作数据库所需要的train.txt和val.txt。

clear allclcfoodDir='F:\caffe-windows\data\ilsvrc12\train';numClasses=3classes=dir(foodDir)classes = classes([classes.isdir]) ;classes = {classes(3:numClasses+2).name}imageName={};fp = fopen('train.txt','a');for ci = 1:length(classes)  ims = dir(fullfile(foodDir, classes{ci}, '*.JPEG'))     for ii=1:length(ims)        fprintf(fp,classes{ci});        fprintf(fp,'/');        fprintf(fp,ims(ii).name);        fprintf(fp,' ');        fprintf(fp,'%d',ci);        fprintf(fp,'\r\n');    endendfclose(fp);

clear allclcfoodDir='F:\caffe-windows\data\ilsvrc12\val';numClasses=3classes=dir(foodDir)classes = classes([classes.isdir]) ;classes = {classes(3:numClasses+2).name}imageName={};fp = fopen('val.txt','a');for ci = 1:length(classes)  ims = dir(fullfile(foodDir, classes{ci}, '*.JPEG'))     for ii=1:length(ims)        fprintf(fp,classes{ci});        fprintf(fp,'/');        fprintf(fp,ims(ii).name);        fprintf(fp,' ');        fprintf(fp,'%d',ci);        fprintf(fp,'\r\n');    endendfclose(fp);

然后把生成的train.txt和val.txt拷贝到合适的路径下以备使用(我是把它们拷贝到了F:\caffe-windows\data\ilsvrc12 路径下)。两个文件内容如下所示。

2 生成数据库

数据库可以选择LMDB或者LevelDB两种类型。

使用如下批处理命令,可以实现训练集的转化,生成LMDB数据库。

F:\caffe-windows\Build\x64\Release\convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:\caffe-windows\data\ilsvrc12\train\ F:\caffe-windows\data\ilsvrc12\train.txt  F:\caffe-windows\examples\imagenet\ilsvrc12_train_lmdbPause

在使用如下命令,可以实现验证集的数据库转化。

F:\caffe-windows\Build\x64\Release\convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:\caffe-windows\data\ilsvrc12\val\ F:\caffe-windows\data\ilsvrc12\val.txt  F:\caffe-windows\examples\imagenet\ilsvrc12_val_lmdbPause

3 数据库均值

F:\caffe-windows\Build\x64\Release\compute_image_mean.exe --backend="lmdb" F:\caffe-windows\examples\imagenet\ilsvrc12_train_lmdb F:\caffe-windows\examples\imagenet\train_mean.binaryprotoPause

4 训练网络

我们采用的是caffe自带的一些网络,一些参数如下,有些我们可以根据自己的需要修改。比如,我将最大迭代次数改为了30000。“train_val.prototxt”文件位于F:\caffe-windows\models\bvlc_alexnet 路径中我的caffe的根目录是F:\caffe-windows)。

在同一个目录下还有文件“solver.prototxt”。网络结构参数中,要把数据库文件和均值文件路径写对。用了相对路径的地方,默认是从caffe的根目录执行。

由于上面文件中有的参数使用了相对路径,所以我们需要打开Windows命令行窗口,cd到caffe的根目录,执行以下命令:

F:\caffe-windows\Build\x64\Release\caffe.exe train --solver=F:\caffe-windows\models\bvlc_alexnet\solver.prototxtpause

或者把它写到一个批处理文件中,在caffe根目录下执行该文件。运行中截图如下:

运行完成后截图如下。在使用了GPU的前提下,我的电脑总共花了2个半小时来完成这个任务。

转载于:https://www.cnblogs.com/yanhuiqingkong/p/7770057.html

你可能感兴趣的文章
大学团队打造手语翻译机器人,完整安装下来需要149个小时
查看>>
Wireshark抓包分析/TCP/Http/Https及代理IP的识别
查看>>
不同包下,相同数据结构的两个类进行转换
查看>>
软件安装(linux)
查看>>
TeamPlain for VSTS - Web Access for Team System-TFS 跨平台的客户端
查看>>
面对前车之鉴的AR,现在的VR要做些什么?
查看>>
vscode 换行符\n 变成\r\n
查看>>
一个绘制虚线的非常规函数(常规方法,打印机上绘制不出虚线)
查看>>
获得本机的IP,掩码和网关
查看>>
大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用
查看>>
Delphi中将XML文件数据装入DataSet
查看>>
你刚才在淘宝上买了一件东西
查看>>
发布一个 Linux 下的 C++ 多线程库
查看>>
Python序列类型
查看>>
再谈ThinkPHP
查看>>
Hibernate问题浅析
查看>>
出现访问apache资源直接下载php文件的解决办法-----yum 安装 php mysql
查看>>
七种Mysql表类型
查看>>
归并与归并排序
查看>>
linux和windows互传文件、用户配置文件和密码配置文件、用户组管理、用户管理...
查看>>