总结目前的学习(2023-12)

CNN,卷积神经网络:卷积神经网络与传统BP神经网络最大的不同是,卷积神经网络存在卷积层和池化层。卷积层的主要功能为,对特征进行提取。在图像识别中,图片会形成RGB三个通道的图片,由数字来进行表示。而卷积核是一个方阵,卷积操作即为卷积核和对应的图片矩阵进行内积运算,在运算完成后,根据步长的大小,向右侧平移多少,内积大小由卷积核赋值大小和图片对应的矩阵中数值大小共同决定,得到的结果会依次再构建成一个方阵,此方阵会送入池化层进行池化操作。池化操作更像是对卷积运算中得到的特征进行挑选,有平均池化和最大池化两种,结构跟卷积层类似,但是池化“核”不会与卷积运算后得到的方阵进行内积运算,而是根据池化方式不同,对“核”框柱的矩阵中的数取最大值或平均值作为池化结果。步长也如卷积层一致。池化层的后面一般接着全连接层,全连接层将池化层的所有特征矩阵转化成一维的特征大向量,全连接层一般放在卷积神经网络结构中的最后,用于对图片进行分类,到了全连接层,我们的神经网络就要准备输出结果了。

···关于“共享权重”:对于卷积核共享权重,应该是这样的:这个图片RGB三个通道,这三个通道各自的卷积核权重是不一样的,假如有两个卷积层,Red的第一卷积核和第二卷积核的权重应该是一样的。

经过训练之后的卷积核可以看作是对于原始图像或者低级特征的特征提取器不同的卷积核负责提取不同的结构特征(不是所有的都是用RGB通道进行判断,RGB只是一个可采用的方向),类似于传统图像中的如角点、端点、线段、方向等图像特征。对输入图像要进行正确的判断识别,就需要提取大量的特征经过卷积层卷积操作之后得到的卷积层的特征图维数将远远多于其输入层的特征图维数,因此经过多层卷积层进行特征的提取抽象之后,将使得整个神经模型的特征图维数爆炸性地增长,使得整个神经网络模型陷入维数灾难(Curse of Dimensionality)之中。(什么是特征图维数?猜想应该是转换到全连接层显示出的 因此才有的池化操作)

池化操作的本质就是将卷积层卷积提取出的特征图矩阵进行聚合统计,以降低特征图矩阵的维数和获得更好的性能。池化操作会导致图像的部分信息丢失。

全连接层可以理解为传统机器学习中的隐层,卷积和池化层所做的工作是提取特征,而全连接层进行分类工作,需要注意的是,全连接层并不是只有一层,而是多层统称为全连接层。一般采用ReLU为激活函数。

R-CNN,将CNN算法引入到目标检测。RCNN与CNN流程上只有“R”不同,即多了一个候选区域(Region Proposals)提取阶段。采用了选择搜索算法对于相似区域进行合并之后来获得候选区域。选择搜索算法首先利用图像分割以及分层算法在多尺度上对原始图像进行分割,以适应识别目标大小不一致的问题,随后采用多样化的策略,即基于纹理特征,基于颜色特征,基于区域大小,基于区域相似度等策略而非基于单一策略来对分割后的区域进行合并,产生最后的候选区域。需要注意的是,在分类判定阶段,R-CNN采用的是经过训练的线性SVM分类器对所提取的特征进行分类,针对每个类都会有一个专门的线性SVM分类器。SVM分类器所做的工作是否是CNN中全连接层所做的工作?猜想为CNN的全连接层并没有指定算法来进行特征的分类,而R-CNN指定线性SVM为提取的特征进行分类。

····关于非极大值抑制算法:什么时候使用?(通过论文得知是在给SVM预训练使用的。“R-CNN 网络结构模型在对测试样本进行目标定位的过程中,对于在测试样本 上产生的正样本也就是待定位目标的候选区域进行非极大值抑制”)通过知乎等,非极大值抑制似乎是用在候选框的精简上,即在特征分类后,有人会额外划为一个新阶段,“回归边框”(或边框回归),回归边框这个过程主要是对机选框进行微调,使其更靠近人选框。而非极大值抑制在边框回归之后,对候选框的数量进行精简。关于候选框回归训练中,可以使用梯度下降(论文中采用)或者最小二乘法来逼近。

Fast R-CNN,为什么产生?在 R-CNN 网络结构模型中,由于卷积神经网络的全连接层对于输入的图片尺寸有限制(为什么?因为全连接层我们的连接权值矩阵的大小W,经过训练后,就是固定的大小了,比如我们从卷积到全连层,输入和输出的大小,分别是5030个神经元,那么我们的权值矩阵(50,30)大小的矩阵了。因此空间金字塔池化,要解决的就是从卷积层到全连接层之间的一个过度。),所以所有候选区域的图像都必须经过变形转换之后才能交由卷积神经网络模型进行特征提取。而变形转化即为,裁切和拉伸。前者会导致图像的部分信息丢失,而后者可能会使特征发生变化,这些都不是我们想要的结果。

····关于空间金字塔池化层:空间金字塔池化层通过将卷积层的输出转换为固定尺寸的特征向量的方式,使得卷积神经网络模型可以处理任意输入尺寸的图像。与传统的池化层的不同在于空间金字塔池化层由不同尺度的池化层构成,并且池化层的大小是与输入的特征图矩阵的大小成正比。空间金字塔池化层的输出特征向量的维度只与输入特征图矩阵的数目与池化层的分割尺度有关,因此不再对网络模型的输入图像有尺寸限制。(如何引入?并没有看到相关的代码,难道只是在多增加不同尺度的池化“核”吗?

相较于R-CNN的改进:

  1. 将原始图像中的区域映射到卷积层的对应区域。在论文中,描述为“在 R-CNN 网络结构模型中,原始图像中的候选区域图像经过变形才能经过卷 积神经网络进行特征提取,这无形中存在着重复计算的问题。候选区域图像都是 原始图像中的某个子区域,因此,只要通过计算一次原始图像的卷积特征图,将候选区域的位置映射到原始图像的卷积特征图上的相应位置,就能得到候选区域的特征向量。但是在Fast R-CNN中对输入图片不需要变形(因为尺寸不受到限制),是不是在第一次对全图卷积特征,找到候选位置之后就直接裁剪图片减少计算量了?
  2. 采用了感兴趣区域(ROI)池化层。图像中划出一个感兴趣区域,将这个感兴趣区域化成2*2块(?这个部分我不清楚一定是这个数吗)进行最大池化
  3. 采用多任务损失(Multi-task Loss)函数。更像的是聚类分类,Fast R-CNN 通过在卷积神经网络模型中增加一个关于判定类别的输出层,来代替线性 SVM 分类器的作用,Fast R-CNN 算法通过多任务损失函数将训练判定类别的输出层的任务以及候选框回归的训练任务统一起来。(就像BP算法中的MSE均方误差损失函数一样多任务损失函数的设置免去了大量线性SVM分类器的训练,有效的减少了运算时间。猜想类似于“竞争学习算法”,只不过在超平面上进行。

Faster R-CNN为了使前者的轻量化,即Selective Search算法进行候选区域的确定使得Faster R-CNN算法的运算时间大大增加。(在CNN和R-CNN中,对于候选区域选择再到提取特征、特征分类这几步应该都是分开的,没有集成到一个代码中?)本算法将候选区域提取的问题与原始图像经过卷积神经网络提取的特征图矩阵结合起来,提出了候选区域网络(RPNs)。

候选区域网络以原始图像所提取出的卷积特征图矩阵作为输入,输出一系列的矩形候选区域框以及该矩形候选区域是否为目标的分数。论文中提到:“RPNs 网络在原始图像的最后一层卷积层输出的特征图矩阵上用n*n的窗口进行滑窗处理。”

不知道这个是什么意义。这两个全连接层是干什么的,判断物体和背景的吗?

  • RPN 包括以下部分:
  • 生成 anchor boxes(由代码产生)
  • 判断每个 anchor box 为 foreground(包含物体) 或者 background(背景) ,二分类(另外一个卷积神经网络判断)
  • 边界框回归(bounding box regression) 对 anchor box 进行微调,使得 positive anchor 和真实框(Ground Truth Box)更加接近

····关于锚框(anchor boxes):人为假定的在原始图像中的候选区域,当n*n的滑动窗口在卷积特征图矩阵上滑动的每个位置都在原始图像对应k个不同的锚框。真实框是人为画的,回归框就是机选框向人选框靠近。K的个数应该是,假如有a个长宽尺度和b个长宽比,ab=k。

感觉这个是卷积神经网络嵌套卷积神经网络,另外锚框那个内部的卷积神经网络也需要预训练。此时是不是已经跟YOLO差不多了?都是人提供框然后机选然后检测?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值