zoukankan      html  css  js  c++  java
  • caffe简易上手指南(一)—— 运行cifar例子

    简介

    caffe是一个友好、易于上手的开源深度学习平台,主要用于图像的相关处理,可以支持CNN等多种深度学习网络。

    基于caffe,开发者可以方便快速地开发简单的学习网络,用于分类、定位等任务,也可以用于科研,在其源码基础上进行修改,实现自己的算法。

    本文的主要目的,是介绍caffe的基本使用方法,希望通过本文,能让普通的工程师可以使用caffe训练自己的简单模型。

    本文主要包括以下内容:运行caffe的例子训练cifar训练集、使用别人定义好的网络训练自己的数据、使用训练好的模型fine tune自己的数据。

    背景知识简介

    深度学习是机器学习的一个分支,主要目标在于通过学习的方法,解决以往普通编程无法解决的问题,例如:图像识别、文字识别等等。

    机器学习里的“学习”,指通过向程序输入经验数据,通过若干次“迭代”,不断改进算法参数,最终能够获得“模型”,使用新数据输入模型,计算得出想要的结果。

    例如图像分类任务中,经验数据是图片和对应的文字,训练出模型后,将新图片使用模型运算,就可以知道其对应的类别。

    以上只是简单介绍,这里还是建议先学习机器学习、卷积神经网络的相关基础知识。

    安装

    这一部分网上有不少教程,这里就略掉,另外,我是用docker的镜像直接安装的,网上可以直接搜到带caffe的docker镜像。好处是省去安装环境的时间,缺点是后面设置文件会麻烦一些,建议从长计议还是直接安装在电脑上。

    训练cifar训练集

    cifar是一个常见的图像分类训练集,包括上万张图片及20个分类,caffe提供了一个网络用于分类cifar数据集。

    cifar网络的定义在examples/cifar10目录下,训练的过程十分简单。

    (以下命令均在caffe默认根目录下运行,下同)

    1、获取训练数据

    cd $CAFFE_ROOT
    ./data/cifar10/get_cifar10.sh
    ./examples/cifar10/create_cifar10.sh

     

    2、开始训练

    cd $CAFFE_ROOT
    ./examples/cifar10/train_quick.sh

    3、训练完成后我们会得到:

      cifar10_quick_iter_4000.caffemodel.h5

      cifar10_quick_iter_4000.solverstate.h5

      此时,我们就训练得到了模型,用于后面的分类。

    4、下面我们使用模型来分类新数据

    先直接用一下别人的模型分类试一下:(默认用的ImageNet的模型)

    python python/classify.py examples/images/cat.jpg foo

     

    下面我们来指定自己的模型进行分类:

    python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --center_only  examples/images/cat.jpg foo

    上面这句话的意思是,使用cifar10_quick.prototxt网络 + cifar10_quick_iter_4000.caffemodel.h5模型,对examples/images/cat.jpg图片进行分类。

    默认的classify脚本不会直接输出结果,而是会把结果输入到foo文件里,不太直观,这里我在网上找了一个修改版,添加了一些参数,可以输出概率最高的分类。

    替换python/classify.py,下载地址:http://download.csdn.net/detail/caisenchuan/9513196

    这个脚本添加了两个参数,可以指定labels_file,然后可以直接把分类结果输出出来:

    python python/classify.py --print_results --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --labels_file data/cifar10/cifar10_words.txt  --center_only  examples/images/cat.jpg foo

    输出结果:

    Loading file: examples/images/cat.jpg
    Classifying 1 inputs.
    predict 3 inputs.
    Done in 0.02 s.
    Predictions : [[ 0.03903743  0.00722749  0.04582177  0.44352672  0.01203315  0.11832549
       0.02335102  0.25013766  0.03541689  0.02512246]]
    python/classify.py:176: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)
      labels = labels_df.sort('synset_id')['name'].values
    [('cat', '0.44353'), ('horse', '0.25014'), ('dog', '0.11833'), ('bird', '0.04582'), ('airplane', '0.03904')]
    上面标明了各个分类的顺序和置信度
    Saving results into foo

    Tips

    最后,总结一下训练一个网络用到的相关文件:

    cifar10_quick_solver.prototxt:方案配置,用于配置迭代次数等信息,训练时直接调用caffe train指定这个文件,就会开始训练

    cifar10_quick_train_test.prototxt:训练网络配置,用来设置训练用的网络,这个文件的名字会在solver.prototxt里指定

    cifar10_quick_iter_4000.caffemodel.h5:训练出来的模型,后面就用这个模型来做分类

    cifar10_quick_iter_4000.solverstate.h5:也是训练出来的,应该是用来中断后继续训练用的文件

    cifar10_quick.prototxt:分类用的网络

  • 相关阅读:
    数据库事务4种隔离级别及7种传播行为
    Spring AOP深入剖析
    SQL语句-创建索引
    global文件中的application_start方法中做: 定时器
    细说ASP.NET Forms身份认证
    asp.net(C#)实现功能强大的时间日期处理类完整实例
    C# 文件操作类大全
    SQL Server Profiler:使用方法和指标说明
    分库分表原则 总结
    做软件与团队建设——对带研发团队和管理的总结
  • 原文地址:https://www.cnblogs.com/alexcai/p/5468164.html
Copyright © 2011-2022 走看看