图像滤波
相关: 核与图像同向应用,不翻转。
卷积: 核在应用前翻转,广泛用于信号处理和深度学习(现在常说的二维卷积就是相关)。
内积: 向量化的点积操作,是相关和卷积的一部分。
模板匹配:通过在图像中查找与模板匹配的区域,实现目标检测和识别。如人脸检测和工业检。
图像增强:通过滤波器处理图像,提高图像质量或突出特征。如边缘检测、去噪和锐化。
特征提取:通过滤波器提取图像中的重要信息,用于后续分析和识别。如角点检测、纹理分析和CNN中的特征提取。
滤波器:
Gabor:提取纹理和方向性边缘特征
Sobel:检测水平和垂直边缘
高斯:平滑图像,减少噪声
Laplacian of Gaussian:平滑图像并检测边缘。
边缘检测
如何使用高斯偏导数在图像处理中进行边缘检测:首先对图像进行高斯滤波,水平和垂直方向平滑处理,然后计算梯度的幅值(边缘强度)和梯度方向(边缘方向)。接下来,通过非极大值抑制细化边缘,最后通过阈值处理和边缘连接来获取图像中的精细边缘。这一过程确保了边缘检测的准确性和连续性。
高斯偏导核结合了高斯平滑和微分运算的优点,在边缘检测、特征提取和图像去噪等方面有广泛应用。其核心思想是通过平滑图像减少噪声影响,然后计算图像梯度,获取图像的边缘和特征信息
在图像处理中,高斯滤波器的尺寸通常设置为 size=2×(3σ)+1,这样滤波器可以涵盖大部分高斯函数的范围,从而有效地平滑图像。差分图像c显示了两幅平滑图像之间的差异。通过比较可以发现,滤波器尺寸越大,差分越明显
Canny算子通过高斯滤波去噪、梯度计算找到潜在边缘、非极大值抑制细化边缘、双阈值检测分类边缘点、边缘连接形成连续边缘。这一系列步骤确保了边缘检测的准确性和细致性,使得Canny算子能够有效地获取“细边缘”。
拉普拉斯定理:用途清晰度检测
特征尺度
自动尺度选择的基本思想是通过构造对尺度变化敏感的函数f(多尺度都适用),计算其在多尺度上的响应,并选择响应值的局部极值点所对应的尺度作为图像特征的最佳尺度。这种方法使得在不同尺度上都能有效地检测到图像中的显著特征,从而实现多尺度特征提取。
通过计算尺度归一化拉普拉斯算子的响应,并找到其在不同尺度上的最大值,可以确定图像中特征的特征尺度。这使得特征检测在多尺度图像处理中更加准确和鲁棒。
SIFI分割
SIFT双塔结构,SIFT算法可以在不同尺度上检测图像中的关键点:高斯金字塔(这是通过对原始图像进行多次高斯模糊来构建的图像金字塔)是通过降采样得到的,所以可以大大减少后续处理中的计算量。在计算DoG金字塔时,由于每一层DoG金字塔只需要计算相邻两层高斯模糊图像的差分,而不需要重新计算高斯模糊,因此也节省了计算资源。这种金字塔结构有效地简化了SIFT算法中的尺度空间特征检测和描述子生成过程,提高了算法的效率和性能。
SIFT为确保关键点的方向不变性,SIFT通过计算图像梯度方向直方图来为每个关键点分配一个主要方向:计算图像梯度:在关键点的邻域内计算每个像素的梯度幅值和方向;创建方向直方图:在关键点邻域内(通常为16x16的邻域),对梯度方向进行统计,创建一个包含n个箱(每个箱覆盖360/n度)的方向直方图;权重投票:根据每个像素的梯度幅值对直方图进行加权投票。通常使用一个高斯权重函数,以关键点为中心,对邻域内的每个像素进行加权投票;确定主要方向:选取方向直方图中的最高峰作为关键点的主要方向。如果存在多个峰值接近主峰值的80%,也可以为该关键点分配多个方向。
SIFT描述子是基于关键点邻域的梯度信息生成的:构建描述子邻域:在关键点的邻域内划分子区域。计算梯度直方图:在每个子区域内,计算n个方向的梯度直方图。每个直方图包含n个箱。梯度方向和幅值计算:对每个子区域的每个像素点计算梯度方向和幅值,并根据方向和幅值对直方图进行加权投票。高斯加权:为每个像素点使用一个以关键点为中心的高斯权重进行加权。归一化:将向量归一化,以减小光照和对比度的影响。截断:为了增强鲁棒性,将描述子中大于某一阈值的元素截断。再次归一化:截断后再一次进行归一化,生成最终描述子。描述子可以在尺度、旋转和光照变化下具有很好的鲁棒性,有效地描述图像中的局部特征。
视觉词典
构造视觉词典:分块,根据提取特征分割;特征聚类,选择合适的聚类算法,聚类中心将成为视觉词典的词汇;每个图都可以看作是个视觉词汇,每个像素可以看作是文本
使用聚类来构造视觉词典的核心目的是通过将大量的局部特征描述符分组,生成有限数量的视觉单词,从而简化特征表示,减少数据维度,提升计算效率,并提高模型的鲁棒性和泛化能力。这一过程使得视觉词典能够有效地用于图像分类、物体识别和图像检索等任务。
神经网络
Naïve Bayesian是一种基于贝叶斯定理的概率分类算法,它假设特征之间相互独立。在实际应用中,我们通常使用朴素贝叶斯分类器进行分类,其决策规则是选择后验概率最大的。Linear classifier线性分类器是一类假设决策边界为线性函数的分类算法。常见的线性分类器包括感知机Perceptron、线性判别分析LDA和支持向量机SVM。线性分类器的目标是找到最佳的w和b,使得不同类别的样本尽可能被正确分开
K-Nearest Neighbors, KNN,K临近算法是一种基于实例的非参数分类算法。KNN通过计算新样本与训练集中所有样本的距离,选择距离最近的K个样本,然后根据这些样本的类别进行投票决定新样本的类。Naïve Bayesian分类器和线性分类器都基于决策规则来分类。Naïve Bayesian通过计算后验概率进行决策,而线性分类器通过线性函数的符号进行决策。KNN则是基于实例的决策规则,通过投票来决定新样本的类别。
交叉熵损失主要用于分类任务,特别是多类分类任务(Softmax激活函数的多类分类问题)常用于神经网络的训练,如CNN、RNN。
铰链损失主要用于二分类任务,SVM通常用于最大化分类间隔的分类问题。交叉熵损失优化目标是最小化预测分布与真实分布之间的差异,最大化正确类别的概率损失值越小,预测的概率分布越接近真实分布。铰链损失优化目标是最大化分类间隔,使得正类和负类之间的边界尽可能远。损失值越小,分类器越能够正确分类并且有较大的分类间隔。
链式法则传递倒数,方块为变量,圆点是运算符,计算图梯度反向传播
参数更新: 计算损失Loss,计算梯度,更新方向。标准梯度下降(整个训练集更新一次),随机梯度下降(每个样本更新一次),小批量梯度下降。
Small batch: 更好地利用现代硬件的并行计算能力,减少内存需求;更快的参数更新和增强的噪声泛化能力;避免重复计算,提高计算效率;动态调整学习率,更灵活的学习率调度策略;更频繁的模型性能评估和更快的超参数调优;更平滑的损失曲线,避免大幅度波动;通过调整采样策略,改善不均衡数据的训练效果,灵活处理不均匀数据。
神经网络隐藏层的主要作用是通过非线性变换增强模型的表示能力,使其能够捕捉和表示复杂的非线性关系。线性学习模型只能处理线性关系,而神经网络通过引入隐藏层和非线性激活函数,能够处理复杂的模式识别和预测任务。通过多层隐藏层的设计,神经网络可以逐层提取特征,学习复杂的决策边界,从而实现对复杂数据的高效建模和预测。
Sigmoid激活函数容易引发梯度消失问题,主要是由于其梯度在输入远离0时非常小。这个问题在深层神经网络中尤为严重,导致训练过程中梯度逐层衰减,使得模型难以学习和优化。通过使用替代激活函数、合适的权重初始化方法和归一化技术,可以有效缓解梯度消失问题。
卷积网络
感受野: 神经元的感受野在卷积计算中扮演了类似于生物视觉系统中感知局部图像的角色。通过分层次地扩大感受野,CNN能够逐步整合局部特征,形成对全局图像的理解。神经计算中,感受野的局部性允许并行处理图像的不同区域,大大提高了计算效率。权值共享: 在神经计算中,权值共享机制类似于生物视觉系统中神经元的重复性和一致性。在CNN中,卷积核在整个图像上共享权重,模拟了生物神经元在不同位置提取相同类型特征的过程。权值共享减少了模型的参数数量,降低了计算复杂度,同时保持了特征提取的一致性和可靠性。
小尺寸滤波的好处: 增强特征提取能力:更细致地捕捉局部特征;减少参数量:降低模型复杂度和过拟合风险;计算效率:减少计算量,加速训练和推理;更深的网络结构:构建更深的网络,提取更丰富的特征;增加非线性:引入更多非线性,提高模型学习复杂映射的能力。
1x1卷积: 特征通道的组合:跨通道信息融合和特征映射的重新加权;维度变换:实现特征图的降维和升维;计算效率的提升:在深度可分离卷积中大幅减少参数量和计算量;改善网络结构和性能:提供灵活的维度变换和特征组合方式,减少参数量,提高训练效率和模型推广能力。
卷积计算:Input volume: 32x32x3 :10 5x5 filters with stride 1, pad 2 Output: (32+2*2-5)/1+1 = 32 spatially, so 32x32x10 Params: 5*5*3 + 1 = 76 parameters => 76*10 = 760
数据增广在CNN中的意义: 增加训练数据的多样性:缓解过拟合,丰富特征空间;提高模型的鲁棒性:应对输入变换,减少对噪声的敏感性;提升模型的泛化能力:模拟现实世界的多样性,增强特征学习;减少对大规模数据的依赖:在数据稀缺时生成更多的训练样本;通过数据增广,CNN模型能够更好地学习和理解复杂的图像数据,提高在实际应用中的表现。
Dropout提升CNN: Dropout通过在训练过程中随机“丢弃”部分神经元及其连接,防止模型过拟合,减少神经元之间的共适应性,模拟集成学习,并增加训练的随机性,从而显著提升了卷积神经网络的预测精度。
Momentum的作用: Momentum 通过在梯度下降过程中引入动量项,有助于加速收敛、减少振荡、帮助跳出局部最优解,从而显著提升了神经网络训练的效率和效果。通过使用 Momentum,优化算法能够更快、更稳定地找到损失函数的全局最优解,从而提高模型的性能和预测精度。
CNN改造
残差模块(Residual Block)设计思想: 跳跃连接(Skip Connection):直接将输入通过跳跃连接传递到输出,跳过中间的卷积层;解决梯度消失问题:通过引入跳跃连接,使梯度可以直接从后层传递到前层,缓解梯度消失问题;恒等映射(Identity Mapping):使网络更容易学习恒等映射,从而使深层网络的训练更加稳定和高效;更深的网络:允许构建更深的网络层数,提高特征提取能力和模型表现;残差模块通过这些设计使得深度神经网络能够更有效地进行训练,提升模型性能。
RPN: 全卷积网络:RPN是一个全卷积网络,直接在特征图上滑动窗口生成候选区域(proposals);锚点机制:在每个滑动窗口位置生成一组固定尺寸和比例的锚点(anchors),这些锚点作为候选区域的初始猜测;两类输出:每个锚点输出两个值;前景/背景分类:判定锚点是否属于前景(物体)或背景;边界框回归:调整锚点以更好地拟合真实物体的边界框;共享卷积层:RPN与目标检测网络(如Fast R-CNN)共享卷积层,减少重复计算,提高效率;端到端训练:RPN与目标检测网络联合训练,实现端到端优化,提高候选区域生成的精度和速度。
RPN(Region Proposal Network)设计思路是通过一个卷积神经网络生成特征图,并在每个特征图位置生成一组不同尺度和宽高比的锚点。然后,使用1x1卷积层对这些锚点进行二分类(前景/背景)和回归调整(位置和尺寸),以生成候选区域。最后,通过非极大值抑制去除冗余区域,生成高质量的候选区域。这一过程与目标检测网络共享特征图,实现了高效的端到端训练和检测。
R-CNN到Fast R-CNN: R-CNN(训练慢:需要分阶段训练,首先训练CNN,然后在提取的特征上训练SVM;检测慢:要划分很多个框resize像素再每个框进行CNN前向传播,速度慢;存储需求高:需要大量磁盘空间存储每个候选区域的特征)Fast R-CNN(单阶段训练:用多任务损失函数联合训练分类和回归任务;只做一次卷积特征提取,ROI池化不按照像素而是按照区域,避免了重复计算,提高了速度和效率;端到端训练:整个网络可以端到端训练,包括候选区域生成、特征提取、分类和回归,简化了训练流程。)
全卷积网络(FCN): 存在特征分辨率降低、感受野过大、边缘效应、计算量大、梯度消失、特征融合不充分和数据依赖性强等问题。为应对这些挑战,可采取反卷积、空洞卷积、跳跃连接、特征金字塔、数据增强和迁移学习等方法进行改进。
去除重叠框思路:非极大值抑制(Non-Maximum Suppression, NMS)去除重叠框。步骤如下:排序:按照预测的置信度(confidence score)对所有候选框进行排序,从高到低;选择最高分框:选择置信度最高的框作为基准框,保留这个框,并将其加入最终的输出列表;计算重叠区域:计算基准框与其他候选框的重叠面积,通常使用交并比(IoU, Intersection over Union)作为衡量标准;抑制重叠框:对于所有与基准框的IoU超过预设阈值的候选框,将其从候选框列表中移除,表示这些框被抑制,因为它们与基准框重叠过多;重复:从剩余的候选框中重复步骤2-4,直到所有框都处理完毕。
AP计算的是折线图包围住的面积:P1/1,R1/3->P2/2,R2/3->P2/3,R2/3->2/4,R2/3->P3/5,R3/3