【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 小时前
pdf处理1
人工智能
墨@#≯3 小时前
感知机及其实践
算法·机器学习·支持向量机
sp_fyf_20243 小时前
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
人工智能·语言模型·bert
算家云4 小时前
PhotoMaker部署文档
人工智能·aigc·conda·图像生成·comfyui·工作流·文本转图像
Kalika0-04 小时前
温度转换-C语言
c语言·开发语言·数据结构·算法
小猪包3335 小时前
ai论文写作软件哪个好?分享5款ai论文题目生成器
人工智能·深度学习·计算机视觉·ai写作
梓桐5 小时前
【算法】- 查找 - 散列表查询(哈希表)
c语言·算法·哈希算法·散列表
luthane5 小时前
python 实现algorithm topo卡恩拓扑算法
数据结构·python·算法
云翼时代科技6 小时前
【探索艺术新纪元:Midjourney中文版,让创意无界!】
人工智能
坚持学习的你6 小时前
Jax(Random、Numpy)常用函数
人工智能·pytorch·python·jax