经典计算机视觉论文笔记——《ImageNet Classification with Deep Convolutional Neural Networks》
2016-06-23 19:19
651 查看
这是CNN复兴的开创之作,个人认为比Hinton老爷子Science上那篇具有更重要的实际意义。有人问CNN怎么调参,其实大部分的答案这篇论文里都能找到。深度CNN最佳启蒙之作,没有之一。
对CNN进行多项改造,可以加快收敛速度、防过拟合、多卡并行。
数据扩充方法。
调参理论和方法。
输入图像需固定大小:256*256(实际上是224*224,裁剪后)。后续MSRA提出了可变化输入大小的网络SPPNet。
图像每个像素要减去各通道均值。数值范围正则化的手段。后面数据扩充时通过PCA的颜色扰动时的均值就已经减好了。实际重要性不明,GoogleNet似乎并未采用(见caffe默认参数)。
ReLU是传统S型激活函数的改进,值域无界,即非饱和函数。作者说能够更快收敛。
多卡并行训练将立方体卷积的卷积核那一维平分两半,在这一维度上,前一层只有部分神经元与后一层的部份神经元相连(具体是哪部分和哪部分相连,网上有解读)。为多卡并行设计,如此设计没太多参考价值。
三种操作的先后顺序:ReLU-->LRN-->pooling。
卷积核和pooling核都是有重叠的。
各卷积层的卷积核数:96、256、384、384、256。
dropout操作是在最后两个全连接层。
随机裁剪224*224就能让数据扩大2048倍。
颜色扰动用PCA有点过,直接随机扰动就行。
在传统的随机梯度下降中加入了动量和权值正则化。各参数:batchsize-128,momentum-0.9,weight decay-0.0005。
权值初始化为0均值0.01方差高斯分布。
learning rate:0.01-->0.001-->0.0001。
120万样本,跑了90轮。
少一层卷积层,准确率少2%。
多训练几个分类器进行融合。
可以用最后一层的特征进行图像检索,反映语义相似性。在最后一层特征基础上再用auto-encoder,可以进一步压缩特征。
技术概括
将浅层CNN扩展到8层的深度CNN,扩展了CNN的learning capacity。对CNN进行多项改造,可以加快收敛速度、防过拟合、多卡并行。
数据扩充方法。
调参理论和方法。
一些值得反思的细节
网络参数数量:6千万;神经元数量:65万。输入图像需固定大小:256*256(实际上是224*224,裁剪后)。后续MSRA提出了可变化输入大小的网络SPPNet。
图像每个像素要减去各通道均值。数值范围正则化的手段。后面数据扩充时通过PCA的颜色扰动时的均值就已经减好了。实际重要性不明,GoogleNet似乎并未采用(见caffe默认参数)。
ReLU是传统S型激活函数的改进,值域无界,即非饱和函数。作者说能够更快收敛。
多卡并行训练将立方体卷积的卷积核那一维平分两半,在这一维度上,前一层只有部分神经元与后一层的部份神经元相连(具体是哪部分和哪部分相连,网上有解读)。为多卡并行设计,如此设计没太多参考价值。
三种操作的先后顺序:ReLU-->LRN-->pooling。
卷积核和pooling核都是有重叠的。
各卷积层的卷积核数:96、256、384、384、256。
dropout操作是在最后两个全连接层。
随机裁剪224*224就能让数据扩大2048倍。
颜色扰动用PCA有点过,直接随机扰动就行。
在传统的随机梯度下降中加入了动量和权值正则化。各参数:batchsize-128,momentum-0.9,weight decay-0.0005。
权值初始化为0均值0.01方差高斯分布。
learning rate:0.01-->0.001-->0.0001。
120万样本,跑了90轮。
少一层卷积层,准确率少2%。
借鉴之处
实际训练的几大必杀技:数据扩充、dropout、ReLU(作者只认为能提高收敛速度)、LRN、重叠的pooling核、lr逐渐下降、几十个epoch。多训练几个分类器进行融合。
可以用最后一层的特征进行图像检索,反映语义相似性。在最后一层特征基础上再用auto-encoder,可以进一步压缩特征。
相关文章推荐
- CUDA搭建
- 稀疏自动编码器 (Sparse Autoencoder)
- 白化(Whitening):PCA vs. ZCA
- softmax回归
- 卷积神经网络初探
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
- TensorFlow人工智能入门教程之十四 自动编码机AutoEncoder 网络
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 计算机视觉领域的牛人博客和有实力的研究机构
- 安装caffe过程记录
- DIGITS的安装与使用记录
- 科研工作的关注点
- 图像识别和图像搜索
- 卷积神经网络
- 深度学习札记
- ubuntu14.04安装 资料