卷积神经网络(CNN)/目标检测领域相关名词解释

  • Post author:
  • Post category:其他




卷积神经网络(CNN)/目标检测领域相关名词解释


//2022.1.13日下午15:44开始总结




ROI Pooling





解释:


ROI Pooling的过程就是将大小不同的区域proposals(一堆矩形候选框框)转换为同样大小的区域。

详细说明:在Faster RCNN中就是将RPN生成的区域建议ROIS + feature map作为ROI Pooling层的输入,然后该层输出一组相同大小的矩形框。更进一步解释,将feature map + ROIs作为输入到Pooling层中,然后通过计算feature map和原图的比例,将ROIs中的框投影到feature map中,而后根据输出大小决定划分的section个数,对每个section做pooling即可(可以使用max pooling,average pooling等)。




Network head





解释:


即为backbone(骨干网络),也就是在network中去掉分类层和FC层之后的网络部分。笔者了解到的骨干网络有:

ResNet,AlexNet,VGG16 ,ResNet ,ResNeXt ,Hourglass,MobileNet,GoogleNet等。




Region Proposal(区域建议)





解释:


以Faster RCNN为例。其中的PRN网络产生的就是对于原图的region proposal,也就是在原图上框定的一系列的区域建议框,但是这个阶段生成的框是相对粗略的,因此需要将该阶段的输出连同feature map做一个ROI Pooling,该层就是将原图中的region proposal转换为feature map中的ROI。

简单地说,region proposal是对于原图来说的,而ROI是对于feature map来说的。




CNN中的卷积层





解释:


卷积层由一系列卷积核叠加而成的。卷积核也就是一个m * n的矩阵。卷积层的输入是图片的像素/长宽,例如:5 * 5 * 3表示输入的图像像素/长宽为5* 5,后边的3表示的是通过三个不同的角度去得到的图片的像素/长宽(有的是用R G B三个通道)。而后,在卷积层中叠加num个过滤器之后的输出的矩阵大小和过滤器中的卷积核相同,数量就是num个。(也就是说,有num个过滤器,就有num个输出)。

需要注意的是,卷积过程就是在输入的矩阵中找到与过滤器中卷积核大小相同的范围,然后将过滤器中的所有卷积核对范围内的数值进行卷积操作,最后过滤器中的所有通道的值进行相加,然后总和加上bias,就得到了这个位置的最终的结果。

此外,在卷积过程中有一些settings需要注意:

Stride:步长。就是卷积核在feature map或者图片像素中下一次移动的步长。

卷积层的深度depth:代表的是过滤器的数量。

padding操作:就是在待卷积操作之前在图像的周围进行补0操作。这样做的好处就是可以更好的提取到图像周围/边缘位置的特征。同时,也方便图像的像素可以将卷积核的宽度进行整除。

//截止到2022.1.13日晚上17:55




FPN(特征金字塔网络)





参考:



【论文笔记】FPN —— 特征金字塔 – 知乎 (zhihu.com)



解释:


FPN是一种具有侧向连接(lateral connections)的自上而下的网络结构,用来构建不同尺寸的具有高级语义信息的特征图。FPN主要处理的问题是多尺度变化问题。

通过对比可以知道,图像金字塔中对于不同尺寸大小的物体都进行特征提取,这样的结果是所有的feature map都具有较高的语义信息,但是这种方法的时间大幅度增加。同时,有很多深度神经网络架构使用的是经过了多层堆叠卷积层处理之后的输出feature map,但这样的方法容易导致本身就是小像素的小物体在下采样的过程中丢失。此外,SSD网络中使用的虽然是不同尺度的特征图,但是只是从conv卷积层输出的高层feature map开始再加上一些新的卷积层用于分类和bounding box框的生成,却没有充分利用到低层高分辨率特征图的空间信息(然而这些低层特征图的空间信息对于小目标的检测是非常重要的)。

因此,FPN这种网络结构,能够在增加较少计算量的前提下融合高层低分辨率语义信息较强的特征图和低层高分辨率语义信息较弱但空间信息丰富的特征图。FPN是在每一层feature map上进行预测。




Feature map





参考:



什么是feature map(个人理解) – 小孢子 – 博客园 (cnblogs.com)



解释:


Feture map即:在CNN网络结构中,卷积层将原图像素进行卷积操作之后的输出,可以理解为当前层的feature map集中了上一个feature map或者原图的特征。




NMS(非极大值抑制)





解释:


目标检测器分类过程后每个窗口都会得到一个分数,但是滑动窗口的使用会导致很多bounding box与其他box存在包含或者大部分交叉的情况,那么NMS的作用就是将其中具有最大分数的box保留下来,而把其他的box去掉(或者称抑制)。

具体过程:对于Bounding Box的列表box list及其对应的置信度Score来说,选择具有最大score的检测框A,将其从box list中移除并加入到最终的检测结果result list中.通常将box list中剩余的检测框中与A的IoU大于阈值threshold的框从box list中移除.重复上述过程,直到box list中为空。




Bounding box Regression(边框回归)



解释:bounding box regression的目的是为了将产生的proposal区域建议框调整到和ground-truth框位置尽可能重叠。




特征融合





参考:



深度特征融合—高低层(多尺度)特征融合_xys430381_1的专栏-CSDN博客_特征融合



解释:


目标检测中普遍存在的低层特征分辨率高语义信息较少,高层特征分辨率低语义信息较高的问题,使得将两者进行高效的融合从而改善检测器的性能成为重点问题。

按照融合与预测的先后顺序可以分类为两种:



早融合


先融合多层特征,然后在融合后的特侦上进行训练预测器(只在完全融合之后,才统一进行检测)。这类方法也称为skip connection,即采用concat、add操作。这一思路的代表是Inside-Outside Net(ION)和HyperNet。

两个经典的

特征融合

方法:


  1. concat

    :系列特征融合,直接将两个特征进行连接。两个输入特征x和y的维数若为p和q,输出特征z的维数为p+q;
  2. add:并行策略,将这两个特征向量组合成复向量,对于输入特征x和y,z = x + iy,其中i是虚数单位。



晚融合


通过结合不同层的检测结果改进检测性能(尚未完成最终的融合之前,在部分融合的层上就开始进行检测,会有多层的检测,最终将多个检测结果进行融合)。

这一类的代表方法有两种:

  1. feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)
  2. feature进行金字塔融合,融合后进行预测,如Feature Pyramid Network(FPN)等。




上采样(up-sampling)




参考:


​​​​​​图像的上采样(upsampling)与下采样(subsampled)_恰同学少年的博客-CSDN博客_下采样



解释:


放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。

原理:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。




下采样(subsampling)




参考:


图像的上采样(upsampling)与下采样(subsampled)_恰同学少年的博客-CSDN博客_下采样



解释:


缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。

原理:对于一幅图像I,尺寸为M*N,对其进行s倍下采样,即得到(M/s)*(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值:




Pooling层





参考:



深度学习网络层之 Pooling – 康行天下 – 博客园



解释:


CNN中的pooling层主要作用使用降采样的方法从原图中选择一部分像素生成新的feature map。

主要目的:为了降低计算量,用用更高层的抽象表示图像特征。主要用在conv层的卷积操作之间。

主要分为:max pooling/average pooling/stochastic pooling

通常我们使用Max Pooling,因为使用它能学到图像的边缘和纹理结构。而Average Pooling则不能。Max Pooling通常用以减小估计值方差,在方差不太重要的地方可以随意选择Max Pooling和Average Pooling。Average Pooling用以减小估计均值的偏移。在某些情况下Average Pooling可能取得比Max Pooling稍好一些的效果。average pooling会弱化强激活值,而max pooling保留最强的激活值却容易过拟合。从理论上说Stochastic Pooling也许能取得较好的结果,但是需要在实践中多次尝试,随意使用可能效果变差。因此并不是一个常规的选择。

按池化是否作用于图像中不重合的区域(这与卷积操作不同)分为一般池化(Gerneral Pooling)与重叠池化(OverlappingPooling)。常见设置是filter大小F=2,步长S=2或F=3,S=2(overlapping pooling,重叠);pooling层通常不需要填充。




CNN中的激活函数





参考:



记-CNN中的激活函数 – leon-chan – 博客园 (cnblogs.com)



解释:


激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。

位置:激活函数主要存在于conv卷积层神经元输出时,而当前神经元经过激活函数处理后的输出又将作为下一个神经元的输入。




Anchor锚点框







参考:


目标检测 anchor 理解笔记 – zfCode – 博客园 (cnblogs.com)

https://www.jianshu.com/p/38c9f3570079;



解释:


首先根据先验经验设置锚点,然后继续根据先验经验在锚点周围预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其IoU大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为”这个固定参考框中有没有认识的目标,目标框偏离参考框多远”,不再需要多尺度遍历滑窗,真正实现了又好又快,如在Faster R-CNN和SSD两大主流目标检测框架及扩展算法中anchor都是重要部分。

锚框的长宽比训练数据集中的对象大小选择,YOLOv3算法中的锚框的长宽比是算法作者通过分析COCO数据集中对象长宽比,通过K-Mean估计得到的。锚框的长宽比是一个在已有数据集上的先验值,是一个超参数,可以在模型的配置文件中配置,例如:YOLOv5中的锚框配置。




多尺度计训练/测试





参考:

https://www.zhihu.com/question/271781123/answer/888371287



解释:


输入图片的尺寸对检测模型的性能影响相当明显,事实上,多尺度是提升精度最明显的技巧之一。在

基础网络

部分常常会生成比原图小数十倍的特征图,导致小物体的特征描述不容易被检测网络捕捉。通过输入更大、更多尺寸的图片进行训练,能够在一定程度上提高检测模型对物体大小的

鲁棒性

,仅在测试阶段引入多尺度,也可享受大尺寸和多尺寸带来的增益。

训练时,预先定义几个固定的尺度,每个epoch随机选择一个尺度进行训练。

测试时,生成几个不同尺度的feature map,对每个Region Proposal,在不同的feature map上也有不同的尺度,我们选择最接近某一固定尺寸(即检测头部的输入尺寸)的Region Proposal作为后续的输入。




集合的约化性





参考:



约化性_百度百科 (baidu.com)



解释:


约化性(reduction)是集合类的一种性质。设有集合类Γ中的任何两个集合A,B,若存在A′,B′∈Γ,使得A′⊆A,B′⊆B,同时A′∪B′=A∪B,且A′∩B=∅,则称Γ具有约化性,记为Reduction(Γ)。




滤波器(filters)





解释:


这里的滤波器实际上就是指CNN每一层卷积中多个卷积核组成的部分。

可以参考上述对于CNN中的卷积层的解释。




权值共享






解释:



所谓的权值共享°就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置是被同样的filter扫的,所以权重是一样的,也就是共享。(也就是说CNN中的卷积层中的每层filter实际上也属于权值共享)。




接受


域(Receptive Field-RF)



参考:


CNN 卷积神经网络中的 接受视野(Receptive Field) – cltt – 博客园 (cnblogs.com)



解释:


在卷积神经网络中,感受野定义:CNN每一层输出的特征图上的像素点在原始图像上的映射的区域大小。

详情计算方法见上述参考链接。




反卷积(转置卷积)





参考:

https://www.zhihu.com/question/48279880/answer/1682194600



解释:


原始的CNN卷积过程是将原图像素(输入)经过conv层之后生成比原图小的feature map(输出),这也就是对图片进行下采样过程。那么,转置卷积可以说是知道输出和卷积核,然后求得输入的过程(也就是上采样过程,也即:将feature map转为更高分辨率的和原图尺寸大小一致的过程,但是得到的这个转置卷积之后的输出虽然大小和原图一致,但是其中的数值并不很一致)。

具体解释详见上述参考链接作者回答。




选择性搜索(Selective Search,SS)





参考:



选择性搜索(selective search)_郭云飞的专栏-CSDN博客_选择性搜索



解释:


SS方法是基于区域建议的目标检测器中得到proposals的方法之一。原本传统的基于深度学习的目标检测网络大都用的得到目标可能区域的方法为sliding window-滑动窗口方法。但是滑动窗口很缓慢,并且当图像很大时,方法执行时间将会很长。

SS步骤:

step0:生成区域集R;具体的生成区域集方法参考论文《Efficient Graph-Based Image Segmentation》

step1:计算区域集R里每个相邻区域的相似度S={s1,s2,…};

step2:找出相似度最高的两个区域,将其合并为新集,添加进R;

step3:从S中移除所有与step2中有关的子集;

step4:计算新集与所有子集的相似度;

step5:跳至step2,直至S为空;




GAN(生成式对抗网络)





参考:


Gan(生成式对抗网络)_百度百科 (baidu.com)


GAN学习指南:从原理入门到制作生成Demo – 知乎 (zhihu.com)



解释:


生成式对抗网络(GAN, Generative Adversarial Networks )是一种

深度学习


模型

,是近年来复杂分布上

无监督学习

最具前景的方法之一。模型通过框架中(至少)两个模块:

生成模型

(Generative Model)和

判别模型

(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN

理论

中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于

神经网络模型

的自由性而导致输出不理想。

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。最后,在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。


//截止到2022.1.14日晚上22:50止

本文仅作为日后复习之用,并无他用。



版权声明:本文为weixin_43749999原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。