在配置好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 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个半小时来完成这个任务。

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

Windows环境下使用 Caffe在ImageNet上训练网络相关推荐

  1. 在windows环境下ftp服务器的文件上传和下载

    在windows环境下ftp服务器的文件上传和下载 mo 一.上传本地文件 第一步:登录FTP服务器.在开始菜单中输入cmd,回车进入.输入ftp进入服务器,输入命令格式:open FTP服务器地址 ...

  2. windows环境下将yolo-fatest的caffe模型转化为wk模型

    windows环境下将yolo-fatest的caffe模型转化为wk模型 第一步 第二步 第三步 第四步 在上一个博客https://blog.csdn.net/playezio/article/d ...

  3. Windows环境下个别Gem包安装不上的解决办法

    在Windows环境下,安装Gem包:therubyracer时对libv8包有所依赖, 先安装libv8的时候报错: 解决:注释掉 gem therubyracer 原因: "No, th ...

  4. Windows环境下Unicode编程总结和将ANSI转换到Unicode 将Unicode转换到ANSI

    Windows环境下Unicode编程总结 UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下. UN ...

  5. Redis学习笔记~Redis在windows环境下的安装

    Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...

  6. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  7. 腾讯云CMQ消息队列在Windows环境下的使用

    版权声明:本文由李少华原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/community/article/100 来源:腾云阁 https://www.qcl ...

  8. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  9. 缺少nst linux.mbr文件,用EasyBCD2.0在Windows环境下引导Linux启动

    用EasyBCD2.0在Windows环境下引导Linux启动 以在Win7环境下用EasyBCD2.0.2引导Ubuntu启动为例(Ubuntu安装在Win7之前,倘若反了进不去Win7,可以用Wi ...

最新文章

  1. 在ListCtrl控件中插入图标
  2. python绘图实例-Python使用matplotlib简单绘图示例
  3. Android 网络连接状态的监控
  4. 用scikit-learn学习K-Means聚类
  5. 关于linux shell脚本开头的#!/bin/sh
  6. 华东政法大学教学管理系统_中国科学技术大学1022万采购3包生命科学仪器
  7. Go语言面向对象编程
  8. php fastdfs扩展,php如何安装fastdfs扩展
  9. 什么是Semantic(语义)?从互联网爬虫、自动驾驶到对话机器人
  10. Tomcat 7 的domain域名配置,Tomcat 修改JSESSIONID
  11. ThinkingInJava 学习 之 0000001 一切都是对象
  12. google开发者大会的倒计时动画,没有用Flash
  13. 马士兵java学习之路
  14. PackageManager解析
  15. [Latex]visio画图导入矢量图到Latex | 裁剪pdf | 去掉pdf白边
  16. 记一次使用npm命令报错
  17. virtualbox突然打不开虚拟机解决方法
  18. LES07 :JNI编程
  19. flash动画作品《童话》mtv_Pelephone翻唱版
  20. 百度推广是什么意思?找推广公司做百度推广可行吗?

热门文章

  1. String类的intern()
  2. httpclient 调用WebAPI
  3. html中嵌入iframe进行父子页面参数传递
  4. MySQL高级 - NULL值的判定
  5. RabbitMQ的missingQueuesFatal参数
  6. 分布式认证方案-基于token的认证方式
  7. J .U.C 中的原子操作类
  8. ReentrantLock 的实现原理
  9. Redis中的淘汰策略
  10. 字符串中的编码解码问题