• Windows环境下使用 Caffe在ImageNet上训练网络


    在配置好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-windowsdatailsvrc12	rain';
    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,'
    ');
        end
    end
    fclose(fp);


    clear all
    clc
    foodDir='F:caffe-windowsdatailsvrc12val';
    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,'
    ');
        end
    end
    fclose(fp);


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




    2 生成数据库

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

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

    F:caffe-windowsBuildx64Releaseconvert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:caffe-windowsdatailsvrc12	rain F:caffe-windowsdatailsvrc12	rain.txt  F:caffe-windowsexamplesimagenetilsvrc12_train_lmdb
    Pause
    


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

    F:caffe-windowsBuildx64Releaseconvert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:caffe-windowsdatailsvrc12val F:caffe-windowsdatailsvrc12val.txt  F:caffe-windowsexamplesimagenetilsvrc12_val_lmdb
    Pause
    



    3 数据库均值

    F:caffe-windowsBuildx64Releasecompute_image_mean.exe --backend="lmdb" F:caffe-windowsexamplesimagenetilsvrc12_train_lmdb F:caffe-windowsexamplesimagenet	rain_mean.binaryproto
    Pause
    



    4 训练网络

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


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



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

    F:caffe-windowsBuildx64Releasecaffe.exe train --solver=F:caffe-windowsmodelsvlc_alexnetsolver.prototxt
    pause
    

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


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




  • 相关阅读:
    cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现
    cocos2dx游戏开发——别踩白块学习笔记(一)——Block类
    《数据结构与算法分析》学习笔记(三)——链表ADT
    《数据结构与算法分析》学习笔记(二)——算法分析
    cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
    cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架
    cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备
    《数据结构与算法分析》学习笔记(一)——递归思想!
    好的博客mark
    [uart]理解线路规程的作用
  • 原文地址:https://www.cnblogs.com/yanhuiqingkong/p/7770057.html
Copyright © 2020-2023  润新知