李理:Caffe训练ImageNet简介及深度卷积网络最新技术

本文介绍了如何使用Caffe框架在ImageNet上训练AlexNet模型,详细阐述了ILSVRC2012数据集、Caffe的基本操作、数据预处理、模型训练和ResNet、Inception结构。通过实例展示了深度学习在计算机视觉领域的应用,适合深度学习开发者参考。
摘要由CSDN通过智能技术生成

本系列文章面向深度学习研发者,希望通过Image Caption Generation,一个有意思的具体任务,深入浅出地介绍深度学习的知识。本系列文章涉及到很多深度学习流行的模型,如CNN,RNN/LSTM,Attention等。本文为第13篇。

作者:李理
目前就职于环信,即时通讯云平台和全媒体智能客服平台,在环信从事智能客服和智能机器人相关工作,致力于用深度学习来提高智能机器人的性能。

相关文章:
李理:从Image Caption Generation理解深度学习(part I)
李理:从Image Caption Generation理解深度学习(part II)
李理:从Image Caption Generation理解深度学习(part III)
李理:自动梯度求解 反向传播算法的另外一种视角
李理:自动梯度求解——cs231n的notes
李理:自动梯度求解——使用自动求导实现多层神经网络
李理:详解卷积神经网络
李理:Theano tutorial和卷积神经网络的Theano实现 Part1
李理:Theano tutorial和卷积神经网络的Theano实现 Part2
李理:卷积神经网络之Batch Normalization的原理及实现
李理:卷积神经网络之Dropout
李理:三层卷积网络和vgg的实现

6. 使用caffe在imagnet上训练AlexNet

接下来我们介绍一下怎么用caffe训练ILSVRC2012。我们之前为了让大家理解卷积神经网络的细节原理,所以都是自己实现。但是在实际工作中,我们更倾向于使用成熟的框架来进行深度学习。caffe是一个老牌的深度学习框架,尤其是在计算机视觉领域很受欢迎。我们这里会简单的介绍一下怎么使用caffe训练ILSVRC2012,包括怎么用pycaffe使用训练好的模型,这在后面的Image Caption里会用到。

6.1 ILSVRC2012和ImageNet介绍

我们之前也多次提到这两个词,有时也不加区分的使用它们。这里我们稍微澄清一下它们的关系和区别。

首先ImangeNet是Stanford视觉实验室标注的一个图像数据库,有上万个分类和上千万的图片。截止到本文发表,最新的数据是“14,197,122 images, 21841 synsets indexed”。我们这个系列教程中多次涉及的课程cs231n就是stanford视觉实验室李飞飞教授开设的课程。

为了让学术界有个公开标准的图像分类【也包括Location】,Stanford视觉实验室从2010年开始就开始 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) ,翻译成中文就是ImageNet大规模视觉竞赛。在2012年之前,最好的top5分类错误率在20%以上,而2012年AlexNet首次在比赛中使用了深层的卷积网络,取得了16%的错误率,一时让深度学习名声大噪。之后每年都有新的好成绩出现,2014年是GoogLeNet和VGG,而2015年是ResNet參差网络。目前最好系统的top5分类错误率在5%一下了。

ILSVRC2012是2012年的比赛数据,是最流行的一个大规模分类数据,它包含1000个分类和100,000+训练数据。

6.2 caffe简介

caffe是berkeley视觉实验室开源的一个流行深度学习框架,更多细节读者可以参考一些官网资料。因为本文的目的也不是介绍各种工具,为了避免文字过于冗长,就不仔细介绍了,下面介绍训练步骤时简要的做一些解释。读者有了自己实现CNN的基础,理解怎么使用caffe应该不会太难。安装【包括cuda的支持】请参考官网,建议读者用Ubuntu的系统,安装比较简单,记得安装python的支持。

6.3 获取ILSVRC2012数据

最开始下载ILSVRC2012需要注册才能获得下载地址,现在已经完全开放,如果读者想训练ILSVRC2012,建议使用GPU,否则就得等几个月。另外机器要有比较大的硬盘空间来存放原始的数据【100多G】。

如果读者不打算自己训练,也不影响,因为网上有很多训练好的模型,我们可以直接拿过来用,因此可以跳过本节。

下载地址:http://www.image-net.org/challenges/LSVRC/2012/nonpub-downloads

这个比赛包括分类和定位,由于我们只做分类,所以只需要下载

  1. Training images (Task 1 & 2) 138GB. MD5: 1d675b47d978889d74fa0da5fadfb00e
  2. Validation images (all tasks) 6.3GB. MD5: 29b22e2961454d5413ddabcf34fc5622
  3. Test images (all tasks) 13GB. MD5: fe64ceb247e473635708aed23ab6d839
  4. Training bounding box annotations (Task 1 & 2 only)
  5. Validation bounding box annotations (all tasks)

数据比较大,可能要下载一两天,用wget可以用-c选项支持断点续传。建议北京时间白天下载,对于美国来说是晚上,速度较快,最快可以到1MB/s。下载完了记得用md5检验一下

下载完了解就行了。

训练数据是这样的目录结果:/path/to/imagenet/train/n01440764/n01440764_10026.JPEG

其中n01440764就是代表一个类别,读者可以选择一些图片看看。

测试数据是:/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG

6.4 数据预处理

1. 辅助数据下载

首先要下载一下辅助的数据,进入caffe的根目录执行
$./data/ilsvrc12/get_ilsvrc_aux.sh

这个脚本会下载一些数据到data/ilsvrc12。包括train.txt val.txt和test.txt,这些文件包含图片路径【相对路径】和分类的对应关系

2. 缩放图片

由于图片的大小不一样,我们一般需要预先缩放图片。另外caffe使用leveldb来存储图片【为了统一管理和queue处理,上百G的图片不可能想mnist数据那样直接放到内存,我们只能把要训练的部分数据放到内存里,为了提供效率,那么需要队列这样的集中来prefetch图片到内存】,这都统一在脚本examples/imagenet/create_imagenet.sh里了。

我们需要修改一下这个脚本,主要是imagenet图片的位置,输出的目录。下面是我的配置,请参考后修改

EXAMPLE&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值