文档大部分都是机翻,本人英语未过四级,所以凑合看吧

构建ImageNet
本指南旨在让您准备好根据自己的数据训练自己的模型。如果你只是想要一个ImageNet训练的网络,那么注意,由于训练需要很多电能,我们讨厌全球变暖,我们在model zoo提供如下所述训练的CaffeNet模型。

数据准备
该指南指定所有路径并假定所有命令都从根caffe目录执行。(即~/caffe)

通过“ImageNet”我们这里意味着ILSVRC12挑战,但你也可以轻松地训练整个ImageNet,只是需要更多的磁盘空间,和一个更长的训练时间。

我们假设您已经下载了ImageNet培训数据和验证数据,并且它们存储在您的磁盘上,如:

/path/to/imagenet/train/n01440764/n01440764_10026.JPEG
/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG
您将首先需要准备一些辅助数据进行培训。此数据可通过以下方式下载:(在caffe目录下直接执行即可)

./data/ilsvrc12/get_ilsvrc_aux.sh
训练数据和验证数据输入在文本中描述train.txt和val.txt列出所有文件及其标签。注意,我们使用不同于ILSVRC devkit的标签索引:我们按照ASCII顺序对synset名称进行排序,然后将它们从0标记到999.可以在synset_words.txt中看到 synset/name的映射关系。

您可能需要提前将图像调整为256x256。默认情况下,我们不鼓励这样做,因为在集群环境中,使用mapreduce并行方式调整图像大小获益。例如,扬清使用他的轻量的mincepie包。如果你宁愿事情更简单,你也可以使用shell命令,如:

for name in /path/to/imagenet/val/*.JPEG; do
convert -resize 256x256\! $name $name
done
看看examples/imagenet/create_imagenet.sh。根据需要设置训练和测试数据文件夹的路径,并设置“RESIZE = true”将所有图像调整为256x256,如果您没有提前调整图像大小现在只需使用 examples/imagenet/create_imagenet.sh创建leveldbs。请注意,examples/imagenet/ilsvrc12_train_leveldb而examples/imagenet/ilsvrc12_val_leveldb不应这种执行前就存在。它将由脚本创建。GLOG_logtostderr=1只是转储更多的信息供您检查,您可以安全地忽略它。

计算图像平均值
该模型要求我们从每个图像中减去图像平均值,因此我们必须计算平均值。tools/compute_image_mean.cpp实现它 - 它也是一个很好的例子,让您熟悉如何操作多个组件,如协议缓冲区,leveldbs和日志记录,如果你不熟悉他们。无论如何,平均计算可以用下面这个文件直接执行输出:

./examples/imagenet/make_imagenet_mean.sh
这将创建 data/ilsvrc12/imagenet_mean.binaryproto。

模型定义
我们将描述Krizhevsky,Sutskever和Hinton在他们的NIPS 2012论文中首先提出的方法的参考实现。

网络定义(models/bvlc_reference_caffenet/train_val.prototxt)遵循Krizhevsky et al。请注意,如果您偏离本指南中建议的文件路径,则需要调整.prototxt文件中的相关路径。

如果你仔细看models/bvlc_reference_caffenet/train_val.prototxt,你会注意到几个include部分指定phase: TRAIN或phase: TEST。这些部分允许我们在一个文件中定义两个密切相关的网络:用于训练的网络和用于测试的网络。这两个网络几乎相同,共享除了用include { phase: TRAIN }或标记的那些层之外的所有层include { phase: TEST }。在这种事件下,只有输入层和一个输出层不同。

输入层差异:训练网络的data输入层从examples/imagenet/ilsvrc12_train_leveldb输入图像中提取其数据并随机镜像。测试网络的data层从数据获取数据,examples/imagenet/ilsvrc12_val_leveldb不执行随机镜像。

输出层差异:两个网络都输出softmax_loss层,其在训练中用于计算损失函数和初始化反向传播,而在验证中这个损失被简单报告。测试网络还具有第二输出层,accuracy其用于报告测试集上的精度。在训练过程中,测试网络偶尔会在测试集上进行实例化和测试,生成类似Test score #0: xxx和Test score #1: xxx。在这种情况下,分数0是准确度(对于未经训练的网络,其将从1/1000 = 0.001开始),分数1是损失(对于未训练的网络,其将从7开始)。

我们还将布置一个用于运行解算器的协议缓冲区。让我们做几个计划:

我们将以256的批次运行,并运行总共450,000次迭代(约90个周期)。
对于每1000次迭代,我们使用验证数据测试学习网络。
我们将初始学习速率设置为0.01,并且每100,000次迭代(大约20个周期)减少它。
每20次迭代将显示信息。
网络将训练有动量0.9和0.0005的重量衰减。
对于每10,000次迭代,我们将保存当前状态的快照。
听起来不错?这是在中实现的models/bvlc_reference_caffenet/solver.prototxt。

训练ImageNet
准备好了吗?开始训练。

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
坐下来享受吧!

在K40机器上,每20次迭代运行大约26.5秒(而在K20上这需要36秒),因此对于完全前向传播-反向传播过程,每个图像有效地大约5.2ms。大约2毫秒是前向的,其余的是反向的。如果你有兴趣剖析计算时间,你可以运行

./build/tools/caffe time --model=models/bvlc_reference_caffenet/train_val.prototxt

继续训练?
我们都有电源断电的经历,或者我们奖励自己一点通过玩战地(有人还记得震撼?)。由于我们在训练期间快照中间结果,我们能够从快照中恢复。这可以做到很容易:

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate
其中在脚本中caffenet_train_iter_10000.solverstate是解算器状态快照,其存储用于恢复精确解算器状态(包括参数,动量历史等)的所有必要信息。

分词
希望你喜欢这个方法!自ILSVRC 2012挑战以来,许多研究人员已经走得更远,改变了网络架构或微调网络中的各种参数,以满足新的数据和任务。 Caffe让你通过简单地编写不同的prototxt文件更容易探索不同的网络选择 - 那不是很令人兴奋吗?

现在你有一个训练有素的网络,看看如何使用它和Python接口分类ImageNet。

转载于:https://www.cnblogs.com/HugoLester/p/6490580.html

Caffe ImageNet官方文档中文版相关推荐

  1. caffe MNIST官方文档中文版

    在购买视频后没有学明白,只能自己看官网文档了,就顺便把中文版写出来了,后期对于各个层的理解更深了之后会添加更多的注释,如有错误请指正 可以给我发邮件845832282@qq.com 使用Caffe在M ...

  2. TensorFlow 官方文档中文版发布啦(持续维护)

    TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...

  3. scikit-learn (sklearn) 官方文档中文版

    scikit-learn (sklearn) 官方文档中文版 sklearn 0.21.3 中文文档 sklearn 0.21.3 中文示例 sklearn 英文官网 介绍 sklearn (scik ...

  4. tensorflow 官方文档中文版 tensorflow教程 tensorflow教学

    github链接:TensorFlow 最新官方文档中文版 文档链接:https://tensorflow.juejin.im/get_started/ 理论上来说,只要仔细阅读官方文档,便能对ten ...

  5. TensorFlow 官方文档中文版

    TensorFlow 官方文档中文版: http://wiki.jikexueyuan.com/project/tensorflow-zh/ w3cschool https://www.w3cscho ...

  6. TensorFlow 官方文档中文版发布啦(持续维护) 1

    TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...

  7. jQuery 1.4官方文档中文版

    jQuery 1.4在本月早些时候发布了.这个版本包含了大量的编程,测试和记录文档的工作.这份官方文档总结了jQuery 1.4当中加入的变更和功能,很多常用和热门的方法被重写,性能得到了很大的提升. ...

  8. 2DToolkit官方文档中文版打地鼠教程(一):初始设置

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  9. “scikit-learn(sklearn) 官方文档中文版”

    "scikit-learn(sklearn) 官方文档中文版" 本博客摘自微博:爱可可-爱生活 "scikit-learn(sklearn) 官方文档中文版" ...

最新文章

  1. ML之RFXGBoost:分别基于RF随机森林、XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)
  2. 标志位鼠标Java_检查标志位java
  3. ABP vNext 审计日志获取真实客户端IP
  4. java scavenge_请概述一下Java中都有哪些垃圾收集器
  5. HTML5外贸实木家具商城网站源码
  6. jQuery attributes(上)
  7. python logging 控制其他模块等级_Python常用模块:logging模块介绍
  8. python, c/c++去掉文本的换行符
  9. 为什么运营商的机顶盒(IPTV)看直播不卡?
  10. 最全的权限系统设计方案(图解)
  11. 在线小说网站的设计与实现(附源码)
  12. CTF之misc-图片隐写
  13. Word产品需求文档,已经过时了
  14. 网传三星手机大半夜黑屏乱码,原因竟然是闰四月?
  15. SSM 框架原理简介及解析
  16. Java基础知识提炼与总结
  17. Android图片选取和剪裁头像的相关问题
  18. 微信小程序直播卖货模式怎么开启
  19. python——常见内置函数、可迭代对象与迭代器对象
  20. 为什么推荐这款固定资产管理软件?

热门文章

  1. PaddleSeg 分割模型介绍
  2. 前端开发工程师 职业规划
  3. linux安装 openbabel pybel
  4. 计算机应用基础本4.1,计算机应用基础--详细介绍
  5. android的模拟器打不开了,解决Android模拟器打不开的问题!...
  6. liunx系统安装java运行环境
  7. 蚂蚁集团最新业绩出炉:净利润同比下降63%,连续三个季度下滑
  8. python中变量不直接存储值_无法存储函数的Python导致变量?
  9. HLS介绍 - 05 - 软件仿真
  10. 【Java常用工具类汇总 2,linux摄像头驱动架构