Windows环境下使用 Caffe在ImageNet上训练网络
2017-03-16 21:44
561 查看
在配置好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。
然后把生成的train.txt和val.txt拷贝到合适的路径下以备使用(我是把它们拷贝到了F:\caffe-windows\data\ilsvrc12 路径下)。两个文件内容如下所示。
2 生成数据库
数据库可以选择LMDB或者LevelDB两种类型。
使用如下批处理命令,可以实现训练集的转化,生成LMDB数据库。
在使用如下命令,可以实现验证集的数据库转化。
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.binaryproto
Pause
4 训练网络
我们采用的是caffe自带的一些网络,一些参数如下,有些我们可以根据自己的需要修改。比如,我将最大迭代次数改为了30000。“train_val.prototxt”文件位于F:\caffe-windows\models\bvlc_alexnet 路径中(我的caffe的根目录是F:\caffe-windows)。
在同一个目录下还有文件“solver.prototxt”。网络结构参数中,要把数据库文件和均值文件路径写对。用了相对路径的地方,默认是从caffe的根目录执行。
由于上面文件中有的参数使用了相对路径,所以我们需要打开Windows命令行窗口,cd到caffe的根目录,执行以下命令:
或者把它写到一个批处理文件中,在caffe根目录下执行该文件。运行中截图如下:
运行完成后截图如下。在使用了GPU的前提下,我的电脑总共花了2个半小时来完成这个任务。
(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 all clc foodDir='F:\caffe-windows\data\ilsvrc12\train'; numClasses=3 classes=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'); end end fclose(fp);
clear all clc foodDir='F:\caffe-windows\data\ilsvrc12\val'; numClasses=3 classes=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'); end end fclose(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_lmdb Pause
在使用如下命令,可以实现验证集的数据库转化。
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_lmdb Pause
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.binaryproto
Pause
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.prototxt pause
或者把它写到一个批处理文件中,在caffe根目录下执行该文件。运行中截图如下:
运行完成后截图如下。在使用了GPU的前提下,我的电脑总共花了2个半小时来完成这个任务。
相关文章推荐
- Windows10下使用Caffe训练神经网络(含数据库的生成方法)
- Windows下使用训练好的Caffe模型
- windows环境Caffe安装配置步骤(无GPU)及mnist训练
- 【深度学习】笔记6:使用caffe中的CIFAR10网络模型和自己的图片数据训练自己的模型(步骤详解)
- caffe-windows下使用pycaffe绘制网络图
- 【神经网络与深度学习】基于Windows+Caffe的Minst和CIFAR—10训练过程说明
- 【神经网络与深度学习】Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程
- Windows Caffe 学习笔记(四)搭建自己的网络,训练和测试MNIST手写字体库
- 使用ImageNet在faster-rcnn上训练自己的分类网络
- 使用caffe-future完成FCN网络的训练
- Windows下使用python绘制caffe中.prototxt网络结构数据可视化
- 使用caffe中的imagenet对自己的图片进行分类训练(超级详细版)
- Caffe学习——使用自己的数据(非图像)训练网络
- 【caffe-Windows】caffe在Windows下训练深度学习网络并测试(以mnist为例)
- Caffe 之 使用非图片的鸢尾花(IRIS)数据集(hdf5格式) 训练网络模型
- 深度学习Caffe实战(9)Windows 平台caffe用MATLAB接口实现训练网络和测试
- 使用matlab版卷及神经网络 MatconvNe和预训练的imageNet进行图像检Image retrieval using MatconvNet and pre-trained imageNet
- 【深度学习】【caffe实用工具5】笔记27 windows下SSD网络中的get_image_size工具的使用
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程<二>