【AI算法岗面试八股面经【超全整理】——CV】

AI算法岗面试八股面经【超全整理】

目录

1、图像处理中一般用最大池化而不用平均池化

池化的主要目的:

  • 保持主要特征不变的同时减少了参数
  • 保持平移、旋转、尺度不变性,增强了神经网络的鲁棒性
  • 池化操作也可以在一定程度上控制过拟合,通过减小特征图的尺寸,池化可以减小模型中的参数数量,并降低模型的复杂度。这有助于防止模型过度拟合训练数据,提高模型的泛化能力

最大池化更能捕捉图像上的变化、梯度的变化,带来更大的局部信息差异化,从而更好地捕捉边缘、纹理等特征。平均池化会淡化或错过特征是否存在的信息。

2、计算感受野

卷积层和池化层都会影响感受野,而激活函数层通常对于感受野没有影响,当前层的步长并不影响当前层的感受野,感受野和padding没有关系,计算当前层的感受野的公式如下:
R F i + 1 = R F i + ( k − 1 ) × S i RF_{i+1}=RF_i+(k-1) \times S_i RFi+1=RFi+(k−1)×Si

其中, R F i + 1 RF_{i+1} RFi+1表示当前层的感受野, R F i RF_i RFi表示上一层的感受野,k表示卷积核的大小,例如 3 ∗ 3 3*3 3∗3的卷积核,则 k = 3 k=3 k=3, S i S_i Si表示之前所有层的步长的乘积(不包括本层),公式如下:
S i = ∏ i = 1 i S t r i d e i S_i=\prod_{i=1}^i Stride_i Si=i=1∏iStridei

感受野:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小;(如果每个特征受到原始图像的 3 ∗ 3 3*3 3∗3区域内的影响,则感受野为2)。

3、特征图大小计算

输入 W × H W \times H W×H,卷积核大小:k,Padding大小:p,步长大小:S

输出:
W o = ( W − k + 2 ∗ p ) / S + 1 W_o=(W-k+2*p)/S+1 Wo=(W−k+2∗p)/S+1 H o = ( H − k + 2 ∗ p ) / S + 1 H_o=(H-k+2*p)/S+1 Ho=(H−k+2∗p)/S+1

4、Resnet

在深度神经网络中,当网络很深时,除了增加计算资源消耗以及模型过拟合问题外,还会出现梯度消失/爆炸问题,导致网络参数无法更新。

而且深层的网络还有一个问题,假设我们的初始设定网络是M层,而其实最优化模型对应的层数可能是K层,那么多出来的(M-K)层网络结构,不仅不会提升模型的表达能力,反而会使得模型的效果变差(表现为Loss先下降并趋于稳定值,然后再次上升),这就产生了网络退化问题。

网络的一层可以看做 y = H ( x ) y=H(x) y=H(x)
H ( x ) = F ( x ) + x F ( x ) = H ( x ) − x H(x) = F(x)+x\quad F(x)=H(x)-x H(x)=F(x)+xF(x)=H(x)−x

其中, F ( x ) F(x) F(x)是残差。

  • 残差连接可以防止梯度消失
  • 解决网络退化。假设某层是冗余的,在引入ResNet之前,我们想让该层学习到的参数能够满足 H ( x ) = x H(x)=x H(x)=x,即输入是x,经过该冗余层之后,输出仍为x。但是要想学习 H ( x ) = x H(x)=x H(x)=x恒等映射时的参数是很难的。ResNet让 H ( x ) = R e L U ( F ( x ) + x ) H(x)=ReLU(F(x)+x) H(x)=ReLU(F(x)+x);我们发现,要想让该冗余层能够恒等映射,只需要学习 F ( x ) = 0 F(x)=0 F(x)=0。学习 F ( x ) = 0 F(x)=0 F(x)=0比 H ( x ) = x H(x)=x H(x)=x要简单,因为一般每层中的参数初始化偏向于0,而且ReLU能够将负数激活为0,这样能够更快收敛。

5、空洞卷积和1*1卷积

空洞卷积(扩张卷积)

与正常的卷积不同的是,空洞卷积引入了一个称为"扩张率(dilation rate)"的超参数,该参数定义了卷积核处理数据时各值的间距。扩张率中文也叫空洞数(Hole Size),空洞卷积可以增加感受野,同时可以不改变图像输出特征图的尺寸(分辨率,resolution)。

  • 扩大感受野
  • 捕获多尺度上下文信息

1*1卷积

  • 对通道数实现升维/降维
  • 实现跨通道的信息交互与融合

6、VIT

  • 将图像转换为Patch序列。 假设有一张图像 x ∈ R H ∗ W ∗ C x \in R^{H*W*C} x∈RH∗W∗C,Patch大小为p,那么可以创建N个图像Patches;
  • 将Patches铺平。 原论文作者选用patch大小为16,那么一个Patch的shape为(3,16,16),维度为3,将它铺平之后大小为 16 × 16 × 3 = 768 16\times 16\times 3=768 16×16×3=768。此时可以使用一个线性映射层,将Patch的维度映射到我们指定的embedding的维度,这样就和NLP的词向量类似了。
  • 添加Position embedding。 与CNNs不同,此时模型并不知道序列数据中的patches的位置信息。所以这些patches必须先追加一个位置信息,也就是图中的带数字的向量。
  • 添加class token。 在输入到Transformer Encoder之前,还需要添加一个特殊的class token,这一点主要是借鉴了BERT模型。添加这个class token的目的是因为VIT模型将这个class token在Transformer Encoder的输出当作是模型对输入图片的编码特征,用于后续输入MLP模块中与图片label进行Loss计算。
  • 输入Transformer Encoder。

7、图像质量评价指标

MSE(Mean Squared Error)均方误差
M S E = ∑ i = 0 m ∑ j = 0 n ( I ( i , j ) − K ( i , j ) ) 2 m ∗ n MSE=\frac{\sum_{i=0}^m\sum_{j=0}^n{(I(i,j)-K(i,j))}^2}{m*n} MSE=m∗n∑i=0m∑j=0n(I(i,j)−K(i,j))2

即两张图像对应像素点数的差的平方求平均。

PSNR(Peak Signal-to-Noise Ratio)峰值信噪比( ↑ \uparrow ↑)

PSNR衡量对应像素的相近程度
P S N R = 10 ⋅ l o g 10 ( M A X I 2 M S E ) = 20 ⋅ ( M A X I M S E ) PSNR=10\cdot log_{10}(\frac{MAX_I^2}{MSE})=20\cdot(\frac{MAX_I}{MSE}) PSNR=10⋅log10(MSEMAXI2)=20⋅(MSEMAXI)

MSE即上图的均方误差, M A X I MAX_I MAXI为图像中像素颜色可以取到的最大数值(即255)。

SSIM(Structural Similarity Index)结构性相似指标( ↑ \uparrow ↑)

评价一张图片的亮度(luminance)、对比度(contrast)、结构(structure)
S S I M ( x , y ) = ( 2 μ x μ y + c 1 ) ( 2 σ x y + c 2 ) ( μ x 2 + μ y 2 + c 1 ) ( σ x 2 + σ y 2 + c 2 ) SSIM(x,y)=\frac{(2\mu_x\mu_y+c_1)(2\sigma_{xy}+c_2)}{(\mu_x^2+\mu_y^2+c_1)(\sigma_x^2+\sigma_y^2+c_2)} SSIM(x,y)=(μx2+μy2+c1)(σx2+σy2+c2)(2μxμy+c1)(2σxy+c2)

同时,SSIM只是计算一个小窗口内图像的亮度、对比度、结构的值的相似程度,通过像素滑窗求平均,可以得到整幅图像的MSSIM。
M S S I M ( X , Y ) = 1 M ∑ j = 1 M S S I M ( x j , y j ) MSSIM(X,Y)=\frac{1}{M}\sum_{j=1}^MSSIM(x_j,y_j) MSSIM(X,Y)=M1j=1∑MSSIM(xj,yj)

LPIPS(Learned Perceptual Image Patch Similarity)感知图像块相似性( ↓ \downarrow ↓)

其主要思想是用CNN网络学到一些深层特征,再求得两张图片的深层特征之间的距离。

过了网络之后得到不同层的特征图 y y y,将这些特征图在通道维度进行单位归一化,然后对特征维的不同通道乘上一个缩放因子,再将两张图的特征做 l 2 l2 l2损失,最后不同层的特征求得损失求平均得到一个距离。
d ( x , x 0 ) = ∑ l 1 H l W l ∣ ∣ w l θ ( y ^ h w l − y ^ o h w l ∣ ∣ 2 2 d(x,x_0)=\sum_l\frac{1}{H_lW_l}||w_l\theta(\widehat{y}{hw}^l-\widehat{y}{ohw}^l||_2^2 d(x,x0)=l∑HlWl1∣∣wlθ(y hwl−y ohwl∣∣22

FID(Fréchet Inception Distance)( ↓ \downarrow ↓)

基于两个图像分布之间的特征向量空间的Fréchet距离,测量生成图像与真实图像分布之间的差异。
F I D ( P , G ) = ∣ ∣ μ P − μ G ∣ ∣ 2 + T r ( ∑ P + ∑ G − 2 ∗ ∑ P ∑ G ) FID(P,G)=||\mu_P-\mu_G||^2+Tr(\sum_P+\sum_G-2*\sqrt{\sum _P\sum_G}) FID(P,G)=∣∣μP−μG∣∣2+Tr(P∑+G∑−2∗P∑G∑ )

NIQE(Natural Image Quality Evaluator)自然图像质量评估器( ↓ \downarrow ↓)

无参考图像质量指标

相关推荐
北京地铁1号线1 天前
2.3 相似度算法详解:Cosine Similarity 与 Euclidean Distance
算法·余弦相似度
qq_527887871 天前
联邦经典算法Fedavg实现
人工智能·深度学习
天天讯通1 天前
数据公司与AI五大主流合作模式
人工智能
Remember_9931 天前
【LeetCode精选算法】滑动窗口专题一
java·数据结构·算法·leetcode·哈希算法
Clarence Liu1 天前
AI Agent开发(2) - 深入解析 A2A 协议与 Go 实战指南
开发语言·人工智能·golang
综合热讯1 天前
AUS GLOBAL 荣耀赞助 2026 LIL TOUR 高尔夫嘉年华
人工智能
小饼干超人1 天前
详解向量数据库中的PQ算法(Product Quantization)
人工智能·算法·机器学习
你撅嘴真丑1 天前
第四章 函数与递归
算法·uva
漫随流水1 天前
leetcode回溯算法(77.组合)
数据结构·算法·leetcode·回溯算法
砚边数影1 天前
AI数学基础(一):线性代数核心,向量/矩阵运算的Java实现
java·数据库·人工智能·线性代数·矩阵·ai编程·金仓数据库