Caffe ImageNet官方文档中文版
文档大部分都是机翻,本人英语未过四级,所以凑合看吧
构建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官方文档中文版相关推荐
- caffe MNIST官方文档中文版
在购买视频后没有学明白,只能自己看官网文档了,就顺便把中文版写出来了,后期对于各个层的理解更深了之后会添加更多的注释,如有错误请指正 可以给我发邮件845832282@qq.com 使用Caffe在M ...
- TensorFlow 官方文档中文版发布啦(持续维护)
TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...
- scikit-learn (sklearn) 官方文档中文版
scikit-learn (sklearn) 官方文档中文版 sklearn 0.21.3 中文文档 sklearn 0.21.3 中文示例 sklearn 英文官网 介绍 sklearn (scik ...
- tensorflow 官方文档中文版 tensorflow教程 tensorflow教学
github链接:TensorFlow 最新官方文档中文版 文档链接:https://tensorflow.juejin.im/get_started/ 理论上来说,只要仔细阅读官方文档,便能对ten ...
- TensorFlow 官方文档中文版
TensorFlow 官方文档中文版: http://wiki.jikexueyuan.com/project/tensorflow-zh/ w3cschool https://www.w3cscho ...
- TensorFlow 官方文档中文版发布啦(持续维护) 1
TensorFlow 是 Google 研发的第二代人工智能学习系统,是 Google 为了帮助全球开发者们更加方便和高效地开发机器学习 (Machine Learning)和人工智能 (AI) 应用 ...
- jQuery 1.4官方文档中文版
jQuery 1.4在本月早些时候发布了.这个版本包含了大量的编程,测试和记录文档的工作.这份官方文档总结了jQuery 1.4当中加入的变更和功能,很多常用和热门的方法被重写,性能得到了很大的提升. ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- “scikit-learn(sklearn) 官方文档中文版”
"scikit-learn(sklearn) 官方文档中文版" 本博客摘自微博:爱可可-爱生活 "scikit-learn(sklearn) 官方文档中文版" ...
最新文章
- ML之RFXGBoost:分别基于RF随机森林、XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)
- 标志位鼠标Java_检查标志位java
- ABP vNext 审计日志获取真实客户端IP
- java scavenge_请概述一下Java中都有哪些垃圾收集器
- HTML5外贸实木家具商城网站源码
- jQuery attributes(上)
- python logging 控制其他模块等级_Python常用模块:logging模块介绍
- python, c/c++去掉文本的换行符
- 为什么运营商的机顶盒(IPTV)看直播不卡?
- 最全的权限系统设计方案(图解)
- 在线小说网站的设计与实现(附源码)
- CTF之misc-图片隐写
- Word产品需求文档,已经过时了
- 网传三星手机大半夜黑屏乱码,原因竟然是闰四月?
- SSM 框架原理简介及解析
- Java基础知识提炼与总结
- Android图片选取和剪裁头像的相关问题
- 微信小程序直播卖货模式怎么开启
- python——常见内置函数、可迭代对象与迭代器对象
- 为什么推荐这款固定资产管理软件?
热门文章
- PaddleSeg 分割模型介绍
- 前端开发工程师 职业规划
- linux安装 openbabel pybel
- 计算机应用基础本4.1,计算机应用基础--详细介绍
- android的模拟器打不开了,解决Android模拟器打不开的问题!...
- liunx系统安装java运行环境
- 蚂蚁集团最新业绩出炉:净利润同比下降63%,连续三个季度下滑
- python中变量不直接存储值_无法存储函数的Python导致变量?
- HLS介绍 - 05 - 软件仿真
- 【Java常用工具类汇总 2,linux摄像头驱动架构