AlexNet
贡献:
ILSVRC2012冠军
网络结构:
8层网络,参数大约有60 million,使用了relu函数,头两个全连接层使用了0.5的dropout。使用了LRN和重叠的池化,现在LRN都不用了,一般用BN作Normalization。当时使用了多GPU训练(group training 要注意应当随机选取group)。
预处理:
先down-sample成最短边为256的图像,然后剪出中间的256x256图像,再减均值做归一化(over training set)。 训练时,做数据增强,对每张图像,随机提取出227x227以及水平镜像版本的图像。
除了数据增强,还使用了PCA对RGB像素降维的方式来缓和过拟合问题。
预测:
对每张图像提取出5张(四个角落以及中间)以及水平镜像版本,总共10张,平均10个预测作为最终预测。
(这个很好用)
超参数:
SGD,学习率0.01,batch size是128,momentum为0.9,weight decay为0.0005(论文有个权重更新公式),每当validation error不再下降时,学习率除以10。权重初始化用(0,0.01)的高斯分布,二四五卷积层和全连接层的bias初始化为1(给relu提供正值利于加速前期训练),其余bias初始化为0。
VGG
预处理:
输入图像尺寸:max512 min256,RGB均值处理:123.68,116.78,103.94
预训练处理:仍然是首先获取一个scale,scale = width < height ? small_size / width : small_size / height 其中 small_size 为 RESIZE_SIDE_MIN 到 RESIZE_SIDE_MAX 的随机数
获取scale之后就对原始图像的尺寸变换:new=old*scale,然后利用插值方法对图像进行尺寸变换
同样的有数据增强操作:
训练时候把图像左右翻转(50%),目的是避免训练过程中过拟合,学习到非需要特征;并且还丰富了数据(根本就在于训练数据的多样性)(具体就像训练识别汽车的分类器,如果所有的汽车车头朝向都是向左边,那么分类器很有可能识别不出来。
然后这里有RGB 分别减去其平均值,其中依次为 R_MEAN, G_MEAN B_MEAN,为什么这么做?考虑到一个问题就是图像标准化&归一化
标准化就是对数据进行去均值实现中心化过程
归一化就是强行让数据分布在0-1之间
标准化不会改变数据原有的分布规律(想正态分布的标准化)
但是归一化就改变数据的原有分布了(想身高体重这种单位不同的数据的)
Inception
预处理
随机crop,一般crop会有5点crop法(alexnet),或者就是这种什么都不考虑,但是如果是目标检测的数据那怎么半呢?(一般来说还是采用
resize为固定尺寸224*224
随机翻转
调整图像的亮度和饱和度