如需电子版请点击:2024年bjtu计算机视觉课程必考知识点汇总资源-CSDN文库
1、简述图像滤波(Image Filtering)的三种定义方式:相关、卷积、内积
相关:模版覆盖区域内,元素逐一相乘然后累加,此时的对应位置就是上下投影后被覆盖的位置
卷积:将同样的模版按照中心对称后,再做"相关"操作。
内积:将矩阵进行行扫描或列扫描形成向量,两个向量进行逐元素相乘,然后将相乘的结果相加得到一个标量的操作。
2、简述图像滤波的三种用途:模板匹配、图像增强、特征提取;举例说明每类用途
1)模板匹配:
使用一个目标原型,根据它创建一个模板(即人为定义一个滤波器),将其与测试图像做卷积,得到的结果越大越匹配。可以用来进行手势识别。
2)图像增强:
图像增强是一种通过对图像进行调整和处理,以符合人类审美观点的方法。其包括图像平滑和图像锐化。图像平滑中使用高斯核去除图像中的噪点,从而使图片看起来更加清晰和美观;图像锐化中使用拉普拉斯算子/梯度算子来增强图像中的边缘和细节,从而提高图像的清晰度和对比度。在美颜相机中图像平滑可以消除照片中的瑕疵、皱纹和其他不完美的细节,图像增强可以增加对比度、增强色彩饱和度以及调整亮度和色调。
3)特征提取:
将图像中的一些重要的视觉线索(特征)提取出来,以便进一步的分析和处理。这些视觉线索可以根据特定的需求和应用来进行自定义选择。在Canny边缘检测中,视觉线索即为图像中的边缘,使用高斯偏导核。在边缘检测中也常使用拉普拉斯算子进行特征提取。除此之外还有Harris角点检测、SIFT特征检测等。
3、解释在kernel的size不同σ相同情况下得到结果类似的原因;如何设置高斯核的参数
高斯核服从正态分布,其满足3σ原则。从数学视角看,高斯核对图像进行平滑操作本质上是求某一范围内的定积分,在设计高斯核时一般其大小为6σ,用其求得出的定积分结果已经趋于稳定,因此当高斯核增大一倍时,定积分结果的增加并不会十分显著,因此图像b中kernel size在增大一倍后仍然呈现出与图a相似的效果。
滤波器核width=2*(3*σ)--σ表示方差
4、简述高斯偏导核的用途和设计原理
高斯偏导核实现去噪并边缘提取。
高斯偏导核 = 高斯核去噪声 + 梯度算子提取边缘
设计原理:可以将两个步骤合并成一个步骤,先对图像进行高斯滤波,然后再对滤波后的图像进行卷积操作。该操作相当于原先先对图像进行平滑处理,然后在平滑后的图像上计算梯度。该方法减少了计算的复杂度,提高了算法的效率。
5、简述Canny算子如何获取“细边缘”
使用非极大值抑制方法。遍历图像中所有的像素点,将每一个像素点与其梯度方向上相邻的两个点进行梯度值比较,如果该像素点的梯度值最大,则保留,否则丢弃。若临近2个像素点不在该像素点的梯度方向上,则有两种解决办法。
方法一:角度量化。在数字图像中梯度方向共有4个:0,45,90,135。因此将其梯度方向近似为距离以上4个值中最近的一个方向。
方法二:线性差值。
6、简述Canny算子的“双阈值”设计思路
使用"双阈值"来消除弱边缘和强噪声对算法的影响。设置一个最小阈值minVal和一个最大阈值maxVal,阈值通过梯度图像幅值(像素的灰度值)得到。当梯度值>maxVal则处理成边界;梯度值<minVal则舍弃;而在中间不知道是弱边or 强噪,所以需判断。两者之间连有边则判定为弱边保留,否则为强噪舍弃。
7、简述滤波器组(Filter Bank)的包括哪些滤波器,其作用是什么?
高斯滤波器:图像处理中进行图像平滑;计算机视觉中提取斑点特征;数学视角下对图像求积分
LoG:图像处理中进行图像锐化;计算机视觉中提取斑点特征;数学视角下对先使用高斯平滑操作再对高斯求二阶偏导
高斯偏导核,高斯二阶偏导核:图像处理中进行边缘检测;计算机视觉中提取边和条特征;数学视角下对先对高斯求一/二阶偏导再卷积
8、简述Harris算子的数学原理
利用局部窗口在图像上移动,计算因窗口移动(u,v)引起的灰度值变化值的平方求和。定义E(u,v)为水平垂直方向移动时的变化量,当这个变化量最大时,认为检测到了角点。通过泰勒展开可以将(x,y)与(u,v)解耦,得到二次型矩阵 M,通过 M的特征值来判断是否存在角点λ1和λ2同时很大时存在角点)。且 M的特点是行列式等于特征值之积,trace 等于特征值之和。即当R>0且很大时,为角点;当R<0时为边;|R|特别小时为平面。
9、简述自动尺度选择的基本思想(提示:需要什么样的函数f)
创建尺度空间,其由一系列从小到大的窗口构成的,这些窗口逐渐覆盖图像中不同尺度的区域,从而可以进行特征尺度σ选择。若函数f(x,y,σ)在某个尺度σ上达到了局部极大值,则将该尺度σ与窗口大小建立联系。
10、简述特征尺度的物理意义(提示:考虑信号与滤波器的关系)
函数f(x,y,σ)使用LoG实现。用不同尺度σ的LoG与信号做卷积,卷积大小可以定义为信号的最高点与 LoG图像围成区域的面积。当信号图像最高点刚好与LoG图像中的零交叉点重合时,此时内积达到了最大值,即说明该函数达到了局部最大值。
11、简述SIFT算子"双塔”结构含义解释该结构如何简化计算?
人类视觉具有近大远小、近清晰远模糊的特征。根据这一特征设计出高斯金字塔结构。在SIFT算法中,通过使用不同大小的高斯核(从小到大)对原始图像(从近到远)进行不同程度的平滑处理,然后将这些不同程度的平滑图像堆叠起来,构成了高斯金字塔结构。创建好图像高斯金字塔后,每一组内的相邻层相减可以得到高斯差分金字塔,用其来检测图像极值点。
四处简化计算:
1、在高斯金字塔结构中,大尺度的平滑图像可通过对该图像进行两次小尺度的高斯平滑操作得到。即kσ尺度卷积结果可以由σ尺度卷积后的结果再使用((kσ)^2-σ^2)^(1/2)卷积得到。
2、在跨组时,为避免使用大尺度高斯核,可将图像缩小,使用小尺度的高斯核与图像进行卷积操作。
3、Octave2中2σ层可由Octave1中倒数第三层卷积结果下采样1倍得到。
4、使用DoG代替LoG。高斯金字塔中相邻两层做减法得到高斯差分金字塔,在高斯差分金字塔中,每一片就相当于一个拉普拉斯核对图像的卷积结果。相对于卷积运算,减法运算效率更高。
12、简述SIFT如何为每个关键点确定方向提示:投票细节
找到关键点后,以关键点为圆心,1.5σ为半径画圆,该圆形区域反映了不同点的权重特征。通过该圆确定一个正方形区域,对于正方形区域中的每个像素点,计算其梯度方向(假设有t个方向),并将这些梯度方向量化为[0, 360]度中的n个梯度方向。然后,根据这n个梯度方向进行权重投票(离特征点越近权重越大 ; 幅值越大权重越大)。根据投票结果,确定整个直方图中频率最高的梯度方向作为关键点的主方向。
13、详述SIFT描述子生成过程,假设关键点已确定
以关键点为圆心,1.5σ为半径画圆,通过该圆确定一个正方形区域,对于正方形区域中的每个像素点,计算其梯度方向。将正方形区域分解为一个个4x4小区域(共m个),对于每个小区域,将其中各个像素点梯度方向(假设有q个)量化为n个梯度方向,其中箭头越长,说明该梯度方向上投票的票数越多,最终每一个小区域就对应了一个n维向量(直方图),将整个区域中的m个n维向量汇集在一起,形成一个mxn维的描述子。
###############################################################################################
量化是指将连续的数据或信息转换为离散的表示形式;
泛化是指从特定情境中抽象出一般性规律或模式。
14、如何构造视觉词典
先使用sift确定每幅图像中的各个关键点,把每幅图像描述为一个局部区域/关键点特征的无序集合。使用某种聚类算法(如K-means)将局部特征进行聚类,每个聚类中心被看作是词典中的一个视觉词汇。所有视觉词汇构成了一个视觉词典,词典中所含词的个数反映了词典的大小。
15、简述纹理基元构造过程
图像中每个像素表示为一个48维向量,对这些向量进行聚类,形成k个类别,从而构建一个包含k个视觉词汇的视觉词典。使用一定大小的窗口对图像中的关键点进行特征圈定。通过计算特征之间的距离来将窗口内的每个特征映射到视觉词典的某个词上。然后,使用一个与视觉词典维数相同的直方图向量统计每个视觉词的出现次数,将不同窗口产生的直方图作比较,如果直方图相似,则可以认为它们属于同一区域。
16、试论述NB与KNN、LinCls的理论联系
监督学习的目标是根据给定的输入预测其标签,而实现这一目标的方法有所不同。生成式方法首先需要知道 P(XY)(特征与标签的联合概率分布),然后根据联合概率分布推导其条件概率分布。然而,这个过程通常非常复杂。从“绿脸到红脸”可以解释生成式学习与判别式学习的差别。判别式学习方法试图跳过 P(XY) 的计算,直接求出 P(Y | X)。例如,通过朴素贝叶斯(NB)可以推导出两个类别的边界是一条直线,已知直线方程后,这个过程就变成了直接寻找条件概率的过程,选取条件概率最大的值作为贝叶斯决策,而较小的值则表示做出决策所要承担的风险。在从“绿脸到蓝脸”的过程中,K最近邻(KNN)方法的结构风险小于等于2倍的贝叶斯误差。虽然这种方法需要估计参数,但实际上过程很麻烦。因此,KNN方法选择距离最近的样本并使用其标签来做预测。这个过程虽然不进行贝叶斯决策,但其结构风险接近贝叶斯误差。
17、𝐬 = 𝑓 (𝐱, 𝐖) = 𝐖x 请分别从代数视角和几何视角解释参数W
代数视角: 将权重矩阵 ( W ) 进行反扫描可视化,每一行表示一个模板,每一个模板代表一个类别的平均模式。将输入图像与每一个模板进行匹配,匹配程度越高,表示输入图像越接近该类别。
几何视角: ( W ) 表示得分函数中输入值 ( x ) 前的系数。将图像代入公式进行计算,如果结果大于0,表示其位于对应直线的正方向。每一条线表示一个决策,针对 ( n ) 个类别会有 ( n ) 条决策线,最终选择得分最高的那一条线所对应的类别作为预测结果。
18、交叉熵损失(softmax)的数学解释;铰链损失(SVM)的数学解释
!(C:\Users\ROG\AppData\Roaming\Typora\typora-user-images\image-20240607151433689.png)
损失函数:评价W好坏。
softmax:用于评价模型预测值与真实值之间的差异。真实值标签(GT)为one-hot编码类型,只需将GT中为1的那个位置对应的模型输出带入公式即可计算损失。
SVM:yi表示真实标签在GT中的索引编号,Si= f(xi,W)表示输入xi的得分,Sij表示除 Syi以外的其他所有得分值。
19、如何确定参数W更新方向
梯度下降,沿梯度反方向,注意前提Lwt等固定
20、批块是否是越小越快
不一定,小到一定程度花费时间差不多
21、为什么小批量更新策略有助于 模型训练
在进行全批量梯度下降时,如果某部分梯度为0,容易导致训练过程停滞,进而影响梯度的下降效率。相比之下,使用小批量梯度下降时,由于每次计算的损失函数 ( L ) 都略有不同,即使在某一次更新时遇到停滞,下一次更新时曲线的变化有很大可能使其突破先前的停滞点。因此,小批量更新在训练过程中表现出更好的性能,且噪声引入的更新方式更为有效。
22、神经网络隐藏层的作用? 提示:线性学习之能与不能
进行特征转换,通过计算,将一个空间(左)转换到另一个空间(右),从而将原本线性不可分的数据变得线性可分。
23、再谈神经网络隐藏层的作用? 提示:线性学习之能与不能(代 数视角)
通过引入多个共享模板实现分布式表示,使得模型能够从多个模板中进行组合,从而更好地表征各个类别。这种特征转换和表示方式使得原本单一模板难以表达的类别能够更准确地被分类,同时通过反向传播算法优化梯度下降,提高训练效率和效果。
右边线性分类是原始的,假设是10分类模型,每个类别只能学出一个wi(template)作为它的目标类,但有些时候想学习出来的wi不好,因此有些时候对一个类别的表达用一个template就不好,那么使用左边neural network中一个单隐层,那么可以学习到100个template,并且这些template在10类别间共享。即我在表征一个类别时可能要从这100个template里选好几个template拼起来才能粘成我想要的类别,这即为分布式表示。这里template多会使原始梯度下降方法显得很麻烦,于是就使用反向传播算法(bp)进行梯度下降。
24、CNNs 输出卷积核大小和参数数量
output size = (N+2P-F)/S+1
参数数量=(FF*输入图片厚度+1)卷积核个数
25、请从神经计算视角,解释 感受野和权值共享
感受野:一个神经元(3 / -1)连接到的部分节点形成的区域
权值共享:在神经网络中两个边的权重不存在一模一样。但在MLP中,由卷积定义知滤波器系数是不变的,不同的颜色的线对应不同的滤波器系数,相同颜色的线的权值相同
26、AlexNet特点
1)第一次使用ReLU(抑制梯度消失)
2)进行数据增广 (增加训练样本)
3)dropout 0.5
4)batch size 128 + SGD(随机梯度下降) Momentum 0.9(加速收敛)
27、请解释Sigmoid激活函数为什么容易引发梯度消失
在-5~5区间内sigmoid梯度值小于0.25,在其他区间梯度值为0,当进行反向传播时梯度值连乘会导致结果趋近于0,即梯度消失
28、请解释数据增广(augmentation)对于CNN的意义
与SIFT不同,CNN不具备尺度和旋转不变特性,因此需要对数据进行增强处理
29、为什么dropout有助于提 升CNN预测精度
每个神经元的功能不一样,使用dropout增加了模型的不确定性,使模型对某些特定的输入不会过于依赖,必须学习更多的特征。
30、Momentum的 作用
在每次迭代过程中,Momentum不仅考虑当前的梯度方向,还参考前一次迭代的方向,赋予梯度下降算法一定的“惯性”。这种惯性使得算法能够沿着前一次迭代的方向继续前进,从而加速收敛速度,并减少陷入局部最小值或鞍点的风险。
31、小尺寸滤波器的好处
1)3×3是最小的能够捕获像素八邻域信息的尺寸。
2)
第n层的卷积核大小为Kn,第n-1层的感受野大小为 Rn−1,则第n层的感受野大小为: Rn=Rn-1+(Kn-1)x步幅
两个3×3的堆叠卷基层的有限感受野是5×5;三个3×3的堆叠卷基层的感受野是7×7,故可以通过小尺寸卷积层的堆叠替代大尺寸卷积层,并且感受野大小不变。所以可以把三个3×3的filter看成是一个7×7 filter的分解中间层有非线性的分解, 并且起到隐式正则化的作用。
3)多个3×3的卷基层比一个大尺寸filter卷基层有更多的非线性(每使用一次卷积,后边加一个激活函数,此处使用了3个非线性激活函数),使得判决函数更加具有判决性。
4)多个 3×3 的卷积层比一个大尺寸的filter有更少的参数,假设卷积层的输入和输出的特征图大小相同为C,那么三个3×3的卷积层参数个数为:3×((3×3×C)×C)=27×C×C;一个(7×7×C)×C的卷积层参数为49×C×C。前者可以表达出输入数据中更多个强力特征,使用的参数也更少。唯一的不足是,在进行反向传播时,中间的卷积层可能会导致占用更多的内存;
32、1*1卷积的作用
在不影响输入输出维数的情况下,对输入进行线性形变,然后通过激活函数进行非线性处理,增加网络的非线性表达能力。通过控制卷积核个数实现降维,从而减少模型参数;也可以升维度
33、解释残差模块的设计思想
随着网络层数的增加,网络的表现并不一定会提高,甚至会出现退化现象,即更深的网络反而表现更差。
为了解决深层网络的退化问题,残差模块引入了“恒等映射”作为设计思想。残差模块的核心在于引入了一条捷径(shortcut),将输入直接传递到输出。这条捷径允许信息不经过复杂的非线性变换,直接在层与层之间传递,从而使得网络可以更容易地学习到恒等映射。
在残差模块中,假设输入为 x,经过若干层非线性变换后输出为 F(x) 。残差模块将输出表示为输入加上残差。由公式F(x) 代表学习到的残差函数,而 x是输入。通过这样的设计,网络更容易学习到恒等映射 F(x)= 0,从而缓解了深度网络的退化问题。
优点:梯度更易传播:由于加入了捷径连接,反向传播过程中梯度可以更直接地传递到前面的层,缓解了梯度消失和梯度爆炸问题。
更易于优化:残差模块使得深度网络更容易优化,因为它为学习复杂特征提供了一个更简便的途径。
性能提升:实验表明,使用残差模块的深度网络在各种任务中(如图像识别)均表现出色。
34、训练DNN指南
35、请简述从R-CNN到Fast R-CNN的技术演变历程; 提示:前者存在什么不足,后者如何改进
R-CNN的主要思想
将目标检测问题分解为Region Proposals和Classification两个阶段。R-CNN的工作流程可以分为以下几个步骤:
-
生成候选区域
生成候选区域是R-CNN的第一步。该步骤使用一种叫做Selective Search的方法,生成大约2000个可能包含目标物体的候选区域。Selective Search结合了图像的多尺度分割和相似性测量,生成一系列的候选区域(Region Proposals)。
-
调整尺寸并提取特征
对于每个候选区域,R-CNN通过以下步骤提取特征:
-
调整尺寸:将每个候选区域裁剪并调整为固定尺寸(如224x224像素),以便于后续的卷积神经网络处理。
-
特征提取:将调整尺寸后的候选区域独立地输入到预训练的卷积神经网络(如AlexNet或VGG-16)中,提取出高层次的特征向量。
-
分类和边界框回归
对于每个提取出的特征向量,R-CNN进行以下处理:
-
分类:使用支持向量机(SVM)对每个候选区域进行分类,确定其属于哪一个类别(或是背景)。
-
边界框回归:使用线性回归模型对候选区域的边界框进行调整,精确定位目标物体的边界。
-
使用分类得分选择候选区域
在分类和边界框回归之后,使用分类得分来选择一部分候选区域作为最终的检测结果。这一步骤可以有多种选择策略:
-
基于背景的阈值:去除得分低于某一阈值的背景区域。
-
按类别选择:对于每个类别,选择得分最高的若干候选区域。
-
Top K提议:选择得分最高的K个候选区域。
-
非极大值抑制(NMS)
-
与真实框进行比较
最终,选出的候选区域与真实的边界框进行比较,计算检测结果的精度和召回率等评估指标。
R-CNN的优点和缺点
优点
-
提出了有效的区域提议方法,使得目标检测问题变得可行。
-
利用预训练的卷积神经网络提取特征,显著提高了检测精度。
缺点
-
计算量大:对于每个候选区域都需要进行卷积操作,计算非常耗时。
-
存储需求高:由于需要存储每个候选区域的特征,导致存储需求较高。
-
训练复杂:R-CNN的训练过程较为复杂,需要分别训练卷积神经网络、SVM和边界框回归模型。
改进版本Fast R-CNN:
通过将区域提取与卷积特征提取结合在一起,大幅减少了计算量和存储需求。
-
输入图像
整个流程从输入一张待检测的图像开始。
-
卷积神经网络(CNN)提取特征
整张输入图像首先通过一个预训练的卷积神经网络(例如 VGG-16 或 ResNet)。这个步骤的输出是图像的特征图(feature map)。
-
生成候选区域(Region Proposals)
使用一种区域提议方法(例如 Selective Search),在原始图像上生成一系列候选区域(约2000个)。这些区域是潜在的包含目标物体的区域。
-
RoI Pooling
将候选区域映射到特征图上,并通过区域池化(RoI Pooling)层将每个候选区域的特征调整到相同的尺寸。这一步的具体步骤如下:
-
映射候选区域到特征图:将原始图像上的候选区域坐标转换到特征图上。
-
区域池化:将每个候选区域对应的特征图部分调整为固定尺寸(例如 7x7)。这一步使用最大池化或平均池化。
-
全连接层
每个经过 RoI Pooling 的候选区域特征图都会通过一系列全连接层,进一步提取高层次特征。通常使用两层全连接层,每层包含4096个神经元。
-
分类和边界框回归
在经过全连接层后,特征向量会分成两条分支:
-
分类分支:一个全连接层输出一个分类得分向量,表示该候选区域属于每个类别的概率(包括背景)。
-
回归分支:另一个全连接层输出边界框回归参数,对候选区域的边界框进行调整,使其更精确地包围目标物体。
-
多任务损失函数
Fast R-CNN 训练时使用一个多任务损失函数,包括分类损失和边界框回归损失:
-
分类损失:使用交叉熵损失来度量分类的准确性。
-
回归损失:使用平滑的L1损失来度量边界框预测与真实框之间的差距。
-
非极大值抑制(NMS)
二者区别
R-CNN和Fast R-CNN在目标检测的处理流程和技术细节上有显著的区别。以下是二者在不同方面的详细对比:
-
特征提取
-
R-CNN:对每个候选区域(Region Proposal)进行独立的特征提取。具体来说,R-CNN将每个候选区域裁剪并调整为固定尺寸,然后分别输入到卷积神经网络中进行特征提取。这导致了大量的重复计算,特别是当候选区域数量较多时。
-
Fast R-CNN:整个输入图像只经过一次卷积神经网络,生成特征图。然后,所有的候选区域共享这张特征图,使用RoI Pooling将特征图中的对应部分提取出来并调整为固定尺寸。这显著减少了计算量。
-
计算效率
-
R-CNN:由于对每个候选区域进行独立的卷积操作,计算量非常大,处理一张图像可能需要数十秒到数分钟的时间。
-
Fast R-CNN:通过共享卷积特征和使用RoI Pooling,大大加快了特征提取过程。整个过程只需要对图像进行一次卷积操作,然后对候选区域进行快速处理,使得处理时间缩短到秒级甚至更快。
-
存储需求
-
R-CNN:需要存储每个候选区域的卷积特征,这对存储需求非常高。
-
Fast R-CNN:只需要存储一张特征图,然后根据候选区域进行RoI Pooling,存储需求大幅减少。
-
模型训练
-
R-CNN:训练过程复杂,需要分阶段训练卷积神经网络(用于特征提取)、SVM(用于分类)和线性回归模型(用于边界框回归)。这些模型需要独立训练,然后组合在一起。
-
Fast R-CNN:将所有任务整合到一个端到端的神经网络中,通过联合训练同时优化卷积特征、分类和边界框回归。使用一个多任务损失函数,使得训练过程更加简便和高效。
-
推理速度
-
R-CNN:由于需要对每个候选区域进行独立的卷积操作,推理速度很慢,不适合实时应用。
-
Fast R-CNN:通过共享卷积特征和RoI Pooling,加快了推理速度,接近实时处理性能。
-
非极大值抑制(NMS)
-
R-CNN:使用分类得分对每个候选区域进行独立处理,然后通过非极大值抑制去除冗余的候选区域。
-
Fast R-CNN:同样使用分类得分对候选区域进行处理,并通过非极大值抑制优化最终的检测结果,但因为整体流程更快,NMS步骤执行也更为高效。
-
流程总结
R-CNN 流程总结:
-
输入图像
-
使用 Selective Search 生成大约2000个候选区域
-
调整每个候选区域为固定尺寸
-
独立地通过卷积神经网络提取特征
-
使用SVM对每个候选区域进行分类
-
使用线性回归调整边界框
-
通过非极大值抑制去除冗余检测结果
Fast R-CNN 流程总结:
-
输入图像
-
整张图像通过预训练的卷积神经网络,生成特征图
-
使用 Selective Search 生成候选区域
-
将候选区域映射到特征图,并通过RoI Pooling调整为固定尺寸
-
将调整后的特征输入全连接层进行分类和边界框回归
-
使用多任务损失函数同时优化分类和边界框回归
-
通过非极大值抑制去除冗余检测结果
35、请简述从Fast R-CNN再到Faster R-CNN的技术演变历程; 提示:前者存在什么不足,后者如何改
Faster R-CNN 是对 Fast R-CNN 的进一步改进,它引入了一个区域建议网络(Region Proposal Network, RPN),解决了 Fast R-CNN 中候选区域生成的效率问题,使得整个目标检测过程更加高效和统一。
Faster R-CNN 的详细优化点和流程:
-
区域建议网络(RPN)
在 Fast R-CNN 中,候选区域是通过 Selective Search 等方法生成的,这些方法计算量大且效率较低。Faster R-CNN 通过引入 RPN,实现了高效的候选区域生成:
-
卷积特征共享:与 Fast R-CNN 类似,Faster R-CNN 也是先将整幅图像通过卷积神经网络,生成特征图。
-
RPN 网络结构:RPN 在特征图上滑动窗口,生成一系列的候选区域。具体来说,RPN 为特征图的每个滑动窗口生成一组锚点(anchors),并预测这些锚点是否包含目标物体(分类)以及对锚点进行边界框回归(调整锚点的位置和大小)。
-
统一的目标检测框架
Faster R-CNN 将 RPN 和 Fast R-CNN 的检测网络整合到一个统一的框架中:
-
端到端训练:整个网络可以端到端联合训练。RPN 和 Fast R-CNN 共享卷积特征图,使得特征提取更高效,并通过多任务损失函数同时优化 RPN 和检测网络。
-
简化流程:将候选区域生成和目标检测整合到一个网络中,简化了整个目标检测流程,减少了计算开销。
-
减少候选区域
通过 RPN,Faster R-CNN 可以生成更少且更准确的候选区域:
-
高效生成:RPN 在特征图的每个位置生成一组锚点,并通过分类和边界框回归选择最有可能包含目标的区域。通常,RPN 生成的候选区域数量大大少于 Selective Search。
-
高质量区域:由于 RPN 是通过卷积网络直接生成的候选区域,其质量和准确度更高,这也提升了后续检测的性能。
Faster R-CNN 流程
-
输入图像:获取待检测的图像。
-
卷积特征提取:整幅图像通过预训练的卷积神经网络(例如 VGG-16 或 ResNet),生成特征图。
-
区域建议网络(RPN):
-
在特征图上滑动窗口,生成锚点(anchors)。
-
对每个锚点进行二分类(目标/非目标)和边界框回归,生成候选区域。
-
-
候选区域筛选:通过非极大值抑制(NMS)去除冗余的候选区域,保留高质量的候选区域。
-
RoI Pooling:将筛选后的候选区域映射到特征图,并通过 RoI Pooling 调整为固定尺寸。
-
目标检测网络:将经过 RoI Pooling 的特征输入全连接层,进一步提取高层次特征。
-
分类和回归:通过分类分支和回归分支,分别预测每个候选区域的类别和边界框。
-
最终输出:通过非极大值抑制(NMS)去除重叠的检测结果,输出最终的检测框和类别。
总结
Fast R-CNN 在特征共享和计算效率上做了显著改进,但其候选区域生成仍然依赖于传统的 Selective Search 方法,这部分计算量大且效率较低。Faster R-CNN 通过引入RPN,大幅提高了候选区域生成的效率和质量,并将整个检测流程整合到一个端到端的神经网络框架中,简化了训练和推理过程。
36、
RPN流程
1、锚点生成:
-
在特征图的每个滑动窗口位置生成一组锚点(anchors)。这些锚点是预定义的边界框,覆盖不同的尺度和长宽比,用于检测不同大小和形状的物体。通常每个滑动窗口位置会生成多个锚点,以确保全面覆盖。
2、二分类和边界框回归:
-
二分类(2-class):对于每个锚点,RPN 判断其是否包含目标。这里的“2-class”指的是两个类别:目标和背景。这个二分类任务的输出是一个二元分类得分。
-
边界框回归(BBox):对每个锚点进行边界框回归,预测边界框调整参数。这些参数用于调整锚点的位置和大小,使得锚点更好地拟合目标物体,具体包括中心点偏移和宽高调整。
3、候选区域生成:
-
根据二分类的结果(置信度得分)和边界框回归的结果,生成一系列候选区域。置信度得分用于评估每个锚点作为候选区域的可信度,而边界框回归的结果用于调整锚点的坐标,使其更精确地包围目标物体。
图片解释
-
Anchor 是目标物体(1 x 20 x 15):这个输出层负责为每个锚点输出一个二分类得分,表示该锚点是否包含目标物体。由于特征图的尺寸是 20 x 15,每个位置上有 1 个锚点,所以总输出尺寸是 1 x 20 x 15。
-
边界框回归(4 x 20 x 15):这个输出层负责为每个锚点预测 4 个边界框回归参数。这些参数用于调整锚点的位置和大小,使其更精确地拟合目标物体。因为特征图的尺寸是 20 x 15,每个位置上有 1 个锚点,所以总输出尺寸是 4 x 20 x 15。
总结
-
在特征图的每个位置上,RPN 会生成多个锚点(通常是 9 个),并对每个锚点进行二分类和边界框回归。
-
二分类输出的尺寸是 (1, H, W),表示每个锚点的二分类得分。
-
边界框回归输出的尺寸是 (4, H, W),表示每个锚点的 4 个边界框回归参数。
上图显示的只是1个锚点
37、请简述NMS如何去除重叠框
在推理过程中,可能会有多个重叠的区域被检测为同一目标。使用非极大值抑制(Non-Maximum Suppression, NMS)来去除多余的重叠区域,仅保留最高置信度的检测结果。
NMS的过程可以简述如下:
-
选择得分最高的边界框:
-
从所有候选边界框中选择预测得分(例如目标为狗的概率)最高的边界框。在图中,第一个选择的是概率为0.9的边界框(蓝色)。
-
-
移除重叠程度超过阈值的低得分边界框:
-
计算当前选中边界框与其他所有边界框的重叠度(IoU,交并比)。如果其他边界框与当前选中边界框的重叠度超过预设的阈值(例如0.7),则将这些重叠度超过阈值的边界框移除。
-
在图中,橙色边界框的IoU为0.78,超过阈值0.7,因此橙色边界框被移除。
-
-
重复步骤1和步骤2,直到没有剩余边界框:
-
从剩下的候选边界框中再次选择预测得分最高的边界框,然后重复步骤2的操作。
-
在图中,接下来选择概率为0.75的边界框(紫色),并移除与其重叠度超过阈值的边界框。
-
最后,概率为0.7的边界框也会被处理。
-
通过这样的迭代过程,NMS可以去除大部分重叠的低得分边界框,只保留每个目标的最佳预测框,最终得到去重后的检测结果。
38、给定对象类别,请简述如何绘制PR图/计算AP
首先,检测器生成一系列候选边界框和相应的置信度得分。我们使用非极大值抑制(NMS)去除重叠过多的检测框,将剩余的框按照置信度得分从高到低排列。接着,根据设定的IoU阈值,逐一将检测框与真实标签匹配,优先匹配IoU最高且超过阈值的情况,并标记为真阳性(TP)(每匹配到1个TP+1),并将匹配后的真实标签移除;无法匹配的标记为假阳性(FP)(每匹配不到1个FP+1)。统计TP和FP的数量,并计算累积的精确率(精确率的分母为当前TP+当前FP,分子为当前TP)和召回率(召回率的分母为真实标签个数,分子为当前的TP值),绘制PR曲线,最终通过计算PR曲线下的面积得到平均精度(AP)。
样例:
-
真实标签(Ground Truth, GT)(橙色):
-
图像1:边界框A [50, 50, 200, 200]
-
图像1:边界框B [30, 30, 70, 70]
-
图像1:边界框C [150, 150, 250, 250]
-
-
检测结果(Predictions):
-
图像1:边界框1 [55, 55, 195, 195],置信度0.9
-
图像1:边界框2 [25, 25, 75, 75],置信度0.85
-
图像1:边界框3 [140, 140, 210, 210],置信度0.8
-
图像1:边界框4 [160, 160, 260, 260],置信度0.75
-
图像1:边界框5 [200, 200, 250, 250],置信度0.7
-
1. 应用非极大值抑制(NMS)
假设NMS的IoU阈值为0.5。计算每一对检测框之间的IoU,并根据IoU阈值应用NMS。
IoU = 交集面积 / 并集面积
-
检测框1与其他检测框的IoU:
-
与检测框2的IoU = 0.0
-
与检测框3的IoU = 0.14
-
与检测框4的IoU = 0.0
-
与检测框5的IoU = 0.0
-
-
检测框2与其他检测框的IoU:
-
与检测框3的IoU = 0.0
-
与检测框4的IoU = 0.0
-
与检测框5的IoU = 0.0
-
-
检测框3与其他检测框的IoU:
-
与检测框4的IoU = 0.12
-
与检测框5的IoU = 0.0
-
-
检测框4与其他检测框的IoU:
-
与检测框5的IoU = 0.17
-
经过NMS处理,所有检测框都保留,因为它们之间的IoU均小于0.5。
2. 匹配检测结果和真实标签
假设IoU阈值为0.5,我们计算每个检测结果与真实标签的IoU:
检测框1(置信度0.9):
-
计算检测框1与所有真实标签的IoU:
-
与A的IoU = 0.82
-
与B的IoU = 0.0(无重叠)
-
与C的IoU = 0.0(无重叠)
-
-
选择IoU最大的匹配,即与A匹配,标记为TP,并移除真实标签A。
检测框2(置信度0.85):
-
计算检测框2与剩余未匹配的真实标签的IoU:
-
与B的IoU = 0.68
-
与C的IoU = 0.0(无重叠)
-
-
选择IoU最大的匹配,即与B匹配,标记为TP,并移除真实标签B。
检测框3(置信度0.8):
-
计算检测框3与剩余未匹配的真实标签的IoU:
-
与C的IoU = 0.23(IoU < 0.5,不匹配)
-
-
由于没有匹配上任何真实标签,标记为FP。
检测框4(置信度0.75):
-
计算检测框4与剩余未匹配的真实标签的IoU:
-
与C的IoU = 0.36(IoU < 0.5,不匹配)
-
-
由于没有匹配上任何真实标签,标记为FP。
检测框5(置信度0.7):
-
计算检测框5与剩余未匹配的真实标签的IoU:
-
与C的IoU = 0.5
-
-
IoU = 0.5,刚好达到阈值,选择与C匹配,标记为TP,并移除真实标签C。
3. 计算TP、FP、FN
根据匹配结果,我们有:
-
TP = 3(边界框1、边界框2和边界框5)
-
FP = 2(边界框3和边界框4)
-
FN = 0(所有真实标签都被检测到)
4. 绘制PR曲线并计算AP
累积TP和FP
我们按置信度得分从高到低累积TP和FP:
-
边界框1:
-
TP = 1
-
FP = 0
-
Precision = 1 / (1 + 0) = 1.0
-
Recall = 1 / (3) = 0.33
-
-
边界框2:
-
TP = 2
-
FP = 0
-
Precision = 2 / (2 + 0) = 1.0
-
Recall = 2 / (3) = 0.67
-
-
边界框3:
-
TP = 2
-
FP = 1
-
Precision = 2 / (2 + 1) = 0.67
-
Recall = 2 / (3) = 0.67
-
-
边界框4:
-
TP = 2
-
FP = 2
-
Precision = 2 / (2 + 2) = 0.5
-
Recall = 2 / (3) = 0.67
-
-
边界框5:
-
TP = 3
-
FP = 2
-
Precision = 3 / (3 + 2) = 0.6
-
Recall = 3 / (3) = 1.0
-
5、绘制PR曲线
根据计算结果,我们有以下Precision和Recall值:
-
(0.33, 1.0)
-
(0.67, 1.0)
-
(0.67, 0.67)
-
(0.67, 0.5)
-
(1.0, 0.6)
39、请简述全卷积网络存在什么问题
有效感受野大小与卷积层数成线性关系:
-
在使用 L 层 3x3 卷积层的情况下,有效感受野的大小为 1+2L。这意味着,增加卷积层的数量可以线性地增加感受野的大小。然而,这种线性增加速度相对较慢,尤其在处理需要大感受野的任务(如全局特征提取)时,需要很多层卷积才能达到所需的感受野大小。这导致网络变得非常深,增加了计算复杂度和训练难度。
高分辨率图像上的卷积计算成本高:
-
在高分辨率图像上进行卷积运算非常昂贵,因为每层卷积操作都需要处理大量的像素。这不仅增加了计算成本,还占用了大量的内存。
-
以 ResNet 为例,其结构设计通过在网络的初始部分进行下采样来减少计算量。通过将图像分辨率迅速减小,网络能够在后续的卷积操作中处理较小的特征图,从而降低计算负担。然而,过度下采样可能会丢失一些细节信息,影响最终的精度和性能。
40、转置卷积如何解决全卷积网络问题
下采样(通过池化和步幅卷积)和上采样(通过转置卷积)。
1. 扩大感受野
全卷积网络可以通过下采样策略来有效地扩大感受野:
-
下采样(Downsampling):
-
池化(Pooling):例如最大池化或平均池化,通过取局部区域的最大值或平均值,将图像的分辨率降低。
-
步幅卷积(Strided Convolution):卷积操作时使用步幅(stride)大于1的卷积核,使输出特征图的分辨率降低。
-
这些下采样操作使得特征图的分辨率变低,但每个输出特征点覆盖的输入图像区域变大,实际上增加了感受野。
2. 处理高分辨率图像
处理高分辨率图像时,全卷积网络可以通过下采样-上采样策略来降低计算成本,同时恢复高分辨率细节
下采样-上采样策略
1. 下采样(Downsampling)
首先将高分辨率图像通过下采样操作转换为较低分辨率:
-
池化(Pooling):例如,2x2最大池化操作使图像分辨率减半,但每个输出特征点覆盖了2x2的输入区域。
-
步幅卷积(Strided Convolution):例如,步幅为2的3x3卷积核,同样使图像分辨率减半,同时增加感受野。
这些操作减少了特征图的分辨率,使后续的卷积操作在更低分辨率上进行,从而大幅减少计算量和内存占用。
2. 卷积操作(Convolution)
在低分辨率特征图上进行卷积操作:
-
中等分辨率(Med-res)和低分辨率(Low-res)特征图:卷积操作在较低分辨率的特征图上进行,计算成本低,但感受野相对增大,因为每个特征点覆盖输入图像的更大区域。
3. 上采样(Upsampling)
通过上采样操作将低分辨率特征图恢复到高分辨率:
-
转置卷积(Transposed Convolution):通过可学习的上采样方法,将低分辨率特征图逐步恢复到高分辨率。这不仅恢复了分辨率,还通过学习参数更好地恢复细节和边缘信息。
示例应用
以U-Net为例,说明如何利用下采样和上采样策略来处理高分辨率图像并有效扩大感受野:
-
编码器(下采样)部分:
-
高分辨率图像(High-res)输入,通过多次下采样操作(池化或步幅卷积)将分辨率降低至中等分辨率(Med-res)和低分辨率(Low-res)。
-
-
卷积操作:
-
在中等分辨率(Med-res)和低分辨率(Low-res)特征图上进行卷积操作,提取特征,扩大感受野。
-
-
解码器(上采样)部分:
-
使用转置卷积(Transposed Convolution)逐步将低分辨率特征图恢复到高分辨率(High-res)。
-
通过跳跃连接,将编码器中对应分辨率的特征图与解码器特征图结合,确保恢复过程中保留更多细节信息。
-