基本题型:
题型:选择、填空、简答、分析
绝大多数内容参考自PPT
基本了解内容:每个过程都有些啥
图像表示:二进制图像、灰度图像、彩色图像。(将矩阵转为列向量)3072维
分类模型:
线性分类模型。是神经网络和支持向量机的基础。。
线性分类模型是一种线性映射,将输入的图像特征映射成类别分数。
决策规则:f_i(x)>f_j(x),对任意的j!=i。
线性分类器的矩阵表示:
线性分类器的权值:可以看成模板、输入图像与评估模板的匹配程度越高,分类器输出的分数就越高。
线性分类器的决策边界:W控制着线的方向,b控制线的偏移,箭头方向表示分类器的正方向。沿着箭头方向距离决策面越远分 数就越高
损失函数:是一个函数,用于度量给定的分类器的预测值和真实值的不一致程度,其输出通常是一个非负值。其输出的非负值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
损失函数的一般定义:
多类支撑向量机损失:
正则项与超参数:R(w)是一个与权值有关,跟图像数据无关的函数。
优化算法:参数优化是机器学习的核心步骤之一,它利用损失函数的输出值作为反馈信号来调整分类器参数,以提升 分类器对训练样本的预测性能。
基本优化目标:
优化方法:梯度下降算法、随机梯度下降算法及小批量梯度下降算法。
梯度下降算法:往负梯度方向走,走多远由步长决定。
梯度计算方法:
梯度下降算法计算效率:利用所有样本计算损失并更新梯度,当N很大时,权值梯度计算量很大。
随机梯度下降算法:每次随机选择一个样本计算损失更新梯度,单个样本的训练可能会带来很多噪声,不是每次迭代都向着整体最优化方向。。
小批量随机梯度下降:
三种方法伪代码:
训练过程:
数据划分:
K折交叉验证:
数据预处理:
了解每个过程有啥:
图像表示:展成列向量
分类模型:
全连接神经网络:全连接神经网络级联多个变换来实现输入到输出的映射。非线性操作是不可以去掉。去掉后相当于还是线性分类模型。
全连接神经网络的权值:
激活函数:
损失函数:
Softmax函数(激活函数):Softmax函数和交叉熵经常一起使用,它是一个具有任意实数值的K维向量压缩到范围在0~1之间的K维向量,使得向量中的每个元素表示对应的类别的概率。
交叉熵损失:衡量两个分布之间的差异性的损失函数。常用于分类问题。
计算图:
再看激活函数:
Sigmoid激活函数:
Tanh激活函数:
TeLU激活函数:
Leakly ReLU激活函数:
梯度爆炸:
激活函数选择:
梯度算法的改进:
梯度算法存在的问题:
动量法:
自适应梯度法:
Adam优化器:
训练过程:
权值初始化:
全零初始化:
随机初始化:
Xavier初始化:(每层神经元激活值的方差基本相同!)不太适合ReLU激活函数
He初始化:
批归一化:直接对神经元的输出进行批归一化,如果每一层的每个神经元进行批归一化,就能解决前向传 递过程中的信号消失问题。经常插入到全连接层后,非线性激活前。
过拟合现象:
神经网络中的超参数:
卷积:可以实现:图像的平移、平滑、锐化
平均卷积核与高斯卷积核:
图像噪声与中值滤波器:
噪声:
中值滤波器:
去噪:
边缘提取:
奇葩噪声:可以先平滑后再高斯一阶偏导。
高斯偏导一阶卷积核方差变化:
Canny边缘检测器:
非极大值抑制:
Canny边缘检测器:
卷积神经网络:
基于卷积核组的图像表示:
卷积网络中的卷积操作:特征响应图深度等于卷积核个数。
池化操作:(没有参数)
图像增强方法:图像翻转、随机缩放、色彩抖动、平移、旋转、拉伸。
Alexnet主体贡献:
Alexnet网络结构:
MaxPOOL作用:降低特征图尺寸,对抗轻微的目标偏移带来的影响。步长为2作用:重叠有助于对抗过拟合
局部响应归一化层作用(NORM):
FC6之前会进行拉平操作:变成9216*1的列向量。
Alexnet运用的重要技巧:
VGG网络基本结构:
问题一:VGG用了多个小卷积核作用:
答:1.多个小尺寸卷积核串联可以得到与大尺寸卷积核相同的感受野;2.使用小卷积核串联构建的网络深度更深、非线性更强、参数也更少。
问题二:为什么VGG网络前四段里,每经过一次池化操作,卷积核个数就增加一倍?
答:1.池化操作可以减小特征图尺寸,降低显存占用。2.增加卷积核个数有助于学习更多的结构特征,但会增加网络参数数量以及内存消耗。3.一减一增的设计平衡了识别精度与存储、计算开销。4.最终提升了网络性能!
问题3:为什么卷积核个数增加到512后就不再增加了?
答:1.第一个全连接层含102M参数,占总参数个数的74%;2. 这一层的参数个数是特征图的尺寸与个数的乘积; 3. 参数过多容易过拟合,且不易被训练。
Googlenet网络结构:(网络的输入做了去均值处理,RGB三通道)
串联结构(如VGG)存在的问题:后面的卷积层只能处理 前层输出的特征图;前层因某些原因(比如感受野限制) 丢失重要信息,后层无法找回。
Inception模块:
网络的后面几层:
Googlenet的辅助分类输出层
平均池化向量化与直接展开向量化有什么区别?
Googlenet的1*1卷积会损失信息吗?(通常不会)
一个思考:
残差模块:
其他关键点:
问题:为什么残差网络性能这么好?
总结:
视觉识别基本任务:
语义分割任务
方法1:反池化
反池化操作:近邻法、0填充、原始位置映射。
方法2:反卷积(转置卷积)
例子:
目标检测:
单目标检测:多任务损失两个损失(分类:交叉熵损失、回归:均方误差MSE)
框架图:
多目标检测:难点:多少个目标,要画多少个框?
困境:CNN需要对图像中所有可能的区域(不同 位置、尺寸、长宽比)进行分类,计算量巨大。
生成区域狂方法:区域建议(Selective Search):可以快速生成2000个候选区
方法1:R-CNN
第一步:利用区域建议方法生成2000个感兴趣的区域
第二步:对区域进行缩放(224*224)
第三步:将图像区域送入卷积神经网络进行特征提取
第四步:使用支持向量机对区域进行分类
存在的问题:计算效率低,每一张图大于2000个区域需要卷积神经网络进行特征提取,重复区域反复计算。
方法2:Fast R-CNN
第一步:利用卷积神经网络对全图提取特征。(可以使用:Alexnet、VGG、Resnet等等)
第二步:利用区域建议方法产生2000个候选区域框。
第三步:对前面产生的区域框进行裁剪核特征缩放。
第四步:新特征图放入全连接层进行分类和回归。
需要注意的点:
区域裁剪:Rol Pool
第一步:投影:将候选区域投影到特征图上。
第二步:规整:将区域顶点规整到网格交点上。
第三步:分割:将候选区域划分为固定大小的子区域。
第四步:池化:对每个子区域进行池化操作(最大池化)
第五步:尺寸统一:将所有子区域提取的特征进行尺寸统一。
存在的问题:处理后的区域特征会有轻微的对不齐!也就是还是存在一定的精度偏差。
区域裁剪:Rol Align(前面方法的改进版):是一种改进的区域裁剪方法,旨在解决 RoI Pooling 存在的精度损失问题。在目标检测和区域分类任务中,RoI Pooling 的精度损失主要源于两个方面:像素级别的空间错位和信息损失。(不进行规则操作)
Fast R-CNN存在的问题:候选区域产生过程耗时过高,几乎等于单张图片的检测时间。
方法3:Faster R-CNN:
基本框架图:
第一步:特征提取:输入图像经过卷积神经网络进行特征提取。(可以使用VGG,Resnet等等)
第二步:候选区域的生成:使用区域建议(Region Proposal Network)在特征图上生成候选区域。PRN利用特征图上的滑动窗口和锚框提出可能包含目标的候选区域。
第三步:区域裁剪与特征对齐:对每个候选框,使用Rol Align或Rol Pooling从特征图上提取固定大小的特征。
第四步:分类和回归:对提取的特征进行分类和边界框回归。
区域建议(Region Proposal Network)是用于目标检测的神经网络组件,通常与 Faster R-CNN 结构一起使用。它的主要功能是在输入图像的特征图上生成可能包含目标的候选区域。基本框架:
Faster R-CNN最终框架:
两阶段图示:
新问题:是否必须采用两个阶段范式完成目标检测?
方法4:一阶段目标检测:YOLO/SSD/RetinaNet:
实例分割:
经典网络:Mask R-CNN:
Faster R-CNN的终极形态:Mask R-CNN (应该不考这个)
基本步骤:
有监督模型与无监督模型对比:
生成模型:给定训练集,产生与训练集同分布的新样本。
三种典型的生成模型:
PixelRNN与PixelCNN
基本思路:
PixelRNN:
PixelCNN:
优缺点:
Variational Autoencoders(VAE)变分自编码器
自编码器:无监督的特征学习,其目标是利用无标签数据找到一个有效地低维的特征提取器。
VAE变分自编码器:
相较于自编码器的改进:VAE引入了潜在的空间连续性,这使得其在潜在空间中进行插值和采样变得可能,允许通过线性或非线性插值在空间中生成新的,具有连续变化的样本。即前面说的半圆月。
基本框架图:
基本原理
问题:如果只有重构误差会如何?答:如果只考虑自编码器的重构误差而不考虑潜在空间的连续性和分布性质,会导致模型可能仅仅学习到对训练数据进行简单的复制,而没有学习到有意义的潜在表示。
变分自编码器存在的问题:没有真的在尝试模仿真实的图片,貌似记住的存在的图片。
变分自编码器(VAE)总结:
总结一句话:不如GANs
Generative Adversarial Networks(GAN)生成对抗网络:
问题:希望从训练样本分布中采样新数据,但这个分布不仅维度高而且还很复杂,难以直接实现。
解决方案: 对一个简单的分布采样,比如均匀分布;然后,学习一种映射将其变换到训练样本分布
用什么方法实现这个复杂的映射:神经网络!
输入:随机噪声;输出:采样自训练样本分布的图片。
基本形式:
两个玩家的游戏:生成器和对抗器
Minmax训练方式解释:
先训练判别器?d,最大化目标函数,使D(x)接近1(真实样本),而D(G(z))接近于0(假2样本)。旨在最大化判别器对真实样本和生成样本的辨别能力
再训练生成器?g,最小化目标函数,使得D(G(z))尽量接近1,即希望判别器认为生成器产生的图像G(z)为真实图片。
训练结束:如果生成的图片已经足够逼真和多样可以停止,判别器精度达到某个阈值,损失值收敛等等。
Minmax训练方式的弊端:生成样本非常糟糕时,判别器输出值都会很小,生成器损失函数梯度很小,使得生成器学习很慢,相反,当生成样本比较好时,判别器输出值都会比较大,生成器损失函数在此处的梯度很大,生成器更新较大。
解决方法:将生成器训练目标函数转化为最大化情况,上面的情况就可以对调过来,即:生成样本很糟糕时,生成器损失梯度高,加快生成器学习,当样本比较好时,生成器梯度低,生成器更新较小,逐渐收敛。如下图:
总结:
卷积生成对抗网络DCGAN:
GAN优化问题:
分布不重叠时JS散度固定值log2会导致GAN训练出现下面问题:
D判别器过于强大:
JS散度问题解决方法:
基于Wasserstein的GAN即使两个分布没有重合(这事经常发生),也能准确的衡量分布的差异。
条件GAN: