图像分类是视觉领域的核心问题(基础问题)之一:已有一些有标签的多类图片数据集,输入图片给出分类标签。

训练模型最终的目的是得到一个泛化能力强,测试集准确率高的模型,而不是说训练时拟合效果最好,但验证集和测试集变差。

实际应用中我们需要是测试的时候快速高效,训练的时候慢一点无所谓。(CNN恰好满足这一点)

验证集是为了选出一个最好的算法模型,测试集是为检验模型的泛化能力。

数据驱动(已经有很多有标签的图片),机器对于图片有语义鸿沟

线性分类:首先将图片拉伸成向量,损失函数就是像素的欧几里得范数。

损失函数的意义在于量化不同错误分类到底有多坏。

 

SVM对应折页损失函数(有一个安全边界)

softmax:得到score function值→exp(指数化处理)→归一化处理得到P→取负对数-log(P)对应分类的概率分布。(交叉熵?)

解析法求梯度(导数)更新训练网络,用数值梯度(差分)去check网络正确与否。

无补0时,卷积后输出维度:(N-F)/stride  +1 ;N:输入维度,F滤波器维度,stride滑动步长

补0:pad with p pixel(指的是像素各边界加p层0):之后输出层维度变为(2p+N-F)/stride  +1

为何填充:填充后可保证输出图片的尺寸与输入一致,而且边角也可以卷积处理到,尽可能多的 保留信息。

输出层的深度等于滤波器的深度(层数)相关。

输入的图片如何作为输入变量与神经网络连接:输入图片不管是几通道的统统拉伸成一维向量(向量是一列),然后直接作为x.

关于参数数目计算:输入32*32*3,滤波器10, 5*5*3,则参数为(5*5*3+1)*10,1是偏置变量。

一般来说NN结构是卷积-Relu非线性激活层-卷积-Relu非线性激活层(重复n次)+一个pooling层,如此重复,最后加上数个全连接层。池化不能太多次,会失去一些信息。

训练模型时,真正的变量(参数)是权重(包括偏置),梯度下降法前向得到损失函数和预测值,反向得到梯度dL/dw.

 

图像分类架构(最实用):Alexnet(配合模型集成),googlenet。(resnet-残差网络:错误率最低。,但是计算等要求高)

定位:在分类的基础上画出包括目标的框。(加一个输出(x,y,w,h))。定位较好的实现方法有 faster-Rcnn,  yolo,  SSD.

leaky ReLU: f(x)=max(0.01x , x ) 优点:无饱和(梯度消失区),计算高效(线性),收敛快,无死区(梯度消失导致某些神经元无法继续训练参数)

P-ReLU(parametric ...): f(x)=max(CS231n_激活函数x , x ),CS231n_激活函数作为训练参数。

ELU:f(x)=x,if x>0 ; f(x)= CS231n_激活函数CS231n_激活函数_04-1).

激活函数以0为中心优点:输出均值为0,有类似归一化的效果。

激活函数的选择:

       优先ReLU(要注意调学习率)

       其次 leaky ReLU / ELU. (Rectified linear unit 矫正线性单元,Exponential linear unit指数线性单元)

       对tanh不要期待太好

      不用sigmoid。

 

Alexnet:krizhevsky,2012    ※※※※

googlenet: szegedy,2014     ※※※※

resnet: identity mapping in deep residual networks ,He,2016   ※※※

Xavier initialization,Glort,2010

VGG16:simonyan and zisserman,2014

mask -RCNN:图像分割,物体识别,姿势估计。※※※※

 

csdn上搜论文详解!!!