赞
踩
ImageNet数据集作为图像分类最经典的公开数据集,对深度学习发展起到了很大的贡献,基本经典的网络模型都会在ImageNet上训练对比。这里使用ILSVRC2012数据集从头训练一个resnet18模型。
因为条件有限,使用自己的RTX2060s单卡训练。。。比起Inception系列动不动就几十块GPU,真的是心酸。
关于多卡的训练,推荐大家阅读论文accurate ,large minibatch SGD:Training ImageNet in 1 Hour。
论文提到了一些调参的技巧很有意义,包括batch size和lr的一些关系,提出常用的warm up进行前期训练。
这里我用单卡训练了5天时间,获得了一个还不错的结果:
Single-crop (224x224) validation error rate
Network | Top-1 error | Top-5 error |
---|---|---|
KaimingHe | / | / |
FAIR | 30.43 | 10.76 |
our | 30.8625 | 11.6625 |
原作者KaimingHe的resnet实现:https://github.com/KaimingHe/deep-residual-networks
Facebook AI Research (FAIR):https://github.com/facebookarchive/fb.resnet.torch
我训练的Top-1比facebook的低了0.43%,可能是因为数据增强或者迭代次数原因吧,这里我整个数据仅仅迭代了60epoch,数据增强仅仅用了随机裁剪和水平翻转。
下载的文件主要包括以下几个文件:
ILSVRC2012_img_train.tar ILSVRC2012_img_val.tar ILSVRC2012_img_test.tar ILSVRC2012_devkit_t12.gz
前三个为图像压缩包,分别对应train / val / test三个子集。最后一个为数据说明相关文档。
训练集包含1,282,167张图片,1000类,147 GB;
测试集包含了50,000张图片,6.7 GB;
测试集包含了100,000张图片,13.6 GB;
ImageNet还提供了一个开发工具包ILSVRC2012_devkit_t12.tar.gz,是对ILSVRC2012数据集的详细讲解,提交比赛结果的要求,和对结果评价的代码。
LSVRC2012_img_train.tar解压后是1000个tar文件,每个tar文件表示1000个分类中的一个类。需要对这1000个tar文件再次解压。在train目录下执行unzip.sh文件,最后得到1000个文件夹。每个文件夹中是该类的图片。ILSVRC2012_img_val.tar解压后的文件夹包含了所有的验证集图片。
我是从网上别人提供的百度网盘下载的。
主要进行了两种不同的选择,第一种是图片resize到256×256,第二种是保持比例短边resize到256,一般论文都是用的第二种,实际训练发现第二种比第一种Top-1高3%左右,因为ImageNet数据集比较大,任何细微的变化都会有明显的差距,比如优化方式的选择、lr的变化方式、数据增强等等。
这里我用caffe自带的将数据转为LMDB进行训练,训练的时候随机从256×N的图片截取224*224,随机翻转用于训练。
训练过程如图
我的batch size设置的64,红色和紫色分别是验证集Top-1和Top-5变化,下面的是training和val的loss变化。
目前在尝试更多的数据增强的效果,对resnet18加入SE block进行对比。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。